Skip to content

Commit e3b4a30

Browse files
committed
fix tests
Signed-off-by: Kevin <kevin.dinh@lissi.id>
1 parent 7735e1e commit e3b4a30

File tree

4 files changed

+87
-302
lines changed

4 files changed

+87
-302
lines changed

src/WalletFramework.Oid4Vc/Oid4Vp/Services/IOid4VpHaipClient.cs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,6 @@ namespace WalletFramework.Oid4Vc.Oid4Vp.Services;
88
/// </summary>
99
public interface IOid4VpHaipClient
1010
{
11-
/// <summary>
12-
/// Processes an OpenID4VP Authorization Request Url.
13-
/// </summary>
14-
/// <param name="authorizationRequestUri"></param>
15-
/// <returns>
16-
/// A task representing the asynchronous operation. The task result contains the Authorization Response object associated with the OpenID4VP Authorization Request Url.
17-
/// </returns>
18-
// Task<AuthorizationRequest> GetAuthorizationRequest(AuthorizationRequestUri authorizationRequestUri);
19-
2011
/// <summary>
2112
/// Creates the Parameters that are necessary to send an OpenId4VP Authorization Response.
2213
/// </summary>

test/WalletFramework.Integration.Tests/WalletFramework.Integration.Tests/Oid4Vp/Oid4VpClientServiceTests.cs

Lines changed: 77 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
using Hyperledger.Aries.Agents;
44
using Hyperledger.Aries.Storage;
55
using Hyperledger.TestHarness.Mock;
6+
using LanguageExt;
67
using Microsoft.Extensions.Logging;
78
using Moq;
89
using Moq.Protected;
910
using SD_JWT.Roles.Implementation;
1011
using WalletFramework.Core.Cryptography.Models;
12+
using WalletFramework.Core.Functional;
1113
using WalletFramework.MdocLib.Device.Abstractions;
1214
using WalletFramework.Oid4Vc.Oid4Vci.Abstractions;
1315
using WalletFramework.Oid4Vc.Oid4Vci.AuthFlow.Abstractions;
@@ -33,40 +35,41 @@ public class Oid4VpClientServiceTests : IAsyncLifetime
3335
private const string RequestUriResponse =
3436
"eyJ4NWMiOlsiTUlJQ0x6Q0NBZFdnQXdJQkFnSUJCREFLQmdncWhrak9QUVFEQWpCak1Rc3dDUVlEVlFRR0V3SkVSVEVQTUEwR0ExVUVCd3dHUW1WeWJHbHVNUjB3R3dZRFZRUUtEQlJDZFc1a1pYTmtjblZqYTJWeVpXa2dSMjFpU0RFS01BZ0dBMVVFQ3d3QlNURVlNQllHQTFVRUF3d1BTVVIxYm1sdmJpQlVaWE4wSUVOQk1CNFhEVEl6TURnd016QTROREkwTkZvWERUSTRNRGd3TVRBNE5ESTBORm93VlRFTE1Ba0dBMVVFQmhNQ1JFVXhIVEFiQmdOVkJBb01GRUoxYm1SbGMyUnlkV05yWlhKbGFTQkhiV0pJTVFvd0NBWURWUVFMREFGSk1Sc3dHUVlEVlFRRERCSlBjR1Z1U1dRMFZsQWdWbVZ5YVdacFpYSXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUnNoUzVDaVBrSzVXRUN1RHpybmN0SXBwYm1nc1lkOURzT1lEcElFeFpFczFmUWNOeXZrQjVFZU5Xc2MwU0ExUU5xd3dHVzRndUZLZzBJZjFKR0R4VWZvNEdITUlHRU1CMEdBMVVkRGdRV0JCUmZMQVBzeG1Mc3AxblEvRk12RkkzN0MzQmxZREFNQmdOVkhSTUJBZjhFQWpBQU1BNEdBMVVkRHdFQi93UUVBd0lIZ0RBa0JnTlZIUkVFSFRBYmdobDJaWEpwWm1sbGNpNXpjMmt1ZEdseUxtSjFaSEoxTG1SbE1COEdBMVVkSXdRWU1CYUFGRStXNno3YWpUdW1leCtZY0Zib05yVmVDMnRSTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSUNWZURUMnNkZHhySEMrZ0ZJTUVmc3huc0lXRmdIdnZlZnBuWXZrb0RjbHdBaUVBMlFnRVRHV3hIWUVObWxsNDA2VUNwYnFRb1kzMzJPbE9qdDUwWjc2WHBtQT0iLCJNSUlDTFRDQ0FkU2dBd0lCQWdJVU1ZVUhoR0Q5aFUvYzBFbzZtVzhyamplSit0MHdDZ1lJS29aSXpqMEVBd0l3WXpFTE1Ba0dBMVVFQmhNQ1JFVXhEekFOQmdOVkJBY01Ca0psY214cGJqRWRNQnNHQTFVRUNnd1VRblZ1WkdWelpISjFZMnRsY21WcElFZHRZa2d4Q2pBSUJnTlZCQXNNQVVreEdEQVdCZ05WQkFNTUQwbEVkVzVwYjI0Z1ZHVnpkQ0JEUVRBZUZ3MHlNekEzTVRNd09USTFNamhhRncwek16QTNNVEF3T1RJMU1qaGFNR014Q3pBSkJnTlZCQVlUQWtSRk1ROHdEUVlEVlFRSERBWkNaWEpzYVc0eEhUQWJCZ05WQkFvTUZFSjFibVJsYzJSeWRXTnJaWEpsYVNCSGJXSklNUW93Q0FZRFZRUUxEQUZKTVJnd0ZnWURWUVFEREE5SlJIVnVhVzl1SUZSbGMzUWdRMEV3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVNFSHo4WWpyRnlUTkhHTHZPMTRFQXhtOXloOGJLT2drVXpZV2NDMWN2ckpuNUpnSFlITXhaYk5NTzEzRWgwRXIyNzM4UVFPZ2VSb1pNSVRhb2RrZk5TbzJZd1pEQWRCZ05WSFE0RUZnUVVUNWJyUHRxTk82WjdINWh3VnVnMnRWNExhMUV3SHdZRFZSMGpCQmd3Rm9BVVQ1YnJQdHFOTzZaN0g1aHdWdWcydFY0TGExRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWdZMERlcmRDeHQ0ekdQWW44eU5yRHhJV0NKSHB6cTRCZGpkc1ZOMm8xR1JVQ0lCMEtBN2JHMUZWQjFJaUs4ZDU3UUFMK1BHOVg1bGRLRzdFa29BbWhXVktlIl0sImtpZCI6Ik1Hd3daNlJsTUdNeEN6QUpCZ05WQkFZVEFrUkZNUTh3RFFZRFZRUUhEQVpDWlhKc2FXNHhIVEFiQmdOVkJBb01GRUoxYm1SbGMyUnlkV05yWlhKbGFTQkhiV0pJTVFvd0NBWURWUVFMREFGSk1SZ3dGZ1lEVlFRRERBOUpSSFZ1YVc5dUlGUmxjM1FnUTBFQ0FRUT0iLCJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJyZXNwb25zZV90eXBlIjoidnBfdG9rZW4iLCJwcmVzZW50YXRpb25fZGVmaW5pdGlvbiI6eyJpZCI6IjE1ZDQwNjU0LWM2NTgtNDkzOC1hYzA3LWVjYjQxYzlhZmIxMCIsImlucHV0X2Rlc2NyaXB0b3JzIjpbeyJpZCI6IjUwYjZlNGYzLTYyMmEtNDk3NC1iMzMwLTVlNzIwZWM5MjJiZiIsImZvcm1hdCI6eyJ2YytzZC1qd3QiOnsicHJvb2ZfdHlwZSI6WyJKc29uV2ViU2lnbmF0dXJlMjAyMCJdfX0sImNvbnN0cmFpbnRzIjp7ImxpbWl0X2Rpc2Nsb3N1cmUiOiJyZXF1aXJlZCIsImZpZWxkcyI6W3sicGF0aCI6WyIkLnR5cGUiXSwiZmlsdGVyIjp7InR5cGUiOiJzdHJpbmciLCJjb25zdCI6IlZlcmlmaWVkRU1haWwifX0seyJwYXRoIjpbIiQuZW1haWwiXX1dfX1dfSwicmVzcG9uc2VfdXJpIjoiaHR0cHM6Ly92ZXJpZmllci5zc2kudGlyLmJ1ZHJ1LmRlL3ByZXNlbnRhdGlvbi9hdXRob3JpemF0aW9uLXJlc3BvbnNlIiwibm9uY2UiOiJZZjg4dGRlZzhZTTkyM3E0aFFBRzlPIiwiY2xpZW50X2lkIjoiaHR0cHM6Ly92ZXJpZmllci5zc2kudGlyLmJ1ZHJ1LmRlL3ByZXNlbnRhdGlvbi9hdXRob3JpemF0aW9uLXJlc3BvbnNlIiwicmVzcG9uc2VfbW9kZSI6ImRpcmVjdF9wb3N0In0.sdeLcG6Ta4ozfbDuHBr2Vq-Ro2WpdUIhJWy3BgazyvrgkQw27uTFGioPWXNCruK5H5E5nvHS420u5tv0671tjg";
3537

36-
// public Oid4VpClientServiceTests()
37-
// {
38-
// var holder = new Holder();
39-
// var walletRecordService = new DefaultWalletRecordService();
40-
// var pexService = new PexService(_agentProviderMock.Object, _mdocStorageMock.Object, _sdJwtVcHolderService!);
41-
//
42-
// _sdJwtVcHolderService = new SdJwtVcHolderService(holder, _sdJwtSignerService.Object, walletRecordService);
43-
// var oid4VpHaipClient = new Oid4VpHaipClient(new AuthorizationRequestService(_httpClientFactoryMock.Object), pexService);
44-
// _oid4VpRecordService = new Oid4VpRecordService(walletRecordService);
45-
//
46-
// _oid4VpClientService = new Oid4VpClientService(
47-
// _agentProviderMock.Object,
48-
// _httpClientFactoryMock.Object,
49-
// _loggerMock.Object,
50-
// _mdocAuthenticationService.Object,
51-
// oid4VpHaipClient,
52-
// _oid4VpRecordService,
53-
// _mdocStorageMock.Object,
54-
// pexService,
55-
// _authFlowSessionStorageMock.Object,
56-
// _sdJwtVcHolderService);
57-
//
58-
// _sdJwtSignerService.Setup(keyStore =>
59-
// keyStore.GenerateKbProofOfPossessionAsync(
60-
// It.IsAny<KeyId>(),
61-
// It.IsAny<string>(),
62-
// It.IsAny<string>(),
63-
// It.IsAny<string>(),
64-
// It.IsAny<string>(),
65-
// It.IsAny<string>()
66-
// )
67-
// )
68-
// .ReturnsAsync(KeyBindingJwtMock);
69-
// }
38+
public Oid4VpClientServiceTests()
39+
{
40+
var holder = new Holder();
41+
var walletRecordService = new DefaultWalletRecordService();
42+
var pexService = new PexService(_agentProviderMock.Object, _mdocStorageMock.Object, _sdJwtVcHolderService!);
43+
44+
_sdJwtVcHolderService = new SdJwtVcHolderService(holder, _sdJwtSignerService.Object, walletRecordService);
45+
var authRequestService = new AuthorizationRequestService(_httpClientFactoryMock.Object);
46+
var oid4VpHaipClient = new Oid4VpHaipClient(pexService);
47+
_oid4VpRecordService = new Oid4VpRecordService(walletRecordService);
48+
49+
_oid4VpClientService = new Oid4VpClientService(
50+
_agentProviderMock.Object,
51+
authRequestService,
52+
_httpClientFactoryMock.Object,
53+
_loggerMock.Object,
54+
_mdocAuthenticationService.Object,
55+
oid4VpHaipClient,
56+
_oid4VpRecordService,
57+
_mdocStorageMock.Object,
58+
pexService,
59+
_authFlowSessionStorageMock.Object,
60+
_sdJwtVcHolderService);
61+
62+
_sdJwtSignerService.Setup(keyStore =>
63+
keyStore.GenerateKbProofOfPossessionAsync(
64+
It.IsAny<KeyId>(),
65+
It.IsAny<string>(),
66+
It.IsAny<string>(),
67+
It.IsAny<string>(),
68+
It.IsAny<string>(),
69+
It.IsAny<string>(),
70+
Option<IEnumerable<string>>.None))
71+
.ReturnsAsync(KeyBindingJwtMock);
72+
}
7073

7174
private readonly Mock<IAgentProvider> _agentProviderMock = new();
7275
private readonly Mock<HttpMessageHandler> _httpMessageHandlerMock = new();
@@ -86,40 +89,46 @@ public class Oid4VpClientServiceTests : IAsyncLifetime
8689
private MockAgent? _agent1;
8790

8891
[Fact]
89-
// public async Task CanExecuteOpenId4VpFlow()
90-
// {
91-
// //Arrange
92-
// SetupHttpClient(RequestUriResponse);
93-
//
94-
// var sdJwt = new SdJwtRecord();
95-
//
96-
// await _sdJwtVcHolderService.AddAsync(_agent1!.Context, sdJwt);
97-
//
98-
// //Act
99-
// var (authorizationRequest, credentials) =
100-
// await _oid4VpClientService.ProcessAuthorizationRequestAsync(new Uri(AuthRequestWithRequestUri));
101-
//
102-
// var selectedCandidates = new SelectedCredential
103-
// {
104-
// InputDescriptorId = credentials.First().InputDescriptorId,
105-
// Credential = credentials.First().CredentialSetCandidates.First().Credentials.First()
106-
// };
107-
//
108-
// SetupHttpClient(
109-
// "{'redirect_uri':'https://client.example.org/cb#response_code=091535f699ea575c7937fa5f0f454aee'}"
110-
// );
111-
//
112-
// var response = await _oid4VpClientService.SendAuthorizationResponseAsync(
113-
// authorizationRequest,
114-
// new[] { selectedCandidates });
115-
//
116-
// // Assert
117-
// credentials.Length().Should().Be(1);
118-
//
119-
// response.Should().BeEquivalentTo(new Uri(ExpectedRedirectUrl));
120-
//
121-
// (await _oid4VpRecordService.ListAsync(_agent1.Context)).Count.Should().Be(1);
122-
// }
92+
public async Task CanExecuteOpenId4VpFlow()
93+
{
94+
//Arrange
95+
SetupHttpClient(RequestUriResponse);
96+
97+
var sdJwt = new SdJwtRecord();
98+
99+
await _sdJwtVcHolderService.AddAsync(_agent1!.Context, sdJwt);
100+
101+
var uri = AuthorizationRequestUri
102+
.FromUri(new Uri(AuthRequestWithRequestUri))
103+
.UnwrapOrThrow();
104+
105+
//Act
106+
var authRequestCandidates =
107+
(await _oid4VpClientService.ProcessAuthorizationRequestUri(uri)).UnwrapOrThrow();
108+
var (authorizationRequest, credentials) =
109+
(authRequestCandidates.AuthorizationRequest, authRequestCandidates.Candidates.UnwrapOrThrow());
110+
111+
var selectedCandidates = new SelectedCredential
112+
{
113+
InputDescriptorId = credentials.First().InputDescriptorId,
114+
Credential = credentials.First().CredentialSetCandidates.First().Credentials.First()
115+
};
116+
117+
SetupHttpClient(
118+
"{'redirect_uri':'https://client.example.org/cb#response_code=091535f699ea575c7937fa5f0f454aee'}"
119+
);
120+
121+
var response = await _oid4VpClientService.AcceptAuthorizationRequest(
122+
authorizationRequest,
123+
[selectedCandidates]);
124+
125+
// Assert
126+
credentials.Length().Should().Be(1);
127+
128+
response.UnwrapOrThrow().Should().BeEquivalentTo(new Uri(ExpectedRedirectUrl));
129+
130+
(await _oid4VpRecordService.ListAsync(_agent1.Context)).Count.Should().Be(1);
131+
}
123132

124133
public async Task DisposeAsync()
125134
{
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
namespace WalletFramework.Oid4Vc.Tests.Oid4Vp.AuthRequest;
2+
3+
public class AuthorizationRequestTests
4+
{
5+
[Fact]
6+
public void Can_Parse_From_Json()
7+
{
8+
9+
}
10+
}

0 commit comments

Comments
 (0)