@@ -12,7 +12,10 @@ import {
12
12
PackageManager ,
13
13
PaymentRequestType ,
14
14
PaymentRequestDataType ,
15
- byteEncoder
15
+ byteEncoder ,
16
+ PaymentType ,
17
+ BasicMessage ,
18
+ createProposal
16
19
} from '../../src' ;
17
20
18
21
import {
@@ -29,24 +32,26 @@ import {
29
32
30
33
import { expect } from 'chai' ;
31
34
import path from 'path' ;
32
- import { MediaType } from '../../src/iden3comm/constants' ;
35
+ import { MediaType , PROTOCOL_MESSAGE_TYPE } from '../../src/iden3comm/constants' ;
33
36
import { DID } from '@iden3/js-iden3-core' ;
34
37
import {
38
+ createPayment ,
35
39
createPaymentRequest ,
36
40
IPaymentHandler ,
37
41
PaymentHandler
38
42
} from '../../src/iden3comm/handlers/payment' ;
39
43
import {
40
- PaymentMessage ,
41
44
PaymentRequestDataInfo ,
42
45
PaymentRequestInfo
43
46
} from '../../src/iden3comm/types/protocol/payment' ;
44
47
import { Contract , ethers , JsonRpcProvider } from 'ethers' ;
48
+ import fetchMock from '@gr2m/fetch-mock' ;
45
49
46
50
describe ( 'payment-request handler' , ( ) => {
47
51
let packageMgr : IPackageManager ;
48
52
let paymentHandler : IPaymentHandler ;
49
53
let userDID , issuerDID : DID ;
54
+ let agentMessageResponse : BasicMessage ;
50
55
const packageManager : IPackageManager = new PackageManager ( ) ;
51
56
packageManager . registerPackers ( [ new PlainPacker ( ) ] ) ;
52
57
@@ -128,7 +133,7 @@ describe('payment-request handler', () => {
128
133
chainID : 80002 ,
129
134
address : '0x2C2007d72f533FfD409F0D9f515983e95bF14992'
130
135
} ,
131
- agent : 'https://issuer .com' ,
136
+ agent : 'https://agent-url .com' ,
132
137
expiration : 2125558127 ,
133
138
description : 'payment-request integration test'
134
139
} ;
@@ -137,6 +142,10 @@ describe('payment-request handler', () => {
137
142
return Promise . resolve ( '0x312312334' ) ;
138
143
} ;
139
144
145
+ afterEach ( ( ) => {
146
+ fetchMock . restore ( ) ;
147
+ } ) ;
148
+
140
149
beforeEach ( async ( ) => {
141
150
const kms = registerKeyProvidersInMemoryKMS ( ) ;
142
151
const dataStorage = getInMemoryDataStorage ( MOCK_STATE_STORAGE ) ;
@@ -174,42 +183,43 @@ describe('payment-request handler', () => {
174
183
} ) ;
175
184
176
185
issuerDID = issuerIdentity . did ;
186
+
187
+ agentMessageResponse = createProposal ( issuerDID , userDID , [ ] ) ;
188
+ fetchMock . spy ( ) ;
189
+ fetchMock . post ( 'https://agent-url.com' , agentMessageResponse ) ;
177
190
} ) ;
178
191
179
192
it ( 'payment-request handler test' , async ( ) => {
180
- const paymentRequest = createPaymentRequest ( userDID , issuerDID , [ paymentReqInfo ] ) ;
193
+ const paymentRequest = createPaymentRequest ( issuerDID , userDID , [ paymentReqInfo ] ) ;
181
194
const msgBytesRequest = await packageManager . pack (
182
195
MediaType . PlainMessage ,
183
196
byteEncoder . encode ( JSON . stringify ( paymentRequest ) ) ,
184
197
{ }
185
198
) ;
186
- const paymentMessageBytes = await paymentHandler . handlePaymentRequest ( msgBytesRequest , {
199
+ const agentMessageBytes = await paymentHandler . handlePaymentRequest ( msgBytesRequest , {
187
200
paymentHandler : paymentHandlerFuncMock ,
188
201
txParams : [ '<session-id-hash>' , '<issuer-did-hash>' ]
189
202
} ) ;
190
- const { unpackedMessage : paymentMessage } = await packageManager . unpack ( paymentMessageBytes ) ;
203
+ const { unpackedMessage : agentMessage } = await packageManager . unpack ( agentMessageBytes ) ;
191
204
192
- expect ( ( paymentMessage as PaymentMessage ) . body ?. payments [ 0 ] . id ) . to . be . eq (
193
- paymentReqInfo . data . id
205
+ expect ( ( agentMessage as BasicMessage ) . type ) . to . be . eq (
206
+ PROTOCOL_MESSAGE_TYPE . PROPOSAL_MESSAGE_TYPE
194
207
) ;
195
-
196
- expect ( ( paymentMessage as PaymentMessage ) . body ?. payments [ 0 ] . paymentData . txID ) . to . be . not . empty ;
197
208
} ) ;
198
209
199
210
it ( 'payment handler' , async ( ) => {
200
- const paymentRequest = createPaymentRequest ( userDID , issuerDID , [ paymentReqInfo ] ) ;
201
- const msgBytesRequest = await packageManager . pack (
202
- MediaType . PlainMessage ,
203
- byteEncoder . encode ( JSON . stringify ( paymentRequest ) ) ,
204
- { }
205
- ) ;
206
- const paymentMessageBytes = await paymentHandler . handlePaymentRequest ( msgBytesRequest , {
207
- paymentHandler : paymentHandlerFuncMock ,
208
- txParams : [ '<session-id-hash>' , '<issuer-did-hash>' ]
209
- } ) ;
210
- const { unpackedMessage : paymentMessage } = await packageManager . unpack ( paymentMessageBytes ) ;
211
+ const paymentRequest = createPaymentRequest ( issuerDID , userDID , [ paymentReqInfo ] ) ;
212
+ const payment = createPayment ( userDID , issuerDID , [
213
+ {
214
+ id : paymentRequest . body ?. payments [ 0 ] . data . id || 0 ,
215
+ type : PaymentType . Iden3PaymentCryptoV1 ,
216
+ paymentData : {
217
+ txID : '0x312312334'
218
+ }
219
+ }
220
+ ] ) ;
211
221
212
- paymentHandler . handlePayment ( paymentMessage as PaymentMessage , {
222
+ await paymentHandler . handlePayment ( payment , {
213
223
paymentRequest,
214
224
checkPaymentHandler : async ( ) => {
215
225
Promise . resolve ( ) ;
@@ -218,39 +228,36 @@ describe('payment-request handler', () => {
218
228
} ) ;
219
229
220
230
it . skip ( 'payment-request handler (integration test)' , async ( ) => {
221
- const paymentRequest = createPaymentRequest ( userDID , issuerDID , [ paymentReqInfo ] ) ;
231
+ const paymentRequest = createPaymentRequest ( issuerDID , userDID , [ paymentReqInfo ] ) ;
222
232
const msgBytesRequest = await packageManager . pack (
223
233
MediaType . PlainMessage ,
224
234
byteEncoder . encode ( JSON . stringify ( paymentRequest ) ) ,
225
235
{ }
226
236
) ;
227
- const paymentMessageBytes = await paymentHandler . handlePaymentRequest ( msgBytesRequest , {
237
+ const agentMessageBytes = await paymentHandler . handlePaymentRequest ( msgBytesRequest , {
228
238
paymentHandler : paymentIntegrationHandlerFunc ,
229
239
txParams : [ '<session-id-hash>' , '<issuer-did-hash>' ]
230
240
} ) ;
231
- const { unpackedMessage : paymentMessage } = await packageManager . unpack ( paymentMessageBytes ) ;
241
+ const { unpackedMessage : agentMessage } = await packageManager . unpack ( agentMessageBytes ) ;
232
242
233
- expect ( ( paymentMessage as PaymentMessage ) . body ?. payments [ 0 ] . id ) . to . be . eq (
234
- paymentReqInfo . data . id
243
+ expect ( ( agentMessage as BasicMessage ) . type ) . to . be . eq (
244
+ PROTOCOL_MESSAGE_TYPE . PROPOSAL_MESSAGE_TYPE
235
245
) ;
236
-
237
- expect ( ( paymentMessage as PaymentMessage ) . body ?. payments [ 0 ] . paymentData . txID ) . to . be . not . empty ;
238
246
} ) ;
239
247
240
248
it . skip ( 'payment handler (integration test)' , async ( ) => {
241
- const paymentRequest = createPaymentRequest ( userDID , issuerDID , [ paymentReqInfo ] ) ;
242
- const msgBytesRequest = await packageManager . pack (
243
- MediaType . PlainMessage ,
244
- byteEncoder . encode ( JSON . stringify ( paymentRequest ) ) ,
245
- { }
246
- ) ;
247
- const paymentMessageBytes = await paymentHandler . handlePaymentRequest ( msgBytesRequest , {
248
- paymentHandler : paymentIntegrationHandlerFunc ,
249
- txParams : [ '<session-id-hash>' , '<issuer-did-hash>' ]
250
- } ) ;
251
- const { unpackedMessage : paymentMessage } = await packageManager . unpack ( paymentMessageBytes ) ;
249
+ const paymentRequest = createPaymentRequest ( issuerDID , userDID , [ paymentReqInfo ] ) ;
250
+ const payment = createPayment ( userDID , issuerDID , [
251
+ {
252
+ id : paymentRequest . body ?. payments [ 0 ] . data . id || 0 ,
253
+ type : PaymentType . Iden3PaymentCryptoV1 ,
254
+ paymentData : {
255
+ txID : '0xe9bea8e7adfe1092a8a4ca2cd75f4d21cc54b9b7a31bd8374b558d11b58a6a1a'
256
+ }
257
+ }
258
+ ] ) ;
252
259
253
- paymentHandler . handlePayment ( paymentMessage as PaymentMessage , {
260
+ await paymentHandler . handlePayment ( payment , {
254
261
paymentRequest,
255
262
checkPaymentHandler : paymentCheckIntegrationHandlerFunc
256
263
} ) ;
0 commit comments