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() { // TODO - weaker test for signature validation certificates var submission = Sender.WithDestination(Settings.DestinationId) .WithServiceType("Straight forward test", Settings.LeikaKey) .WithAttachments(new Attachment("Test.pdf", "A simple PDF")) .WithJsonData(@"{""data"":""value""}") .Submit(); _caseId = submission.CaseId!; _submissionId = submission.Id!; _caseId.Should().NotBeNull(); _submissionId.Should().NotBeNull(); } [Test] [Order(20)] public void Sender_GetSubmissionState() { // Act var status = Sender.GetStatusForSubmission(_caseId, Settings.DestinationId); // 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.GetStatusForSubmission(_caseId, Settings.DestinationId); // 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.RequestSubmission(_submissionId); var data = subscriberWithSubmission.GetDataJson(); Logger.LogInformation("Data {Data}", data); data.Should().Be(@"{""data"":""value""}"); var attachments = subscriberWithSubmission.GetAttachments(); attachments.First().Filename.Should().Be("Test.pdf"); subscriberWithSubmission.RejectSubmission(Problems.SchemaViolation //,new Problems { Detail = "A critical problem" } ); } [Test] [Order(50)] public void Sender_GetSubmissionState_AfterRejecting() { // Act var status = Sender.GetStatusForSubmission(_caseId, Settings.DestinationId); // 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)); } }