Skip to content

Commit 725bf17

Browse files
author
Aleksander Aas Sjåfjell
committed
Availability and optional Sender for Statuschange
- Availability was never implemented -- now it is - Statuschange uses ClientConfig sender by default, input otherwise
1 parent 9c67fc2 commit 725bf17

File tree

9 files changed

+107
-16
lines changed

9 files changed

+107
-16
lines changed

Digipost.Signature.Api.Client.Core/Asice/AsiceSignature/SignatureGenerator.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ private XmlDocument CreateXadesSignatureElement()
7171
signatureDocument.AppendChild(signatureDocument.CreateElement("xades", "XAdESSignatures", NavneromUtility.UriEtsi121));
7272
signatureDocument.DocumentElement.SetAttribute("xmlns", NavneromUtility.UriEtsi132);
7373

74-
//Todo: Legg til foerst
7574
signatureDocument.InsertBefore(xmlDeclaration, signatureDocument.DocumentElement);
7675
return signatureDocument;
7776
}

Digipost.Signature.Api.Client.Direct.Tests/DirectClientTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public async Task ThrowsExceptionOnNoSender()
4848

4949
//Act
5050
await directClient.Create(directJob);
51-
51+
5252
//Assert
5353
Assert.Fail();
5454
}

Digipost.Signature.Api.Client.Portal.Tests/Digipost.Signature.Api.Client.Portal.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@
8686
<Compile Include="DataTransferObjects\DataTransferObjectConverterTests.cs" />
8787
<Compile Include="Extensions\EnumExtensionsTests.cs" />
8888
<Compile Include="Fakes\FakeHttpClientHanderForBrokerNotAuthorizedErrorResponse.cs" />
89+
<Compile Include="Fakes\FakeHttpClientHandlerChecksCorrectSenderResponse.cs" />
8990
<Compile Include="Fakes\FakeHttpClientHandlerForJobCompletedResponse.cs" />
9091
<Compile Include="Fakes\FakeHttpClientHandlerForEmptyQueueResponse.cs" />
9192
<Compile Include="Fakes\FakeHttpClientHandlerForJobStatusChangeResponse.cs" />
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
using System.Net.Http;
2+
using System.Threading;
3+
using System.Threading.Tasks;
4+
using Digipost.Signature.Api.Client.Core.Tests.Fakes;
5+
using Digipost.Signature.Api.Client.Portal.Tests.Utilities;
6+
7+
namespace Digipost.Signature.Api.Client.Portal.Tests.Fakes
8+
{
9+
internal class FakeHttpClientHandlerChecksCorrectSenderResponse : FakeHttpClientHandlerResponse
10+
{
11+
public string RequestUri { get; internal set; }
12+
13+
protected override async Task<HttpResponseMessage> SendAsync(
14+
HttpRequestMessage request, CancellationToken cancellationToken)
15+
{
16+
RequestUri = request.RequestUri.ToString();
17+
return await base.SendAsync(request, cancellationToken);
18+
}
19+
20+
public override HttpContent GetContent()
21+
{
22+
return new StringContent(ResponseUtility.GetJobStatusChangeResponse());
23+
}
24+
}
25+
}

Digipost.Signature.Api.Client.Portal.Tests/PortalClientTests.cs

Lines changed: 60 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,17 @@ internal HttpClient GetHttpClientWithHandler(DelegatingHandler delegatingHandler
2727
public class CreateMethod : PortalClientTests
2828
{
2929
[TestMethod]
30-
[ExpectedException(typeof(SenderNotSpecifiedException))]
30+
[ExpectedException(typeof (SenderNotSpecifiedException))]
3131
public async Task ThrowsExceptionOnNoSender()
3232
{
3333
//Arrange
3434
var clientConfiguration = new ClientConfiguration(Environment.DifiQa, CoreDomainUtility.GetPostenTestCertificate());
3535
var portalClient = new PortalClient(clientConfiguration);
36-
var portalJob = new PortalJob(CoreDomainUtility.GetDocument(),CoreDomainUtility.GetSigners(1), "SendersReference");
36+
var portalJob = new PortalJob(CoreDomainUtility.GetDocument(), CoreDomainUtility.GetSigners(1), "SendersReference");
3737

3838
//Act
3939
await portalClient.Create(portalJob);
4040

41-
4241
//Assert
4342
Assert.Fail();
4443
}
@@ -47,6 +46,64 @@ public async Task ThrowsExceptionOnNoSender()
4746
[TestClass]
4847
public class GetStatusChangeMethod : PortalClientTests
4948
{
49+
[TestMethod]
50+
[ExpectedException(typeof (SenderNotSpecifiedException))]
51+
public async Task ThrowsExceptionOnSenderNotSpecified()
52+
{
53+
//Arrange
54+
var clientConfiguration = new ClientConfiguration(Environment.DifiQa, CoreDomainUtility.GetPostenTestCertificate());
55+
var fakeHttpClientHandlerChecksCorrectSender = new FakeHttpClientHandlerForJobStatusChangeResponse();
56+
var portalClient = new PortalClient(clientConfiguration)
57+
{
58+
HttpClient = GetHttpClientWithHandler(fakeHttpClientHandlerChecksCorrectSender)
59+
};
60+
61+
//Act
62+
await portalClient.GetStatusChange();
63+
64+
//Assert
65+
Assert.Fail();
66+
}
67+
68+
[TestMethod]
69+
public async Task CanBeCalledWithoutSenderUsesSenderInClientConfiguration()
70+
{
71+
//Arrange
72+
var sender = CoreDomainUtility.GetSender();
73+
var clientConfiguration = new ClientConfiguration(Environment.DifiQa, CoreDomainUtility.GetPostenTestCertificate(), sender);
74+
var fakeHttpClientHandlerChecksCorrectSender = new FakeHttpClientHandlerChecksCorrectSenderResponse();
75+
var portalClient = new PortalClient(clientConfiguration)
76+
{
77+
HttpClient = GetHttpClientWithHandler(fakeHttpClientHandlerChecksCorrectSender)
78+
};
79+
80+
//Act
81+
await portalClient.GetStatusChange();
82+
83+
//Assert
84+
Assert.IsTrue(fakeHttpClientHandlerChecksCorrectSender.RequestUri.Contains(sender.OrganizationNumber));
85+
}
86+
87+
[TestMethod]
88+
public async Task CalledWithBothSendersUsesInput()
89+
{
90+
//Arrange
91+
var parameterSender = new Sender("000000000");
92+
var clientConfigurationSender = new Sender("999999999");
93+
var clientConfiguration = new ClientConfiguration(Environment.DifiQa, CoreDomainUtility.GetPostenTestCertificate(), clientConfigurationSender);
94+
var fakeHttpClientHandlerChecksCorrectSender = new FakeHttpClientHandlerChecksCorrectSenderResponse();
95+
var portalClient = new PortalClient(clientConfiguration)
96+
{
97+
HttpClient = GetHttpClientWithHandler(fakeHttpClientHandlerChecksCorrectSender)
98+
};
99+
100+
//Act
101+
await portalClient.GetStatusChange(parameterSender);
102+
103+
//Assert
104+
Assert.IsTrue(fakeHttpClientHandlerChecksCorrectSender.RequestUri.Contains(parameterSender.OrganizationNumber));
105+
}
106+
50107
[TestMethod]
51108
public async Task ReturnsEmptyObjectOnEmptyQueue()
52109
{

Digipost.Signature.Api.Client.Portal.Tests/Utilities/DomainUtility.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,14 @@ public static Availability GetAvailability()
2323

2424
public static PortalJob GetPortalJob(int signers)
2525
{
26-
return new PortalJob(CoreDomainUtility.GetDocument(), CoreDomainUtility.GetSigners(signers), "PortalJobReference");
26+
return new PortalJob(CoreDomainUtility.GetDocument(), CoreDomainUtility.GetSigners(signers), "PortalJobReference")
27+
{
28+
Availability = new Availability
29+
{
30+
Activation = DateTime.Now,
31+
AvailableFor = new TimeSpan(0, 0, 10, 0)
32+
}
33+
};
2734
}
2835

2936
internal static PortalManifest GetPortalManifest()

Digipost.Signature.Api.Client.Portal/Internal/AsicE/AsiceGenerator.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,14 @@ namespace Digipost.Signature.Api.Client.Portal.Internal.AsicE
88
{
99
internal class AsiceGenerator
1010
{
11-
public static DocumentBundle CreateAsice(Sender sender, Document document, IEnumerable<Signer> signers, X509Certificate2 certificate)
11+
public static DocumentBundle CreateAsice(Sender sender, Document document, IEnumerable<Signer> signers, Availability availability, X509Certificate2 certificate)
1212
{
13-
var manifest = new PortalManifest(sender, document, signers);
14-
var signature = new SignatureGenerator(certificate, document, manifest);
13+
var manifest = new PortalManifest(sender, document, signers)
14+
{
15+
Availability = availability
16+
};
1517

18+
var signature = new SignatureGenerator(certificate, document, manifest);
1619
var asiceArchive = new AsiceArchive(document, signature, manifest);
1720

1821
return new DocumentBundle(asiceArchive.Bytes);

Digipost.Signature.Api.Client.Portal/PortalClient.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ public async Task<PortalJobResponse> Create(PortalJob portalJob)
3232
{
3333
var sender = CurrentSender(portalJob.Sender);
3434
var relativeUrl = RelativeUrl(sender);
35-
36-
var documentBundle = AsiceGenerator.CreateAsice(ClientConfiguration.Sender, portalJob.Document, portalJob.Signers, ClientConfiguration.Certificate);
35+
36+
var documentBundle = AsiceGenerator.CreateAsice(sender, portalJob.Document, portalJob.Signers, portalJob.Availability, ClientConfiguration.Certificate);
3737
var portalCreateAction = new PortalCreateAction(portalJob, documentBundle);
3838
var portalJobResponse = await RequestHelper.Create(relativeUrl, portalCreateAction.Content(), PortalCreateAction.DeserializeFunc);
3939

@@ -42,13 +42,13 @@ public async Task<PortalJobResponse> Create(PortalJob portalJob)
4242
return portalJobResponse;
4343
}
4444

45-
public async Task<PortalJobStatusChangeResponse> GetStatusChange()
45+
public async Task<PortalJobStatusChangeResponse> GetStatusChange(Sender sender = null)
4646
{
4747
PortalJobStatusChangeResponse portalJobStatusChangeResponse;
4848

4949
var request = new HttpRequestMessage
5050
{
51-
RequestUri = RelativeUrl(CurrentSender(null)),
51+
RequestUri = RelativeUrl(CurrentSender(sender)),
5252
Method = HttpMethod.Get
5353
};
5454
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));

Digipost.Signature.Api.Client.Portal/PortalJob.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using System;
2-
using System.Collections.Generic;
1+
using System.Collections.Generic;
32
using Digipost.Signature.Api.Client.Core;
43
using Digipost.Signature.Api.Client.Core.Internal;
54

@@ -23,6 +22,6 @@ public PortalJob(Document document, IEnumerable<Signer> signers, string referenc
2322

2423
public Sender Sender { get; }
2524

26-
public DateTime DistributionTime { get; }
25+
public Availability Availability { get; set; }
2726
}
2827
}

0 commit comments

Comments
 (0)