using FitConnect; using FitConnect.Models; using FitConnect.Models.v1.Api; using FluentAssertions; using Microsoft.Extensions.Logging; namespace E2ETest; public class RejectSubmissionTest : EndToEndTestBase { private string _caseId = null!; private string _submissionId = null!; [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.SubmissionId!; _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.GetDataJson(); 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(Problems.SchemaViolation //,new Problems { Detail = "A critical problem" } ).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.Problems.Should().NotBeNull(); rejection.Problems?.ForEach(p => Logger.LogWarning(p.detail)); } }