@@ -117,4 +117,107 @@ describe("Transaction", () => {
117117
118118 expect ( response . transactionId ) . toBe ( returnedTransactionId )
119119 } )
120+
121+ test ( "SendTransaction with duplicated payer" , async ( ) => {
122+ const unaryMock = jest . fn ( )
123+
124+ const returnedTransactionId = "a1b2c3"
125+
126+ unaryMock . mockReturnValue ( {
127+ getId_asU8 : ( ) => hexStrToUInt8Array ( "a1b2c3" ) ,
128+ } )
129+
130+ const built = await build ( [
131+ transaction `cadence transaction` ,
132+ proposer ( {
133+ addr : "abc" ,
134+ keyId : 1 ,
135+ sequenceNum : 123 ,
136+ signingFunction : ( ) => ( {
137+ addr : "abc" ,
138+ keyId : 1 ,
139+ signature : "abc123" ,
140+ } ) ,
141+ resolve : null ,
142+ role : {
143+ proposer : true ,
144+ authorizer : false ,
145+ payer : false ,
146+ param : false ,
147+ } ,
148+ } ) ,
149+ payer ( {
150+ addr : "def" ,
151+ keyId : 1 ,
152+ sequenceNum : 123 ,
153+ signingFunction : ( ) => ( {
154+ addr : "def" ,
155+ keyId : 1 ,
156+ signature : "def456" ,
157+ } ) ,
158+ resolve : null ,
159+ role : {
160+ proposer : false ,
161+ authorizer : false ,
162+ payer : true ,
163+ param : false ,
164+ } ,
165+ } ) ,
166+ authorizations ( [
167+ {
168+ addr : "abc" ,
169+ keyId : 1 ,
170+ sequenceNum : 123 ,
171+ signingFunction : ( ) => ( {
172+ addr : "abc" ,
173+ keyId : 1 ,
174+ signature : "abc123" ,
175+ } ) ,
176+ resolve : null ,
177+ role : {
178+ proposer : false ,
179+ authorizer : true ,
180+ payer : false ,
181+ param : false ,
182+ } ,
183+ } ,
184+ ] ) ,
185+ ref ( "aaaa" ) ,
186+ voucherIntercept ( async voucher => {
187+ voucherToTxId ( voucher )
188+ } ) ,
189+ ] )
190+
191+ const resolved = await resolve ( built )
192+
193+ const response = await sendTransaction (
194+ resolved ,
195+ {
196+ response : responseADT ,
197+ Buffer,
198+ } ,
199+ {
200+ unary : unaryMock ,
201+ node : "localhost:3000" ,
202+ }
203+ )
204+
205+ expect ( unaryMock . mock . calls . length ) . toEqual ( 1 )
206+
207+ const unaryMockArgs = unaryMock . mock . calls [ 0 ]
208+
209+ expect ( unaryMockArgs . length ) . toEqual ( 4 )
210+
211+ const unaryType = unaryMock . mock . calls [ 0 ] [ 1 ]
212+
213+ expect ( unaryType ) . toEqual ( AccessAPI . SendTransaction )
214+
215+ const unaryMockRequest = unaryMock . mock . calls [ 0 ] [ 2 ]
216+
217+ expect ( unaryMockRequest ) . not . toBeUndefined ( )
218+
219+ expect ( response . transactionId ) . toBe ( returnedTransactionId )
220+
221+ expect ( unaryMockRequest . getTransaction ( ) . getPayloadSignaturesList ( ) ) . toHaveLength ( 1 )
222+ } )
120223} )
0 commit comments