using FitConnect.Encryption; using FitConnect.Models; using FitConnect.Models.v1.Api; using FluentAssertions; using Microsoft.Extensions.Logging; namespace E2ETest; public class RejectSubmissionTest : EndToEndTestBase { private string? _caseId; private string? _submissionId; [Order(10)] [Test] public void SendingSubmission() { var submission = Sender.WithDestination(Settings.DestinationId) .WithServiceType("Straight forward test", Settings.LeikaKey) .WithAttachments(new Attachment("Test.pdf", "A simple PDF")) .WithData(@"{""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); // 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); // 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); // 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)); } }