Skip to content

Commit 4e43958

Browse files
committed
state machine function return types
1 parent b304fed commit 4e43958

1 file changed

Lines changed: 49 additions & 36 deletions

File tree

payjoin-ffi/dart/test/test_payjoin_integration_test.dart

Lines changed: 49 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -129,11 +129,11 @@ class ProcessPsbtCallback implements payjoin.ProcessPsbt {
129129

130130
payjoin.Initialized create_receiver_context(
131131
bitcoin.Address address,
132-
payjoin.Url directory,
132+
String directory,
133133
payjoin.OhttpKeys ohttp_keys,
134134
InMemoryReceiverPersister persister) {
135135
var receiver = payjoin.UninitializedReceiver()
136-
.createSession(address, directory.toString(), ohttp_keys, 600)
136+
.createSession(address, directory, ohttp_keys, null)
137137
.save(persister);
138138
return receiver;
139139
}
@@ -175,15 +175,18 @@ List<payjoin.InputPair> get_inputs(payjoin.RpcClient rpc_connection) {
175175
return inputs;
176176
}
177177

178-
process_provisional_proposal(
179-
proposal, InMemoryReceiverPersister recv_persister) async {
178+
Future<payjoin.PayjoinProposalReceiveSession> process_provisional_proposal(
179+
payjoin.ProvisionalProposal proposal,
180+
InMemoryReceiverPersister recv_persister) async {
180181
final payjoin_proposal = proposal
181182
.finalizeProposal(ProcessPsbtCallback(receiver), 1, 10)
182183
.save(recv_persister);
183184
return payjoin.PayjoinProposalReceiveSession(payjoin_proposal);
184185
}
185186

186-
process_wants_inputs(proposal, InMemoryReceiverPersister recv_persister) async {
187+
Future<payjoin.PayjoinProposalReceiveSession> process_wants_inputs(
188+
payjoin.WantsInputs proposal,
189+
InMemoryReceiverPersister recv_persister) async {
187190
final provisional_proposal = proposal
188191
.contributeInputs(get_inputs(receiver))
189192
.commitInputs()
@@ -192,46 +195,53 @@ process_wants_inputs(proposal, InMemoryReceiverPersister recv_persister) async {
192195
provisional_proposal, recv_persister);
193196
}
194197

195-
process_wants_outputs(
196-
proposal, InMemoryReceiverPersister recv_persister) async {
198+
Future<payjoin.PayjoinProposalReceiveSession> process_wants_outputs(
199+
payjoin.WantsOutputs proposal,
200+
InMemoryReceiverPersister recv_persister) async {
197201
final wants_inputs = proposal.commitOutputs().save(recv_persister);
198202
return await process_wants_inputs(wants_inputs, recv_persister);
199203
}
200204

201-
process_outputs_unknown(
202-
proposal, InMemoryReceiverPersister recv_persister) async {
205+
Future<payjoin.PayjoinProposalReceiveSession> process_outputs_unknown(
206+
payjoin.OutputsUnknown proposal,
207+
InMemoryReceiverPersister recv_persister) async {
203208
final wants_outputs = proposal
204209
.identifyReceiverOutputs(IsScriptOwnedCallback(receiver))
205210
.save(recv_persister);
206211
return await process_wants_outputs(wants_outputs, recv_persister);
207212
}
208213

209-
process_maybe_inputs_seen(
210-
proposal, InMemoryReceiverPersister recv_persister) async {
214+
Future<payjoin.PayjoinProposalReceiveSession> process_maybe_inputs_seen(
215+
payjoin.MaybeInputsSeen proposal,
216+
InMemoryReceiverPersister recv_persister) async {
211217
final outputs_unknown = proposal
212218
.checkNoInputsSeenBefore(CheckInputsNotSeenCallback(receiver))
213219
.save(recv_persister);
214220
return await process_outputs_unknown(outputs_unknown, recv_persister);
215221
}
216222

217-
process_maybe_inputs_owned(
218-
proposal, InMemoryReceiverPersister recv_persister) async {
223+
Future<payjoin.PayjoinProposalReceiveSession> process_maybe_inputs_owned(
224+
payjoin.MaybeInputsOwned proposal,
225+
InMemoryReceiverPersister recv_persister) async {
219226
final maybe_inputs_owned = proposal
220227
.checkInputsNotOwned(IsScriptOwnedCallback(receiver))
221228
.save(recv_persister);
222229
return await process_maybe_inputs_seen(maybe_inputs_owned, recv_persister);
223230
}
224231

225-
process_unchecked_proposal(
226-
proposal, InMemoryReceiverPersister recv_persister) async {
232+
Future<payjoin.PayjoinProposalReceiveSession> process_unchecked_proposal(
233+
payjoin.UncheckedProposal proposal,
234+
InMemoryReceiverPersister recv_persister) async {
227235
final unchecked_proposal = proposal
228236
.checkBroadcastSuitability(null, MempoolAcceptanceCallback(receiver))
229237
.save(recv_persister);
230238
return await process_maybe_inputs_owned(unchecked_proposal, recv_persister);
231239
}
232240

233-
Future<payjoin.ReceiveSession?> retrieve_receiver_proposal(receiver,
234-
InMemoryReceiverPersister recv_persister, payjoin.Url ohttp_relay) async {
241+
Future<payjoin.ReceiveSession?> retrieve_receiver_proposal(
242+
payjoin.Initialized receiver,
243+
InMemoryReceiverPersister recv_persister,
244+
payjoin.Url ohttp_relay) async {
235245
var agent = http.Client();
236246
var request = receiver.extractReq(ohttp_relay.toString());
237247
var response = await agent.post(Uri.https(request.request.url.toString()),
@@ -244,45 +254,53 @@ Future<payjoin.ReceiveSession?> retrieve_receiver_proposal(receiver,
244254
return null;
245255
}
246256
var proposal = res.success();
247-
return await process_unchecked_proposal(proposal, recv_persister);
257+
return await process_unchecked_proposal(
258+
proposal as payjoin.UncheckedProposal, recv_persister);
248259
}
249260

250261
Future<payjoin.ReceiveSession?> process_receiver_proposal(
251262
payjoin.ReceiveSession receiver,
252263
InMemoryReceiverPersister recv_persister,
253264
payjoin.Url ohttp_relay) async {
254265
if (receiver is payjoin.Initialized) {
255-
var res =
256-
await retrieve_receiver_proposal(receiver, recv_persister, ohttp_relay);
266+
var res = await retrieve_receiver_proposal(
267+
receiver as payjoin.Initialized, recv_persister, ohttp_relay);
257268
if (res == null) {
258269
return null;
259270
}
260271
return res;
261272
}
262273

263274
if (receiver is payjoin.UncheckedProposal) {
264-
return await process_unchecked_proposal(receiver, recv_persister);
275+
return await process_unchecked_proposal(
276+
receiver as payjoin.UncheckedProposal, recv_persister);
265277
}
266278
if (receiver is payjoin.MaybeInputsOwned) {
267-
return await process_maybe_inputs_owned(receiver, recv_persister);
279+
return await process_maybe_inputs_owned(
280+
receiver as payjoin.MaybeInputsOwned, recv_persister);
268281
}
269282
if (receiver is payjoin.MaybeInputsSeen) {
270-
return await process_maybe_inputs_seen(receiver, recv_persister);
283+
return await process_maybe_inputs_seen(
284+
receiver as payjoin.MaybeInputsSeen, recv_persister);
271285
}
272286
if (receiver is payjoin.OutputsUnknown) {
273-
return await process_outputs_unknown(receiver, recv_persister);
287+
return await process_outputs_unknown(
288+
receiver as payjoin.OutputsUnknown, recv_persister);
274289
}
275290
if (receiver is payjoin.WantsOutputs) {
276-
return await process_wants_outputs(receiver, recv_persister);
291+
return await process_wants_outputs(
292+
receiver as payjoin.WantsOutputs, recv_persister);
277293
}
278294
if (receiver is payjoin.WantsInputs) {
279-
return await process_wants_inputs(receiver, recv_persister);
295+
return await process_wants_inputs(
296+
receiver as payjoin.WantsInputs, recv_persister);
280297
}
281298
if (receiver is payjoin.ProvisionalProposal) {
282-
return await process_provisional_proposal(receiver, recv_persister);
299+
return await process_provisional_proposal(
300+
receiver as payjoin.ProvisionalProposal, recv_persister);
283301
}
284302
if (receiver is payjoin.PayjoinProposal) {
285-
return receiver;
303+
return receiver as payjoin.PayjoinProposalReceiveSession;
286304
}
287305

288306
throw Exception("Unknown receiver state: $receiver");
@@ -296,7 +314,7 @@ void main() {
296314
receiver = env.getReceiver();
297315
sender = env.getSender();
298316
var receiver_address = bitcoin.Address(
299-
jsonEncode(receiver.call("getnewaddress", [])),
317+
jsonDecode(receiver.call("getnewaddress", [])),
300318
bitcoin.Network.regtest);
301319
var services = payjoin.TestServices.initialize();
302320

@@ -305,31 +323,26 @@ void main() {
305323
var ohttp_keys = services.fetchOhttpKeys();
306324
var ohttp_relay = services.ohttpRelayUrl();
307325
var agent = http.Client();
308-
print("Gets here: 1");
309326

310327
// **********************
311328
// Inside the Receiver:
312329
var recv_persister = InMemoryReceiverPersister("1");
313330
var sender_persister = InMemorySenderPersister("1");
314-
print("Gets here: 2");
315331
var session = create_receiver_context(
316332
receiver_address, directory, ohttp_keys, recv_persister);
317-
print("Gets here: 3");
318-
// var process_response =
319-
// await process_receiver_proposal(session, recv_persister, ohttp_relay);
333+
// var process_response = await process_receiver_proposal(
334+
// session as payjoin.ReceiveSession, recv_persister, ohttp_relay);
320335
// expect(process_response, isNull);
321336

322337
// **********************
323338
// Inside the Sender:
324339
// Create a funded PSBT (not broadcasted) to address with amount given in the pj_uri
325-
print("Gets here: 4");
326340
var pj_uri = session.pjUri();
327341
var psbt = build_sweep_psbt(sender, pj_uri);
328342
payjoin.WithReplyKey req_ctx =
329343
payjoin.SenderBuilder(psbt.toString(), pj_uri)
330344
.buildRecommended(1000)
331345
.save(sender_persister);
332-
print("Gets here: 5");
333346
payjoin.RequestV2PostContext request =
334347
req_ctx.extractV2(ohttp_relay.toString());
335348
var response = await agent.post(Uri.https(request.request.url.toString()),

0 commit comments

Comments
 (0)