diff --git a/DummyClient/Program.cs b/DummyClient/Program.cs index b44904830499ce73c69a9823e3fa037915bc5a4c..78d5563c705cf5dd1645c3854b31a0eb2b0e4986 100644 --- a/DummyClient/Program.cs +++ b/DummyClient/Program.cs @@ -15,12 +15,14 @@ X509Certificate2 certificate; void FluentSenderCall() { client.GetSender() .WithDestination("destinationId") + .WithServiceType("", "") .WithAttachments(Array.Empty<Attachment>()) .WithData("") .Submit(); client.GetSender() .WithDestination("destinationId") + .WithServiceType("", "") .WithAttachments(Array.Empty<Attachment>()) .Submit(); } diff --git a/E2ETests/SenderTest.cs b/E2ETests/SenderTest.cs index b8ef46400e621e0b9feacacb55516bb740898e93..2f6be8761a5325fe4ef693c0fbd06b09ad99cacb 100644 --- a/E2ETests/SenderTest.cs +++ b/E2ETests/SenderTest.cs @@ -81,9 +81,11 @@ public class SenderTest { } [Test] - public void WithAttachments_IntroduceSubmission_ShouldThrowArgumentException() { + public void WithAttachments_IntroduceSubmission_ShouldGetIdFromServer() { // Arrange - var dut = _fluentSender.WithDestination(desitnationId); + var dut = _fluentSender + .WithDestination(desitnationId) + .WithServiceType("ServcieName", "urn:de:fim:leika:leistung:99400048079000"); var attachments = new List<Attachment>(); for (var i = 0; i < 10; i++) { @@ -98,16 +100,15 @@ public class SenderTest { } // Act - - Assert.Throws<ArgumentException>(() => { dut.WithAttachments(attachments); }); + dut.WithAttachments(attachments); // Assert - // var submission = _fluentSender.GetType().GetProperties() - // .FirstOrDefault(p => p.Name == "Submission") - // .GetValue(_fluentSender) as Submission; - // submission.Attachments.Should().HaveCount(attachments.Count); - // - // submission.Id.Should().NotBeNullOrWhiteSpace(); + var submission = _fluentSender.GetType().GetProperties() + .FirstOrDefault(p => p.Name == "Submission") + .GetValue(_fluentSender) as Submission; + submission.Attachments.Should().HaveCount(attachments.Count); + + submission.Id.Should().NotBeNullOrWhiteSpace(); } } diff --git a/FitConnect/FluentSender.cs b/FitConnect/FluentSender.cs index 24c251c987d87471ed6b49e2f0dce1a8ef21ba91..6f675193d1c0586d58bfdfb8c135cbd0b744b4b3 100644 --- a/FitConnect/FluentSender.cs +++ b/FitConnect/FluentSender.cs @@ -25,7 +25,7 @@ namespace FitConnect; /// </code> /// </example> public class FluentSender : Sender, IFluentSender, IFluentSenderWithDestination, - IFluentSenderWithAttachments, IFluentSenderWithData { + IFluentSenderWithAttachments, IFluentSenderWithData, IFluentSenderWithService { private State _nextStep = State.Authenticate; private OAuthAccessToken? token; @@ -61,6 +61,10 @@ public class FluentSender : Sender, IFluentSender, IFluentSenderWithDestination, return this; } + public IFluentSenderWithService WithService(string serviceName, string leikaKey) { + throw new NotImplementedException(); + } + public IFluentSenderWithData WithData(string data) { Submission.Data = Data.FromString(data); return this; @@ -206,4 +210,12 @@ public class FluentSender : Sender, IFluentSender, IFluentSenderWithDestination, Logger?.LogInformation("Sending submission"); return this; } + + public IFluentSenderWithService WithServiceType(string serviceName, string leikaKey) { + Submission.ServiceType = new ServiceType() { + Name = serviceName, + Identifier = leikaKey + }; + return this; + } } diff --git a/FitConnect/Interfaces/IFluentSender.cs b/FitConnect/Interfaces/IFluentSender.cs index 3becc58977ee315053aff0a039904d2070693c4f..41c3fa5026d133beea221837f25f3f4823113c4a 100644 --- a/FitConnect/Interfaces/IFluentSender.cs +++ b/FitConnect/Interfaces/IFluentSender.cs @@ -22,6 +22,9 @@ public interface IFluentSender { /// <param name="destinationId">unique identifier of the clients destination</param> /// <returns>the upload step for attachments</returns> public IFluentSenderWithDestination WithDestination(string destinationId); + + + public IFluentSenderWithService WithService(string serviceName, string leikaKey ); public IFluentSenderWithData WithData(string data); diff --git a/FitConnect/Interfaces/IFluentSenderWithDestination.cs b/FitConnect/Interfaces/IFluentSenderWithDestination.cs index a8f85fcbdb351eab5575d47de1706ab1bacb01ad..f816f2fb427ff5d8f96e11fe3b6dbd5c3480ab53 100644 --- a/FitConnect/Interfaces/IFluentSenderWithDestination.cs +++ b/FitConnect/Interfaces/IFluentSenderWithDestination.cs @@ -2,7 +2,7 @@ using FitConnect.Models; namespace FitConnect.Interfaces; -public interface IFluentSenderWithDestination { +public interface IFluentSenderWithService { /// <summary> /// Sends the submission with a list of attachments /// </summary> @@ -12,3 +12,7 @@ public interface IFluentSenderWithDestination { public string PublicKey { get; set; } } + +public interface IFluentSenderWithDestination { + IFluentSenderWithService WithServiceType(string serviceName, string leikaKey); +}; diff --git a/FitConnect/Models/Submission.cs b/FitConnect/Models/Submission.cs index ff71dcbf3ec43cc12627230b78f802b8e3badb26..6917a36fe561bcfc789780726ae292213b798858 100644 --- a/FitConnect/Models/Submission.cs +++ b/FitConnect/Models/Submission.cs @@ -15,7 +15,7 @@ public class Submission { public List<Attachment> Attachments { get; set; } = new(); - public ServiceType? ServiceType { get; init; } + public ServiceType? ServiceType { get; set; } public Callback? Callback { get; set; } public Metadata? Metadata { get; set; } diff --git a/FluentApiTest/FluentSenderTests.cs b/FluentApiTest/FluentSenderTests.cs index a98a0590b241a79d6c572bcf1bb40ada4c3a2675..d9498bcb6ab632023d846fef4dfc4222f38513fa 100644 --- a/FluentApiTest/FluentSenderTests.cs +++ b/FluentApiTest/FluentSenderTests.cs @@ -34,6 +34,7 @@ public class FluentSenderTests { public void FluentSender_ShouldNotThrowAnError_MockingServicesWithData() { _client.GetSender() .WithDestination("destinationId") + .WithServiceType("","") .WithAttachments(Array.Empty<Attachment>()) .WithData("") .Submit(); @@ -43,6 +44,7 @@ public class FluentSenderTests { public void FluentSender_ShouldNotThrowAnError_MockingServicesWithoutData() { _client.GetSender() .WithDestination("destinationId") + .WithServiceType("","") .WithAttachments(Array.Empty<Attachment>()) .Submit(); } diff --git a/MockContainer/MockContainer.cs b/MockContainer/MockContainer.cs index 4a4527c29c081cd07a5a18e7dfc4198b31d8fc52..46299686afe9fb805df5c2937a45b9010c585bd2 100644 --- a/MockContainer/MockContainer.cs +++ b/MockContainer/MockContainer.cs @@ -1,4 +1,5 @@ -using System.Security.Authentication; +using System.Runtime.CompilerServices; +using System.Security.Authentication; using Autofac; using FitConnect.Encryption; using FitConnect.Models.Api.Metadata; @@ -96,6 +97,11 @@ public static class Container { Task.Run(() => JsonConvert.DeserializeObject<SubmissionsForPickupDto>( @"{""offset"":0,""count"":3,""totalCount"":3,""submissions"":[{""destinationId"":""879ee109-a690-4db8-ab32-424284184d7d"",""submissionId"":""ce75a6b8-d72f-4b94-b09e-af6be35bc2ae""},{""destinationId"":""19c8489b-29b8-422f-b7db-919852cfb04b"",""submissionId"":""e364430f-5a3b-4284-ba9a-f2867ba421e6""},{""destinationId"":""80a0aac3-148d-42bb-9366-516ce6355348"",""submissionId"":""530ba588-2db9-4899-ab0d-0c0b57689271""}]}")) ); + submissionService.Setup(s => s.CreateSubmission(It.IsAny<CreateSubmissionDto>())).Returns( + () => new SubmissionCreatedDto() { + DestinationId = "destinationId", + CaseId = "caseId", + }); submissionService.Setup(s => s.GetKey(It.IsAny<string>())).Returns(() => "{\"kty\":\"RSA\",\"key_ops\":[\"wrapKey\"],\"alg\":\"RSA-OAEP-256\",\"x5c\":[\"MIIFCTCCAvECBAONrDowDQYJKoZIhvcNAQENBQAwSTELMAkGA1UEBhMCREUxFTATBgNVBAoMDFRlc3RiZWhvZXJkZTEjMCEGA1UEAwwaRklUIENvbm5lY3QgVGVzdHplcnRpZmlrYXQwHhcNMjIwNjI4MTE1MzE1WhcNMzIwNjI1MTE1MzE1WjBJMQswCQYDVQQGEwJERTEVMBMGA1UECgwMVGVzdGJlaG9lcmRlMSMwIQYDVQQDDBpGSVQgQ29ubmVjdCBUZXN0emVydGlmaWthdDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAM4xtyHNdvpBlol6lROwg4yAsgG9zKQ7oQkjNTUxnbsuiqhRPpniY1/ZbtTEZqrsDLtSzb9B48eJLIgdGS+mI5Z6kFTG1XaMZ46XEJxZNY/Ldf53YTmrW3QqxGV05t7/ylqWQZtSCPDsHjfX5SyoJOFTPWMqFjLiKllJzBi2j/FTbJ73K1gVUv7V7UiRuARfqScDUH6egNKza7CpvzARft7kyF3za3cm4w1rtV6yBkduWOq/JLzctMsp7vbX4S8AW6m4BvD2JLSMukx7KXY2u0AgtmnzNCDXItRo/+PGH3rC3C27/oyIyykJ94fZsSiz2FffnbEUgmU+x6RzwWfT3KorgG3wI6cECiBmFCZLdBhjoZzPpYyr6LBrIeMbAip3CWxNnayB2zNZIhlrhkPw1WkxcZDBLJaql/P7dQKknU1g94KiPtNjxnO8NSfolFkLGQ3zT0LIoSXYPyHMOiG8xgKczSMgBXkkoCTTSUqWOXlx2QeFdCKBkxxW947fMKpA8nGIhIk4JiycpV1Xf5eQ5alz+Ox3QeUSi22mSN4hhDMyvfLwZeKlpIsQwcQ8zjWuXllHJAdfr3WGLj5LCk6i5NVpYfWtm++SrDiSnGgTlxB7n1SAWcvGvhhm5INta5xgmFOY5i3DwYo9A9NzxZw+7tEZT2k3uY1gmxd6GDJkOhIXAgMBAAEwDQYJKoZIhvcNAQENBQADggIBAI2knmZldxsrJp6Lyk+eLEVbrZI3BuHdfs+9q5I8R2b/RoqEuI05ZxoFPMZGyOMUINsXpthWMGsyALs512nmzR4bD1NGu5Ada3P/UiK3zaZk+xpJ9qAJo9xATRlGkdPhW5HyztUap1M+UW0GA/fDZJLRDVAlF+8czCPahP8ZhP5pkZcPTL/xxvQwDmadmdDRAEObOQlx58SwqQYC/FnO6lEFRhY+Hak9W4E1MoegoG8KFwOvqVRiRx3IVy1vdMQZgRRLDLkZzKIlI8WwkJONObVqdSrF2HfnEk6jhsG7/4Prn16XBSRi7wdqLOnnUpxwKsvL7BZVqAPcJ821XLxZ8wmRVItMnO3qJPP6RqVj7wfB7hnUOLHDywbGGWSrk0gi3x81x3tYXf8S+AbEn59uGIiArZjKmErvgFdtCWS8ILd7EFGYaMSYCCaJxoM/N5LckxAQXmsCgiLeOxXez2+H/uTRbctc5XEgNuVt+k92bF8amaGi5gUO60v7k4hPsnSHFzIqhsfiiOE6Pewyt96teAx4Xc2vMULcc2MUOHeiqK77OzHj8jN+/nztVSnYSrbaPYhJuIXVW5UZExG8kCTSNKK3aS+4++El7sbIHsqBTKvTmQvOMaBrGbZZR5jy5RTZSPi4njBdkjzRogloZRBoOSLebbR4B+4LMeoidxoOQN6O\"],\"kid\":\"vr7cWKGl-g4Wa_CRGowNhAYW_gQb-akMbiigxN0EkDI\",\"n\":\"zjG3Ic12-kGWiXqVE7CDjICyAb3MpDuhCSM1NTGduy6KqFE-meJjX9lu1MRmquwMu1LNv0Hjx4ksiB0ZL6YjlnqQVMbVdoxnjpcQnFk1j8t1_ndhOatbdCrEZXTm3v_KWpZBm1II8OweN9flLKgk4VM9YyoWMuIqWUnMGLaP8VNsnvcrWBVS_tXtSJG4BF-pJwNQfp6A0rNrsKm_MBF-3uTIXfNrdybjDWu1XrIGR25Y6r8kvNy0yynu9tfhLwBbqbgG8PYktIy6THspdja7QCC2afM0INci1Gj_48YfesLcLbv-jIjLKQn3h9mxKLPYV9-dsRSCZT7HpHPBZ9PcqiuAbfAjpwQKIGYUJkt0GGOhnM-ljKvosGsh4xsCKncJbE2drIHbM1kiGWuGQ_DVaTFxkMEslqqX8_t1AqSdTWD3gqI-02PGc7w1J-iUWQsZDfNPQsihJdg_Icw6IbzGApzNIyAFeSSgJNNJSpY5eXHZB4V0IoGTHFb3jt8wqkDycYiEiTgmLJylXVd_l5DlqXP47HdB5RKLbaZI3iGEMzK98vBl4qWkixDBxDzONa5eWUckB1-vdYYuPksKTqLk1Wlh9a2b75KsOJKcaBOXEHufVIBZy8a-GGbkg21rnGCYU5jmLcPBij0D03PFnD7u0RlPaTe5jWCbF3oYMmQ6Ehc\",\"e\":\"AQAB\",\"use\":null}");