Skip to content
Snippets Groups Projects
RejectSubmissionTest.cs 3.57 KiB
Newer Older
using FitConnect;
Klaus Fischer's avatar
Klaus Fischer committed
using FitConnect.Models;
using FitConnect.Models.v1.Api;
using FluentAssertions;
using Microsoft.Extensions.Logging;
Klaus Fischer's avatar
Klaus Fischer committed

namespace E2ETest;

Klaus Fischer's avatar
Klaus Fischer committed
public class RejectSubmissionTest : EndToEndTestBase {
    private string _caseId = null!;
Klaus Fischer's avatar
Klaus Fischer committed
    private string _submissionId = null!;
Klaus Fischer's avatar
Klaus Fischer committed

    [Order(5)]
    [Test]
    public void CleanServer() {
        var submissions = Subscriber.GetAvailableSubmissionsAsync(Settings.DestinationId).Result;
        foreach (var submission in submissions)
                Subscriber.RejectSubmissionAsync(submission,
                        new Problems(Problems.ProblemTypeEnum.MissingData, "Server cleanup"))
                    .Wait();
                Logger.LogError(e, "Error rejecting submission {SubmissionId}", submission);

        Subscriber.GetAvailableSubmissionsAsync(Settings.DestinationId).Result.Count().Should()
            .Be(0);
Klaus Fischer's avatar
Klaus Fischer committed
    [Order(10)]
    [Test]
    public void SendingSubmission() {
        var outgoing = SubmissionBuilder
            .WithDestination(Settings.DestinationId)
Klaus Fischer's avatar
Klaus Fischer committed
            .WithServiceType("Straight forward test", Settings.LeikaKey)
Klaus Fischer's avatar
Klaus Fischer committed
            .WithXmlData(@"<user><name>John Doe</name></user>")
Klaus Fischer's avatar
Klaus Fischer committed
            .WithAttachments(new Attachment("Test.pdf", "A simple PDF"))
Klaus Fischer's avatar
Klaus Fischer committed
        var submission = Sender.SendAsync(outgoing).Result;
Klaus Fischer's avatar
Klaus Fischer committed

Klaus Fischer's avatar
Klaus Fischer committed
        _caseId = submission.CaseId!;
        _submissionId = submission.Id!;
Klaus Fischer's avatar
Klaus Fischer committed

        _caseId.Should().NotBeNull();
        _submissionId.Should().NotBeNull();
    }

    [Test]
    [Order(20)]
    public void Sender_GetSubmissionState() {
        // Act
Klaus Fischer's avatar
Klaus Fischer committed
        var status = Sender.GetStatusForSubmissionAsync(_caseId, Settings.DestinationId).Result;
Klaus Fischer's avatar
Klaus Fischer committed

        // Assert
        status.Count.Should().BeGreaterThan(0);
Klaus Fischer's avatar
Klaus Fischer committed
        status.ForEach(
            s => Logger.LogInformation("Status {When} {Event}", s.EventTime, s.EventType));
Klaus Fischer's avatar
Klaus Fischer committed
    }

    [Test]
    [Order(30)]
    public void Subscriber_GetSubmissionState() {
        // Act
Klaus Fischer's avatar
Klaus Fischer committed
        var status = Subscriber.GetStatusForSubmissionAsync(_caseId, Settings.DestinationId).Result;
Klaus Fischer's avatar
Klaus Fischer committed

        // Assert
        status.Count.Should().BeGreaterThan(0);
Klaus Fischer's avatar
Klaus Fischer committed
        status.ForEach(
            s => Logger.LogInformation("Status {When} {Event}", s.EventTime, s.EventType));
Klaus Fischer's avatar
Klaus Fischer committed
    }

    [Test]
    [Order(40)]
    public void Reject_Submission() {
Klaus Fischer's avatar
Klaus Fischer committed
        var subscriberWithSubmission = Subscriber.RequestSubmissionAsync(_submissionId).Result;
Klaus Fischer's avatar
Klaus Fischer committed

        var data = subscriberWithSubmission.GetDataString();
Klaus Fischer's avatar
Klaus Fischer committed
        Logger.LogInformation("Data {Data}", data);

Klaus Fischer's avatar
Klaus Fischer committed
        data.Should().Be(@"<user><name>John Doe</name></user>");
Klaus Fischer's avatar
Klaus Fischer committed

Klaus Fischer's avatar
Klaus Fischer committed
        var attachments = subscriberWithSubmission.GetAttachmentsAsync().Result;
Klaus Fischer's avatar
Klaus Fischer committed
        attachments.First().Filename.Should().Be("Test.pdf");

Klaus Fischer's avatar
Klaus Fischer committed
        subscriberWithSubmission.RejectSubmissionAsync(
            new Problems(Problems.ProblemTypeEnum.SchemaViolation, "")
Klaus Fischer's avatar
Klaus Fischer committed
        ).Wait();
Klaus Fischer's avatar
Klaus Fischer committed
    }

    [Test]
    [Order(50)]
    public void Sender_GetSubmissionState_AfterRejecting() {
        // Act
Klaus Fischer's avatar
Klaus Fischer committed
        var status = Sender.GetStatusForSubmissionAsync(_caseId, Settings.DestinationId).Result;
Klaus Fischer's avatar
Klaus Fischer committed

        // Assert
        status.Count.Should().BeGreaterThan(0);
Klaus Fischer's avatar
Klaus Fischer committed
        status.ForEach(
            s => Logger.LogInformation("Status {When} {Event}", s.EventTime, s.EventType));
Klaus Fischer's avatar
Klaus Fischer committed

        var rejection = status.First(s => s.EventType == EventType.Reject);

Klaus Fischer's avatar
Klaus Fischer committed
        rejection.Events?.RejectSubmissionEvent?.Problems.Should().NotBeNull();
        rejection.Events?.RejectSubmissionEvent?.Problems?.ForEach(p => Logger.LogWarning(p.Detail));
Klaus Fischer's avatar
Klaus Fischer committed
    }