Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 76 additions & 0 deletions Digipost.Signature.Api.Client.Core.Tests/BaseClientTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
using Digipost.Signature.Api.Client.Core.Exceptions;
using Digipost.Signature.Api.Client.Core.Tests.Stubs;
using Digipost.Signature.Api.Client.Core.Tests.Utilities;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace Digipost.Signature.Api.Client.Core.Tests
{
[TestClass]
public class BaseClientTests
{
[TestClass]
public class CurrentSenderMethod : BaseClientTests
{
[TestMethod]
[ExpectedException(typeof (SenderNotSpecifiedException))]
public void ThrowsExceptionOnNoSender()
{
//Arrange
var clientConfiguration = new ClientConfiguration(Environment.DifiQa, CoreDomainUtility.GetPostenTestCertificate());
var client = new ClientStub(clientConfiguration);

//Act
client.GetCurrentSender(null);

//Assert
Assert.Fail();
}

[TestMethod]
public void ReturnsClientClientConfigurationSenderIfOnlySet()
{
//Arrange
var expected = new Sender("000000000");
var clientConfiguration = new ClientConfiguration(Environment.DifiQa, CoreDomainUtility.GetPostenTestCertificate(), expected);
var client = new ClientStub(clientConfiguration);

//Act
var actual = client.GetCurrentSender(null);

//Assert
Assert.AreEqual(expected, actual);
}

[TestMethod]
public void ReturnsJobSenderIfOnlySet()
{
//Arrange
var expected = new Sender("000000000");
var clientConfiguration = new ClientConfiguration(Environment.DifiQa, CoreDomainUtility.GetPostenTestCertificate());
var client = new ClientStub(clientConfiguration);

//Act
var actual = client.GetCurrentSender(expected);

//Assert
Assert.AreEqual(expected, actual);
}

[TestMethod]
public void ReturnsJobSenderIfBothSet()
{
//Arrange
var expected = new Sender("000000000");
var clientConfigurationSender = new Sender("999999999");
var clientConfiguration = new ClientConfiguration(Environment.DifiQa, CoreDomainUtility.GetPostenTestCertificate(), clientConfigurationSender);
var client = new ClientStub(clientConfiguration);

//Act
var actual = client.GetCurrentSender(expected);

//Assert
Assert.AreEqual(expected, actual);
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,46 +11,64 @@ public class ClientConfigurationTests
public class ConstructorMethod : ClientConfigurationTests
{
[TestMethod]
public void ConstructorWithCertificate()
public void ConstructorWithNoSenderAndCertificateThumbprintExists()
{
//Arrange

//Act
new ClientConfiguration(Environment.DifiQa, GetFirstCertificateFromCurrentUserStore());

//Assert
}

[TestMethod]
public void ConstructorWithCertificateThumbprint()
{
//Arrange
var environment = Environment.DifiQa;
var sender = CoreDomainUtility.GetSender();
var x509Certificate = CoreDomainUtility.GetTestCertificate();

var aCertificateFromCertificateStore = GetFirstCertificateFromCurrentUserStore();

//Act
var clientConfiguration = new ClientConfiguration(
environment,
sender,
x509Certificate
);
aCertificateFromCertificateStore.Thumbprint, sender);

//Assert
Assert.AreEqual(environment, clientConfiguration.Environment);
Assert.AreEqual(sender, clientConfiguration.Sender);
Assert.AreEqual(x509Certificate, clientConfiguration.Certificate);
Assert.AreEqual(aCertificateFromCertificateStore, clientConfiguration.Certificate);
}

[TestMethod]
public void ConstructorWithCertificateThumbprint()
public void ConstructorWithCertificate()
{
//Arrange
var environment = Environment.DifiQa;
var sender = CoreDomainUtility.GetSender();

var aCertificateFromCertificateStore = GetFirstCertificateFromCurrentUserStore();
var x509Certificate = CoreDomainUtility.GetTestCertificate();

//Act
var clientConfiguration = new ClientConfiguration(
environment,
sender,
aCertificateFromCertificateStore.Thumbprint
);
x509Certificate, sender);

//Assert
Assert.AreEqual(environment, clientConfiguration.Environment);
Assert.AreEqual(sender, clientConfiguration.Sender);
Assert.AreEqual(aCertificateFromCertificateStore, clientConfiguration.Certificate);
Assert.AreEqual(x509Certificate, clientConfiguration.Certificate);
}

[TestMethod]
public void ConstructorWithNoSenderAndCertificateExists()
{
//Arrange

//Act
new ClientConfiguration(Environment.DifiQa, new X509Certificate2());

//Assert
}

private static X509Certificate2 GetFirstCertificateFromCurrentUserStore()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
using System.Linq;
using Digipost.Signature.Api.Client.Core.DataTransferObjects;
using Digipost.Signature.Api.Client.Core.Tests.Utilities.CompareObjects;
using Digipost.Signature.Api.Client.DataTransferObjects.XsdToCode.Code;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace Digipost.Signature.Api.Client.Core.Tests.DataTransferObjects
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
</Compile>
<Compile Include="Asice\AsiceSignature\Sha256ReferenceTests.cs" />
<Compile Include="Asice\DocumentBundleTests.cs" />
<Compile Include="BaseClientTests.cs" />
<Compile Include="CancellationReferenceTests.cs" />
<Compile Include="ClientConfigurationTests.cs" />
<Compile Include="ConfirmationReferenceTests.cs" />
Expand All @@ -98,6 +99,7 @@
<Compile Include="Fakes\FakeHttpClientHandlerForXadesResponse.cs" />
<Compile Include="Fakes\FakeHttpClientHandlerResponse.cs" />
<Compile Include="Internal\CertificateValidatorTests.cs" />
<Compile Include="Stubs\ClientStub.cs" />
<Compile Include="Properties\AssemblyInfo.log4net.cs" />
<Compile Include="RequestHelperTests.cs" />
<Compile Include="SenderTests.cs" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ protected static Client ClientType
return Client.DifiQa;
}

return Client.DifiTest;
return Client.Localhost;
}
}

Expand Down
15 changes: 15 additions & 0 deletions Digipost.Signature.Api.Client.Core.Tests/Stubs/ClientStub.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
namespace Digipost.Signature.Api.Client.Core.Tests.Stubs
{
internal class ClientStub : BaseClient
{
public ClientStub(ClientConfiguration clientConfiguration)
: base(clientConfiguration)
{
}

public Sender GetCurrentSender(Sender jobSender)
{
return CurrentSender(jobSender);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public static class CoreDomainUtility

public static ClientConfiguration GetClientConfiguration()
{
return new ClientConfiguration(Environment.DifiQa, GetSender(), GetTestCertificate());
return new ClientConfiguration(Environment.DifiQa, GetTestCertificate(), GetSender());
}

public static Document GetDocument()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@ private XmlDocument CreateXadesSignatureElement()
signatureDocument.AppendChild(signatureDocument.CreateElement("xades", "XAdESSignatures", NavneromUtility.UriEtsi121));
signatureDocument.DocumentElement.SetAttribute("xmlns", NavneromUtility.UriEtsi132);

//Todo: Legg til foerst
signatureDocument.InsertBefore(xmlDeclaration, signatureDocument.DocumentElement);
return signatureDocument;
}
Expand Down
12 changes: 12 additions & 0 deletions Digipost.Signature.Api.Client.Core/BaseClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using System.Net.Http;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using Digipost.Signature.Api.Client.Core.Exceptions;
using Digipost.Signature.Api.Client.Core.Internal;

namespace Digipost.Signature.Api.Client.Core
Expand Down Expand Up @@ -34,6 +35,17 @@ internal HttpClient HttpClient

internal RequestHelper RequestHelper { get; set; }

protected Sender CurrentSender(Sender jobSender)
{
var sender = jobSender ?? ClientConfiguration.Sender;
if (sender == null)
{
throw new SenderNotSpecifiedException();
}

return sender;
}

private HttpClient MutualTlsClient()
{
var mutualTlsHandler = MutualTlsHandler();
Expand Down
6 changes: 3 additions & 3 deletions Digipost.Signature.Api.Client.Core/ClientConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ namespace Digipost.Signature.Api.Client.Core
{
public class ClientConfiguration
{
public ClientConfiguration(Environment environment, Sender sender, string certificateThumbprint)
: this(environment, sender, CertificateUtility.SenderCertificate(certificateThumbprint, Language.English))
public ClientConfiguration(Environment environment, string certificateThumbprint, Sender sender = null)
: this(environment, CertificateUtility.SenderCertificate(certificateThumbprint, Language.English), sender)
{
}

public ClientConfiguration(Environment environment, Sender sender, X509Certificate2 certificate)
public ClientConfiguration(Environment environment, X509Certificate2 certificate, Sender sender = null)
{
Environment = environment;
Sender = sender;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using Digipost.Signature.Api.Client.DataTransferObjects.XsdToCode.Code;

namespace Digipost.Signature.Api.Client.Core.DataTransferObjects
namespace Digipost.Signature.Api.Client.Core.DataTransferObjects
{
public static class DataTransferObjectConverter
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@
<Compile Include="Environment.cs" />
<Compile Include="Error.cs" />
<Compile Include="Exceptions\BrokerNotAuthorizedException.cs" />
<Compile Include="Exceptions\SenderNotSpecifiedException.cs" />
<Compile Include="Exceptions\UnexpectedResponseException.cs" />
<Compile Include="Internal\CertificateValidator.cs" />
<Compile Include="Internal\CreateAction.cs" />
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace Digipost.Signature.Api.Client.Core.Exceptions
{
public class SenderNotSpecifiedException : SignatureException
{
public SenderNotSpecifiedException()
: base("A sender must either be specified globally in ClientConfiguration or for each job.")
{
}
}
}
3 changes: 3 additions & 0 deletions Digipost.Signature.Api.Client.Core/Internal/CreateAction.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Reflection;
using Digipost.Signature.Api.Client.Core.Asice;
using log4net;

namespace Digipost.Signature.Api.Client.Core.Internal
{
internal abstract class CreateAction : SignatureAction
{
private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private readonly DocumentBundle _documentBundle;

protected CreateAction(IRequestContent job, DocumentBundle documentBundle, Func<IRequestContent, string> serializeFunc)
Expand Down
1 change: 0 additions & 1 deletion Digipost.Signature.Api.Client.Core/RequestHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
using Digipost.Signature.Api.Client.Core.Asice;
using Digipost.Signature.Api.Client.Core.DataTransferObjects;
using Digipost.Signature.Api.Client.Core.Exceptions;
using Digipost.Signature.Api.Client.DataTransferObjects.XsdToCode.Code;
using log4net;

namespace Digipost.Signature.Api.Client.Core
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
using Digipost.Signature.Api.Client.Core;
using Digipost.Signature.Api.Client.Core.Tests.Utilities;
using Digipost.Signature.Api.Client.Core.Tests.Utilities.CompareObjects;
using Digipost.Signature.Api.Client.DataTransferObjects.XsdToCode.Code;
using Digipost.Signature.Api.Client.Direct.DataTransferObjects;
using Digipost.Signature.Api.Client.Direct.Enums;
using Digipost.Signature.Api.Client.Direct.Internal.AsicE;
Expand Down Expand Up @@ -38,9 +37,9 @@ public void ConvertsDirectJobSuccessfully()
reference = reference,
exiturls = new exiturls
{
cancellationurl = exitUrls.CancellationUrl.AbsoluteUri,
completionurl = exitUrls.CompletionUrl.AbsoluteUri,
errorurl = exitUrls.ErrorUrl.AbsoluteUri
completionurl = source.ExitUrls.CompletionUrl.AbsoluteUri,
rejectionurl = source.ExitUrls.RejectionUrl.AbsoluteUri,
errorurl = source.ExitUrls.ErrorUrl.AbsoluteUri
}
};

Expand All @@ -62,7 +61,7 @@ public void ConvertsExitUrlsSuccessfully()
var expected = new exiturls
{
completionurl = source.CompletionUrl.AbsoluteUri,
cancellationurl = source.CancellationUrl.AbsoluteUri,
rejectionurl = source.RejectionUrl.AbsoluteUri,
errorurl = source.ErrorUrl.AbsoluteUri
};

Expand Down Expand Up @@ -143,12 +142,12 @@ public void ConvertsUnsignedDirectJobStatusSuccessfully()
var source = new directsignaturejobstatusresponse
{
signaturejobid = 77,
status = directsignaturejobstatus.CREATED
status = directsignaturejobstatus.REJECTED
};

var expected = new DirectJobStatusResponse(
source.signaturejobid,
JobStatus.Created,
JobStatus.Rejected,
new JobReferences(null, null, null)
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
<Reference Include="System" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Web" />
<Reference Include="System.XML" />
</ItemGroup>
<Choose>
Expand Down
Loading