diff --git a/.gitignore b/.gitignore index e0b723cc..8e10d1d8 100644 --- a/.gitignore +++ b/.gitignore @@ -196,6 +196,7 @@ FakesAssemblies/ *.opt .idea +.vscode ####################### # Ignore certificates # diff --git a/Digipost.Signature.Api.Client.Archive.Tests/Digipost.Signature.Api.Client.Archive.Tests.csproj b/Digipost.Signature.Api.Client.Archive.Tests/Digipost.Signature.Api.Client.Archive.Tests.csproj new file mode 100644 index 00000000..960da4e5 --- /dev/null +++ b/Digipost.Signature.Api.Client.Archive.Tests/Digipost.Signature.Api.Client.Archive.Tests.csproj @@ -0,0 +1,18 @@ + + + + false + + + + + + + + + + + + + + diff --git a/Digipost.Signature.Api.Client.Archive.Tests/Smoke/ArchiveSmokeTests.cs b/Digipost.Signature.Api.Client.Archive.Tests/Smoke/ArchiveSmokeTests.cs new file mode 100644 index 00000000..e77aa576 --- /dev/null +++ b/Digipost.Signature.Api.Client.Archive.Tests/Smoke/ArchiveSmokeTests.cs @@ -0,0 +1,52 @@ +using Digipost.Signature.Api.Client.Core; +using Digipost.Signature.Api.Client.Core.Tests.Smoke; +using Digipost.Signature.Api.Client.Core.Utilities; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Xunit; +using static Digipost.Signature.Api.Client.Core.Tests.Utilities.CoreDomainUtility; + + +namespace Digipost.Signature.Api.Client.Archive.Tests.Smoke +{ + public class ArchiveSmokeTestsFixture : SmokeTests + { + public ArchiveSmokeTestsFixture() + { + TestHelper = new TestHelper(ArchiveClient(Endpoint)); + } + + public TestHelper TestHelper { get; } + + private static ArchiveClient ArchiveClient(Environment environment) + { + var serviceProvider = LoggingUtility.CreateServiceProviderAndSetUpLogging(); + + var clientConfig = new ClientConfiguration(environment, GetBringCertificate(), new Sender(BringPublicOrganizationNumber)) + { + LogRequestAndResponse = true + }; + var client = new ArchiveClient(clientConfig, serviceProvider.GetService()); + + return client; + } + } + + public class ArchiveClientSmokeTests : IClassFixture + { + public ArchiveClientSmokeTests(ArchiveSmokeTestsFixture fixture) + { + _fixture = fixture; + } + + private readonly ArchiveSmokeTestsFixture _fixture; + + [Fact] + public void download_pades_and_expect_error() + { + _fixture.TestHelper + .Download_pades_and_expect_client_error(); + } + } + +} diff --git a/Digipost.Signature.Api.Client.Archive.Tests/Smoke/TestHelper.cs b/Digipost.Signature.Api.Client.Archive.Tests/Smoke/TestHelper.cs new file mode 100644 index 00000000..c6c8387f --- /dev/null +++ b/Digipost.Signature.Api.Client.Archive.Tests/Smoke/TestHelper.cs @@ -0,0 +1,36 @@ +using System; +using Digipost.Signature.Api.Client.Core.Exceptions; +using Digipost.Signature.Api.Client.Core.Tests.Smoke; +using Xunit; + +namespace Digipost.Signature.Api.Client.Archive.Tests.Smoke +{ + public class TestHelper : TestHelperBase + { + private readonly ArchiveClient _archiveClient; + private readonly DocumentOwner _documentOwner; + private readonly ArchivedDocumentId _document; + + public TestHelper(ArchiveClient archiveClient) + { + _archiveClient = archiveClient; + _documentOwner = new DocumentOwner(_archiveClient.ClientConfiguration.GlobalSender.OrganizationNumber); + _document = new ArchivedDocumentId("1234"); + } + + public TestHelper Get_PAdES() + { + var pades = _archiveClient.GetPades(_documentOwner, _document).Result; + Assert.True(pades.CanRead); + return this; + } + + public void Download_pades_and_expect_client_error() + { + var thrown = Assert.Throws(() => Get_PAdES()); + var actualError = Assert.IsType(thrown.InnerException); + Assert.Equal("ARCHIVED_DOCUMENT_NOT_FOUND", actualError.Error.Code); + } + } + +} diff --git a/Digipost.Signature.Api.Client.Archive/ArchiveClient.cs b/Digipost.Signature.Api.Client.Archive/ArchiveClient.cs new file mode 100644 index 00000000..ff18ae4c --- /dev/null +++ b/Digipost.Signature.Api.Client.Archive/ArchiveClient.cs @@ -0,0 +1,31 @@ +using System; +using System.IO; +using System.Threading.Tasks; +using Digipost.Signature.Api.Client.Core; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; + +namespace Digipost.Signature.Api.Client.Archive +{ + public class ArchiveClient : BaseClient + { + private readonly ILogger _logger; + + public ArchiveClient(ClientConfiguration clientConfiguration) + : this(clientConfiguration, new NullLoggerFactory()) + { + } + + public ArchiveClient(ClientConfiguration clientConfiguration, ILoggerFactory loggerFactory) + : base(clientConfiguration, loggerFactory) + { + _logger = loggerFactory.CreateLogger(); + } + + public async Task GetPades(DocumentOwner owner, ArchivedDocumentId id) + { + var uri = new Uri($"{ClientConfiguration.Environment.Url}api/{owner.OrganizationNumber}/archive/documents/{id.Value}/pades"); + return await RequestHelper.GetStream(uri).ConfigureAwait(false); + } + } +} diff --git a/Digipost.Signature.Api.Client.Archive/ArchivedDocumentId.cs b/Digipost.Signature.Api.Client.Archive/ArchivedDocumentId.cs new file mode 100644 index 00000000..d61cc07c --- /dev/null +++ b/Digipost.Signature.Api.Client.Archive/ArchivedDocumentId.cs @@ -0,0 +1,11 @@ +namespace Digipost.Signature.Api.Client.Archive +{ + public class ArchivedDocumentId + { + public ArchivedDocumentId(string documentId) + { + Value = documentId; + } + public string Value { get; } + } +} diff --git a/Digipost.Signature.Api.Client.Archive/Digipost.Signature.Api.Client.Archive.csproj b/Digipost.Signature.Api.Client.Archive/Digipost.Signature.Api.Client.Archive.csproj new file mode 100644 index 00000000..f59032e1 --- /dev/null +++ b/Digipost.Signature.Api.Client.Archive/Digipost.Signature.Api.Client.Archive.csproj @@ -0,0 +1,21 @@ + + + + Digipost Signature Api Client Archive + Digipost.Signature.Api.Client.Archive + + + + + + + + + + + + + + + + diff --git a/Digipost.Signature.Api.Client.Archive/DocumentOwner.cs b/Digipost.Signature.Api.Client.Archive/DocumentOwner.cs new file mode 100644 index 00000000..185a3d0b --- /dev/null +++ b/Digipost.Signature.Api.Client.Archive/DocumentOwner.cs @@ -0,0 +1,12 @@ +namespace Digipost.Signature.Api.Client.Archive +{ + public class DocumentOwner + { + public DocumentOwner(string organizationNumber) + { + OrganizationNumber = organizationNumber; + } + + public string OrganizationNumber { get; } + } +} diff --git a/Digipost.Signature.Api.Client.Core.Tests/Digipost.Signature.Api.Client.Core.Tests.csproj b/Digipost.Signature.Api.Client.Core.Tests/Digipost.Signature.Api.Client.Core.Tests.csproj index 6387faec..3361a0f9 100644 --- a/Digipost.Signature.Api.Client.Core.Tests/Digipost.Signature.Api.Client.Core.Tests.csproj +++ b/Digipost.Signature.Api.Client.Core.Tests/Digipost.Signature.Api.Client.Core.Tests.csproj @@ -2,17 +2,17 @@ - - - + + + - - - - - + + + + + @@ -35,5 +35,8 @@ + + + \ No newline at end of file diff --git a/Digipost.Signature.Api.Client.Core.Tests/Properties/ProjectAssemblyInfo.cs b/Digipost.Signature.Api.Client.Core.Tests/Properties/ProjectAssemblyInfo.cs index a4b4feaf..c43094c6 100755 --- a/Digipost.Signature.Api.Client.Core.Tests/Properties/ProjectAssemblyInfo.cs +++ b/Digipost.Signature.Api.Client.Core.Tests/Properties/ProjectAssemblyInfo.cs @@ -1,7 +1,7 @@ -using System.Reflection; -using System.Runtime.CompilerServices; +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; [assembly: ComVisible(false)] +[assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Archive.Tests")] [assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Direct.Tests")] [assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Portal.Tests")] diff --git a/Digipost.Signature.Api.Client.Core/Digipost.Signature.Api.Client.Core.csproj b/Digipost.Signature.Api.Client.Core/Digipost.Signature.Api.Client.Core.csproj index b5b646cb..06b27171 100644 --- a/Digipost.Signature.Api.Client.Core/Digipost.Signature.Api.Client.Core.csproj +++ b/Digipost.Signature.Api.Client.Core/Digipost.Signature.Api.Client.Core.csproj @@ -4,7 +4,7 @@ Digipost Signature Api Client Core Digipost.Signature.Api.Client.Core - + @@ -13,13 +13,13 @@ - - - - + + + + - - + + diff --git a/Digipost.Signature.Api.Client.Core/Properties/ProjectAssemblyInfo.cs b/Digipost.Signature.Api.Client.Core/Properties/ProjectAssemblyInfo.cs index f99f850e..4d24df54 100755 --- a/Digipost.Signature.Api.Client.Core/Properties/ProjectAssemblyInfo.cs +++ b/Digipost.Signature.Api.Client.Core/Properties/ProjectAssemblyInfo.cs @@ -5,7 +5,9 @@ [assembly: ComVisible(false)] [assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Portal")] [assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Direct")] +[assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Archive")] [assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Program")] [assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Core.Tests")] -[assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Direct.Tests")] [assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Portal.Tests")] +[assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Direct.Tests")] +[assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Archive.Tests")] diff --git a/Digipost.Signature.Api.Client.Direct.Tests/Digipost.Signature.Api.Client.Direct.Tests.csproj b/Digipost.Signature.Api.Client.Direct.Tests/Digipost.Signature.Api.Client.Direct.Tests.csproj index 2760131c..b249db7d 100644 --- a/Digipost.Signature.Api.Client.Direct.Tests/Digipost.Signature.Api.Client.Direct.Tests.csproj +++ b/Digipost.Signature.Api.Client.Direct.Tests/Digipost.Signature.Api.Client.Direct.Tests.csproj @@ -1,12 +1,12 @@  - + - - - + + + diff --git a/Digipost.Signature.Api.Client.Direct/Digipost.Signature.Api.Client.Direct.csproj b/Digipost.Signature.Api.Client.Direct/Digipost.Signature.Api.Client.Direct.csproj index b36618e2..6c91de3c 100644 --- a/Digipost.Signature.Api.Client.Direct/Digipost.Signature.Api.Client.Direct.csproj +++ b/Digipost.Signature.Api.Client.Direct/Digipost.Signature.Api.Client.Direct.csproj @@ -6,14 +6,14 @@ - + - + - + diff --git a/Digipost.Signature.Api.Client.Docs/Digipost.Signature.Api.Client.Docs.csproj b/Digipost.Signature.Api.Client.Docs/Digipost.Signature.Api.Client.Docs.csproj index 2361d552..b8388c58 100644 --- a/Digipost.Signature.Api.Client.Docs/Digipost.Signature.Api.Client.Docs.csproj +++ b/Digipost.Signature.Api.Client.Docs/Digipost.Signature.Api.Client.Docs.csproj @@ -1,7 +1,7 @@  - + diff --git a/Digipost.Signature.Api.Client.Portal.Tests/Digipost.Signature.Api.Client.Portal.Tests.csproj b/Digipost.Signature.Api.Client.Portal.Tests/Digipost.Signature.Api.Client.Portal.Tests.csproj index 7bf3aef4..d268555e 100644 --- a/Digipost.Signature.Api.Client.Portal.Tests/Digipost.Signature.Api.Client.Portal.Tests.csproj +++ b/Digipost.Signature.Api.Client.Portal.Tests/Digipost.Signature.Api.Client.Portal.Tests.csproj @@ -1,15 +1,15 @@  - + - - - - + + + + diff --git a/Digipost.Signature.Api.Client.Portal/Digipost.Signature.Api.Client.Portal.csproj b/Digipost.Signature.Api.Client.Portal/Digipost.Signature.Api.Client.Portal.csproj index 7e534972..ae3d0f36 100644 --- a/Digipost.Signature.Api.Client.Portal/Digipost.Signature.Api.Client.Portal.csproj +++ b/Digipost.Signature.Api.Client.Portal/Digipost.Signature.Api.Client.Portal.csproj @@ -7,11 +7,11 @@ - - - + + + - + diff --git a/Digipost.Signature.Api.Client.Program/Digipost.Signature.Api.Client.Program.csproj b/Digipost.Signature.Api.Client.Program/Digipost.Signature.Api.Client.Program.csproj index a1c93907..336476e9 100644 --- a/Digipost.Signature.Api.Client.Program/Digipost.Signature.Api.Client.Program.csproj +++ b/Digipost.Signature.Api.Client.Program/Digipost.Signature.Api.Client.Program.csproj @@ -1,8 +1,8 @@ - - + + diff --git a/signature-api-client.sln b/signature-api-client.sln index 6fbfa934..9c6310ac 100644 --- a/signature-api-client.sln +++ b/signature-api-client.sln @@ -22,6 +22,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Digipost.Signature.Api.Clie EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Digipost.Signature.Api.Client.Docs", "Digipost.Signature.Api.Client.Docs\Digipost.Signature.Api.Client.Docs.csproj", "{7E7F2F9E-B2A5-4ED2-80FF-9410268FE373}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Digipost.Signature.Api.Client.Archive", "Digipost.Signature.Api.Client.Archive\Digipost.Signature.Api.Client.Archive.csproj", "{790E446C-E0EC-40D9-B489-E0C255539229}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Digipost.Signature.Api.Client.Archive.Tests", "Digipost.Signature.Api.Client.Archive.Tests\Digipost.Signature.Api.Client.Archive.Tests.csproj", "{FCE5496E-EC18-4C38-9E3C-252EF202F781}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -68,6 +72,14 @@ Global {7E7F2F9E-B2A5-4ED2-80FF-9410268FE373}.Debug|Any CPU.Build.0 = Debug|Any CPU {7E7F2F9E-B2A5-4ED2-80FF-9410268FE373}.Release|Any CPU.ActiveCfg = Release|Any CPU {7E7F2F9E-B2A5-4ED2-80FF-9410268FE373}.Release|Any CPU.Build.0 = Release|Any CPU + {790E446C-E0EC-40D9-B489-E0C255539229}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {790E446C-E0EC-40D9-B489-E0C255539229}.Debug|Any CPU.Build.0 = Debug|Any CPU + {790E446C-E0EC-40D9-B489-E0C255539229}.Release|Any CPU.ActiveCfg = Release|Any CPU + {790E446C-E0EC-40D9-B489-E0C255539229}.Release|Any CPU.Build.0 = Release|Any CPU + {FCE5496E-EC18-4C38-9E3C-252EF202F781}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FCE5496E-EC18-4C38-9E3C-252EF202F781}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FCE5496E-EC18-4C38-9E3C-252EF202F781}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FCE5496E-EC18-4C38-9E3C-252EF202F781}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE