-
Klaus Fischer authoredKlaus Fischer authored
RejectSubmissionTest.cs 3.40 KiB
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 submissionIds = Subscriber.GetAvailableSubmissionsAsync(Settings.DestinationId).Result
.Select(s => s.Id);
foreach (var submissionId in submissionIds)
try {
var request = Subscriber.RequestSubmissionAsync(submissionId).Result;
request.RejectSubmissionAsync();
}
catch (Exception e) {
Logger.LogError(e, "Error rejecting submission {SubmissionId}", submissionId);
}
}
[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.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));
}
}