using FitConnect; using FitConnect.Models; using FitConnect.Models.v1.Api; using FluentAssertions; using Microsoft.Extensions.Logging; namespace E2ETest; [Order(10)] public class RejectSubmissionTest : EndToEndTestBase { private string _caseId = null!; private string _submissionId = null!; [Order(5)] [Test] public void CleanServer() { var submissions = Subscriber.GetAvailableSubmissionsAsync(Settings.DestinationId).Result; foreach (var submission in submissions) try { Subscriber.RejectSubmissionAsync(submission, new Problems(Problems.ProblemTypeEnum.MissingData, "Server cleanup")) .Wait(); } catch (Exception e) { Logger.LogError(e, "Error rejecting submission {SubmissionId}", submission); } Subscriber.GetAvailableSubmissionsAsync(Settings.DestinationId).Result.Count().Should() .Be(0); } [Order(10)] [Test] public void SendingSubmission() { var outgoing = SubmissionBuilder .WithDestination(Settings.DestinationId) .WithServiceType("Straight forward test", Settings.LeikaKey) .WithXmlData(@"<user><name>John Doe</name></user>") .WithAttachments(new Attachment("Test.pdf", "A simple PDF")) .Build(); var submission = Sender.SendAsync(outgoing).Result; _caseId = submission.CaseId!; _submissionId = submission.Id!; _caseId.Should().NotBeNull(); _submissionId.Should().NotBeNull(); } [Test] [Order(20)] public void Sender_GetSubmissionState() { // Act var status = Sender.GetStatusForSubmissionAsync(_caseId, Settings.DestinationId).Result; // Assert status.Count.Should().BeGreaterThan(0); status.ForEach( s => Logger.LogInformation("Status {When} {Event}", s.EventTime, s.EventType)); } [Test] [Order(30)] public void Subscriber_GetSubmissionState() { // Act var status = Subscriber.GetStatusForSubmissionAsync(_caseId, Settings.DestinationId).Result; // Assert status.Count.Should().BeGreaterThan(0); status.ForEach( s => Logger.LogInformation("Status {When} {Event}", s.EventTime, s.EventType)); } [Test] [Order(40)] public void Reject_Submission() { var subscriberWithSubmission = Subscriber.RequestSubmissionAsync(_submissionId).Result; var data = subscriberWithSubmission.GetDataString(); Logger.LogInformation("Data {Data}", data); data.Should().Be(@"<user><name>John Doe</name></user>"); var attachments = subscriberWithSubmission.GetAttachmentsAsync().Result; attachments.First().Filename.Should().Be("Test.pdf"); subscriberWithSubmission.RejectSubmissionAsync( new Problems(Problems.ProblemTypeEnum.SchemaViolation, "") ).Wait(); } [Test] [Order(50)] public void Sender_GetSubmissionState_AfterRejecting() { // Act var status = Sender.GetStatusForSubmissionAsync(_caseId, Settings.DestinationId).Result; // Assert status.Count.Should().BeGreaterThan(0); status.ForEach( s => Logger.LogInformation("Status {When} {Event}", s.EventTime, s.EventType)); var rejection = status.First(s => s.EventType == EventType.Reject); rejection.Events?.RejectSubmissionEvent?.Problems.Should().NotBeNull(); rejection.Events?.RejectSubmissionEvent?.Problems?.ForEach(p => Logger.LogWarning(p.Detail)); } }