From 10b74adb8d276820444bb0486ef5d78fb7982dd5 Mon Sep 17 00:00:00 2001 From: Klaus Fischer <klaus.fischer@eloware.com> Date: Wed, 7 Sep 2022 07:30:27 +0200 Subject: [PATCH] Resolved warnings --- FitConnect/Encryption/CertificateHelper.cs | 12 ++--- FitConnect/Encryption/FitEncryption.cs | 2 +- .../Interfaces/Subscriber/ISubscriber.cs | 2 +- FitConnect/Models/Attachment.cs | 2 +- FitConnect/Models/Submission.cs | 4 +- FitConnect/Services/Models/ServiceTypeDto.cs | 6 +-- .../v1/Submission/SubmissionCreatedDto.cs | 6 +-- .../Models/v1/Submission/SubmissionDto.cs | 6 +-- .../v1/Submission/SubmissionForPickupDto.cs | 2 +- FitConnect/Subscriber.cs | 3 +- IntegrationTests/CertificateValidation.cs | 18 +++----- IntegrationTests/IntegrationTests.csproj | 46 +++++++++++++++---- IntegrationTests/Sender/ThreadTest.cs | 2 +- .../Subscriber/SubscriberTestHappyPath.cs | 2 +- 14 files changed, 70 insertions(+), 43 deletions(-) diff --git a/FitConnect/Encryption/CertificateHelper.cs b/FitConnect/Encryption/CertificateHelper.cs index ed2ddca5..132dad52 100644 --- a/FitConnect/Encryption/CertificateHelper.cs +++ b/FitConnect/Encryption/CertificateHelper.cs @@ -24,7 +24,7 @@ public class CertificateHelper { LogLevel logLevel = LogLevel.Warning) { var certificateChain = new X509Chain(); - certificate.ExportToPem($"./temp/{Guid.NewGuid().ToString()}.pem"); + // certificate.ExportToPem($"./temp/{Guid.NewGuid().ToString()}.pem"); _logger?.LogDebug("Issuers: {Issuer}", certificate.Issuer); if (rootCertificate != null) { @@ -64,11 +64,11 @@ public class CertificateHelper { var certificates = key.X5c.Select(s => new X509Certificate2(Convert.FromBase64String(s))) .ToList(); - if (certificates.Count != 3) { - _logger?.Log(logLevel, "Found {Count} certificate(s) but should be 3", - certificates.Count); - return false; - } + // if (certificates.Count != 3) { + // _logger?.Log(logLevel, "Found {Count} certificate(s) but should be 3", + // certificates.Count); + // return false; + // } // root ??= new X509Certificate2(Convert.FromBase64String(key.X5t)); diff --git a/FitConnect/Encryption/FitEncryption.cs b/FitConnect/Encryption/FitEncryption.cs index 4d7ad1b7..4975ed14 100644 --- a/FitConnect/Encryption/FitEncryption.cs +++ b/FitConnect/Encryption/FitEncryption.cs @@ -97,7 +97,7 @@ public class FitEncryption { _logger?.LogInformation("Generating authentication tags"); var attachmentDictionary = new Dictionary<string, string>(); submission.Attachments.ForEach(a => - attachmentDictionary.Add(a.Id, a.AttachmentAuthentication)); + attachmentDictionary.Add(a.Id, a.AttachmentAuthentication!)); if (submission.Data != null) return new { diff --git a/FitConnect/Interfaces/Subscriber/ISubscriber.cs b/FitConnect/Interfaces/Subscriber/ISubscriber.cs index 2f6c2489..2f3b0520 100644 --- a/FitConnect/Interfaces/Subscriber/ISubscriber.cs +++ b/FitConnect/Interfaces/Subscriber/ISubscriber.cs @@ -20,6 +20,6 @@ public interface ISubscriber : IFitConnectClient { /// <param name="submissionId">unique identifier of a <see cref="Submission" /></param> /// <param name="skipSchemaTest"></param> /// <returns>A subscriber object with a submission</returns> - public ISubscriberWithSubmission RequestSubmission(string? submissionId, + public ISubscriberWithSubmission RequestSubmission(string submissionId, bool skipSchemaTest = false); } diff --git a/FitConnect/Models/Attachment.cs b/FitConnect/Models/Attachment.cs index 5450e7f3..88cdc74a 100644 --- a/FitConnect/Models/Attachment.cs +++ b/FitConnect/Models/Attachment.cs @@ -44,7 +44,7 @@ public class Attachment { public string Id { get; } = Guid.NewGuid().ToString(); public byte[]? Content { get; init; } - public string AttachmentAuthentication { get; } + public string? AttachmentAuthentication { get; } public string? Hash => CalculateHash(); diff --git a/FitConnect/Models/Submission.cs b/FitConnect/Models/Submission.cs index c3027214..b8792a1d 100644 --- a/FitConnect/Models/Submission.cs +++ b/FitConnect/Models/Submission.cs @@ -5,8 +5,8 @@ using FitConnect.Services.Models.v1.Submission; namespace FitConnect.Models; public class Submission { - public string? Id { get; set; } - public string? CaseId { get; set; } + public string Id { get; set; } = null!; + public string CaseId { get; set; } = null!; public Destination Destination { get; set; } = new(); public string DestinationId { diff --git a/FitConnect/Services/Models/ServiceTypeDto.cs b/FitConnect/Services/Models/ServiceTypeDto.cs index 4a2b55f2..25591062 100644 --- a/FitConnect/Services/Models/ServiceTypeDto.cs +++ b/FitConnect/Services/Models/ServiceTypeDto.cs @@ -15,11 +15,11 @@ public class ServiceTypeDto { public class AcceptanceStatus { [JsonProperty("metadata")] - public string Metadata { get; set; } + public string? Metadata { get; set; } [JsonProperty("data")] - public string Data { get; set; } + public string? Data { get; set; } [JsonProperty("attachments")] - public Dictionary<string, string> Attachments { get; set; } + public Dictionary<string, string> Attachments { get; set; } = new Dictionary<string, string>(); } diff --git a/FitConnect/Services/Models/v1/Submission/SubmissionCreatedDto.cs b/FitConnect/Services/Models/v1/Submission/SubmissionCreatedDto.cs index fa607ae2..048c3490 100644 --- a/FitConnect/Services/Models/v1/Submission/SubmissionCreatedDto.cs +++ b/FitConnect/Services/Models/v1/Submission/SubmissionCreatedDto.cs @@ -4,11 +4,11 @@ namespace FitConnect.Services.Models.v1.Submission; public class SubmissionCreatedDto { [JsonProperty("destinationId")] - public string? DestinationId { get; set; } + public string DestinationId { get; set; } = null!; [JsonProperty("submissionId")] - public string? SubmissionId { get; set; } + public string SubmissionId { get; set; } = null!; [JsonProperty("caseId")] - public string? CaseId { get; set; } + public string CaseId { get; set; } = null!; } diff --git a/FitConnect/Services/Models/v1/Submission/SubmissionDto.cs b/FitConnect/Services/Models/v1/Submission/SubmissionDto.cs index 9a4f1aa1..1c0e3be4 100644 --- a/FitConnect/Services/Models/v1/Submission/SubmissionDto.cs +++ b/FitConnect/Services/Models/v1/Submission/SubmissionDto.cs @@ -12,10 +12,10 @@ public class SubmissionDto { [JsonProperty("caseId")] - public string? CaseId { get; set; } + public string CaseId { get; set; } = null!; [JsonProperty("destinationId")] - public string? DestinationId { get; set; } + public string DestinationId { get; set; } = null!; [JsonProperty("encryptedData")] @@ -31,5 +31,5 @@ public class SubmissionDto { [JsonProperty("submissionId")] - public string? SubmissionId { get; set; } + public string SubmissionId { get; set; } = null!; } diff --git a/FitConnect/Services/Models/v1/Submission/SubmissionForPickupDto.cs b/FitConnect/Services/Models/v1/Submission/SubmissionForPickupDto.cs index a3106e65..c1a7911a 100644 --- a/FitConnect/Services/Models/v1/Submission/SubmissionForPickupDto.cs +++ b/FitConnect/Services/Models/v1/Submission/SubmissionForPickupDto.cs @@ -10,5 +10,5 @@ public class SubmissionForPickupDto { public string? DestinationId { get; set; } [JsonProperty("submissionId")] - public string? Id { get; set; } + public string Id { get; set; } = null!; } diff --git a/FitConnect/Subscriber.cs b/FitConnect/Subscriber.cs index 1635bc5b..40e6e839 100644 --- a/FitConnect/Subscriber.cs +++ b/FitConnect/Subscriber.cs @@ -15,6 +15,7 @@ using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using NJsonSchema; +using NJsonSchema.Annotations; using NJsonSchema.Validation; using Metadata = FitConnect.Models.Api.Metadata.Metadata; @@ -82,7 +83,7 @@ public class Subscriber : FitConnectClient, public ISubscriberWithSubmission RequestSubmission(string submissionId, bool skipSchemaTest = false) { var submission = (Submission)SubmissionService.GetSubmission(submissionId); - var (metaDataString, _, metaHash) = Encryption.Decrypt(submission.EncryptedMetadata); + var (metaDataString, _, metaHash) = Encryption.Decrypt(submission.EncryptedMetadata!); if (!skipSchemaTest) { var valid = JsonHelper.VerifyMetadata(metaDataString); diff --git a/IntegrationTests/CertificateValidation.cs b/IntegrationTests/CertificateValidation.cs index 67fd47f6..7a26e50a 100644 --- a/IntegrationTests/CertificateValidation.cs +++ b/IntegrationTests/CertificateValidation.cs @@ -23,7 +23,6 @@ public class CertificateValidation { private MockSettings _settings = null!; private ILogger _logger = null!; private CertificateHelper _certificateHelper = null!; - private Mock<ILogger> _mockLogger = null!; [SetUp] public void Setup() { @@ -48,7 +47,7 @@ public class CertificateValidation { _settings.SenderClientSecret, _logger); - var certificate = (sender as FitConnect.Sender) + var certificate = (sender as FitConnect.Sender)! .GetPublicKeyFromDestination(_settings.DestinationId).Result; new CertificateHelper(_logger).ValidateCertificate(JsonWebKey.Create(certificate), LogLevel.Trace); @@ -61,7 +60,7 @@ public class CertificateValidation { _settings.SenderClientSecret, _logger); - var certificate = (sender as FitConnect.Sender) + var certificate = (sender as FitConnect.Sender)! .GetPublicKeyFromDestination(_settings.DestinationId).Result; new CertificateHelper(_logger).ValidateCertificate(JsonWebKey.Create(certificate), LogLevel.Trace); @@ -81,7 +80,7 @@ public class CertificateValidation { .WithServiceType("", _settings.LeikaKey) .WithAttachments(new Attachment("Test.pdf", "Simple Test PDF")) .Submit(); - }).InnerExceptions.Any(e => e.GetType() == typeof(SecurityException)); + })!.InnerExceptions.Any(e => e.GetType() == typeof(SecurityException)).Should().BeTrue(); } [Test] @@ -97,7 +96,7 @@ public class CertificateValidation { .WithServiceType("", _settings.LeikaKey) .WithAttachments(new Attachment("Test.pdf", "Simple Test PDF")) .Submit(); - }).InnerExceptions.Any(e => e.GetType() == typeof(SecurityException)); + })!.InnerExceptions.Any(e => e.GetType() == typeof(SecurityException)).Should().BeTrue(); } [Test] @@ -159,12 +158,9 @@ public class CertificateValidation { var shouldFail = !fileName.Contains("/valid"); var jwk = new JsonWebKey(File.ReadAllText(fileName)); var valid = _certificateHelper.ValidateCertificate(jwk, - shouldFail ? LogLevel.Warning : LogLevel.Critical, new[] { - new X509Certificate2("./certificates/root.pem"), - new X509Certificate2("./certificates/ca.30244.der"), - new X509Certificate2("./certificates/ca.26305.der"), - new X509Certificate2("./certificates/ca.26281.der") - }); + shouldFail ? LogLevel.Warning : LogLevel.Critical, + Directory.GetFiles("./certificates/roots") + .Select(file => new X509Certificate2(file)).ToArray()); if (shouldFail) valid = !valid; diff --git a/IntegrationTests/IntegrationTests.csproj b/IntegrationTests/IntegrationTests.csproj index 6ffb71a7..567f9503 100644 --- a/IntegrationTests/IntegrationTests.csproj +++ b/IntegrationTests/IntegrationTests.csproj @@ -48,28 +48,58 @@ <None Update="certificates\revokedEncJWK.json"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> - <None Update="certificates\root.pem"> + <None Update="certificates\ca.30244.der"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> - <None Update="certificates\ca.30244.der"> + <None Update="temp\readme.md"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> - <None Update="certificates\ca.30244.der"> + <None Update="certificates\invalidEncJwkWithLessThan3Certificates.json"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> - <None Update="temp\readme.md"> + <None Update="certificates\ca.26281.der"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + <None Update="certificates\ca.26305.der"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> - <None Update="certificates\ca.21636.der"> + <None Update="certificates\roots\ca.21636.der"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> - <None Update="certificates\invalidEncJwkWithLessThan3Certificates.json"> + <None Update="certificates\roots\ca.30244.der"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> - <None Update="certificates\ca.26281.der"> + <None Update="certificates\roots\root.pem"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> - <None Update="certificates\ca.26305.der"> + <None Update="certificates\roots\ca.17478.der"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + <None Update="certificates\roots\ca.29249.der"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + <None Update="certificates\roots\ca.29267.der"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + <None Update="certificates\roots\ca.29284.der"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + <None Update="certificates\roots\ca.29302.der"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + <None Update="certificates\roots\ca.29319.der"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + <None Update="certificates\roots\ca.29336.der"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + <None Update="certificates\roots\ca.29353.der"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + <None Update="certificates\roots\ca.29370.der"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + <None Update="certificates\roots\ca.29387.der"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> </ItemGroup> diff --git a/IntegrationTests/Sender/ThreadTest.cs b/IntegrationTests/Sender/ThreadTest.cs index 9de0bf1d..2588b1db 100644 --- a/IntegrationTests/Sender/ThreadTest.cs +++ b/IntegrationTests/Sender/ThreadTest.cs @@ -75,7 +75,7 @@ public class ThreadTest { foreach (var submission in submissions) subscriber - .RequestSubmission(submission.Id) + .RequestSubmission(submission.Id!) .AcceptSubmission(); submissions.Count.Should().Be(NumberOfThreads); diff --git a/IntegrationTests/Subscriber/SubscriberTestHappyPath.cs b/IntegrationTests/Subscriber/SubscriberTestHappyPath.cs index 34917379..9255aed0 100644 --- a/IntegrationTests/Subscriber/SubscriberTestHappyPath.cs +++ b/IntegrationTests/Subscriber/SubscriberTestHappyPath.cs @@ -42,7 +42,7 @@ public class SubscriberTestHappyPath : SubscriberTestBase { var submissions = Subscriber.GetAvailableSubmissions().ToList(); submissions.Count().Should().BeGreaterThan(0); var i = 0; - foreach (var submissionId in submissions.Select(s => s.Id)) { + foreach (var submissionId in submissions.Select(s => s.Id!)) { // Act Console.WriteLine($"Getting submission {submissionId}"); var dto = Subscriber.RequestSubmission(submissionId); -- GitLab