Skip to content

Commit f6028a9

Browse files
committed
ffi: Extract shared InMemory persister helpers
1 parent df719ff commit f6028a9

12 files changed

Lines changed: 293 additions & 537 deletions

payjoin-ffi/csharp/IntegrationTests.cs

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,6 @@ public class IntegrationTests : IAsyncLifetime
1111
private TestServices? _services;
1212
private HttpClient? _httpClient;
1313

14-
private sealed class InMemoryReceiverPersister : JsonReceiverSessionPersister
15-
{
16-
private readonly List<string> _events = new();
17-
public RpcClient? Connection { get; set; }
18-
19-
public void Save(string @event) => _events.Add(@event);
20-
public string[] Load() => _events.ToArray();
21-
public void Close() { }
22-
}
23-
24-
private sealed class InMemorySenderPersister : JsonSenderSessionPersister
25-
{
26-
private readonly List<string> _events = new();
27-
28-
public void Save(string @event) => _events.Add(@event);
29-
public string[] Load() => _events.ToArray();
30-
public void Close() { }
31-
}
32-
3314
private sealed class MempoolAcceptanceCallback : CanBroadcast
3415
{
3516
private readonly RpcClient _connection;

payjoin-ffi/csharp/UnitTests.cs

Lines changed: 0 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -42,88 +42,6 @@ public void ValidUrisWithDifferentAddressesAndEndpoints(string address, string p
4242
}
4343
}
4444

45-
public class InMemoryReceiverPersister : JsonReceiverSessionPersister
46-
{
47-
private List<string> _events = new();
48-
49-
public void Save(string @event)
50-
{
51-
_events.Add(@event);
52-
}
53-
54-
public string[] Load()
55-
{
56-
return _events.ToArray();
57-
}
58-
59-
public void Close()
60-
{
61-
// no-op for tests
62-
}
63-
}
64-
65-
public class InMemorySenderPersister : JsonSenderSessionPersister
66-
{
67-
private List<string> _events = new();
68-
69-
public void Save(string @event)
70-
{
71-
_events.Add(@event);
72-
}
73-
74-
public string[] Load()
75-
{
76-
return _events.ToArray();
77-
}
78-
79-
public void Close()
80-
{
81-
// no-op for tests
82-
}
83-
}
84-
85-
public class InMemoryReceiverPersisterAsync : JsonReceiverSessionPersisterAsync
86-
{
87-
private readonly List<string> _events = new();
88-
89-
public Task Save(string @event)
90-
{
91-
_events.Add(@event);
92-
return Task.CompletedTask;
93-
}
94-
95-
public Task<string[]> Load()
96-
{
97-
return Task.FromResult(_events.ToArray());
98-
}
99-
100-
public Task Close()
101-
{
102-
return Task.CompletedTask;
103-
}
104-
}
105-
106-
public class InMemorySenderPersisterAsync : JsonSenderSessionPersisterAsync
107-
{
108-
private readonly List<string> _events = new();
109-
110-
public Task Save(string @event)
111-
{
112-
_events.Add(@event);
113-
return Task.CompletedTask;
114-
}
115-
116-
public Task<string[]> Load()
117-
{
118-
return Task.FromResult(_events.ToArray());
119-
}
120-
121-
public Task Close()
122-
{
123-
return Task.CompletedTask;
124-
}
125-
}
126-
12745
public class PersistenceTests
12846
{
12947
private static readonly byte[] OhttpKeysData = new byte[]

payjoin-ffi/csharp/Utils.cs

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
namespace Payjoin.Tests;
2+
3+
public abstract class MemoryEventLog
4+
{
5+
private readonly List<string> _events = new();
6+
7+
public bool Closed { get; private set; }
8+
9+
public void Save(string @event)
10+
{
11+
_events.Add(@event);
12+
}
13+
14+
public string[] Load()
15+
{
16+
return _events.ToArray();
17+
}
18+
19+
public void Close()
20+
{
21+
Closed = true;
22+
}
23+
}
24+
25+
public abstract class MemoryEventLogAsync
26+
{
27+
private readonly List<string> _events = new();
28+
29+
public bool Closed { get; private set; }
30+
31+
public Task Save(string @event)
32+
{
33+
_events.Add(@event);
34+
return Task.CompletedTask;
35+
}
36+
37+
public Task<string[]> Load()
38+
{
39+
return Task.FromResult(_events.ToArray());
40+
}
41+
42+
public Task Close()
43+
{
44+
Closed = true;
45+
return Task.CompletedTask;
46+
}
47+
}
48+
49+
public class InMemoryReceiverPersister : MemoryEventLog, JsonReceiverSessionPersister
50+
{
51+
public RpcClient? Connection { get; set; }
52+
}
53+
54+
public class InMemorySenderPersister : MemoryEventLog, JsonSenderSessionPersister
55+
{
56+
}
57+
58+
public class InMemoryReceiverPersisterAsync : MemoryEventLogAsync, JsonReceiverSessionPersisterAsync
59+
{
60+
}
61+
62+
public class InMemorySenderPersisterAsync : MemoryEventLogAsync, JsonSenderSessionPersisterAsync
63+
{
64+
}

payjoin-ffi/dart/test/test_payjoin_integration_test.dart

Lines changed: 4 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -8,59 +8,13 @@ import "package:convert/convert.dart";
88
import "package:payjoin/http.dart" as payjoin_http;
99
import "package:payjoin/payjoin.dart" as payjoin;
1010
import "package:payjoin/test_utils.dart" as test_utils;
11+
import "utils.dart";
1112

1213
late test_utils.BitcoindEnv env;
1314
late test_utils.BitcoindInstance bitcoind;
1415
late test_utils.RpcClient receiver;
1516
late test_utils.RpcClient sender;
1617

17-
class InMemoryReceiverPersister
18-
implements payjoin.JsonReceiverSessionPersister {
19-
final String id;
20-
final List<String> events = [];
21-
bool closed = false;
22-
23-
InMemoryReceiverPersister(this.id);
24-
25-
@override
26-
void save(String event) {
27-
events.add(event);
28-
}
29-
30-
@override
31-
List<String> load() {
32-
return events;
33-
}
34-
35-
@override
36-
void close() {
37-
closed = true;
38-
}
39-
}
40-
41-
class InMemorySenderPersister implements payjoin.JsonSenderSessionPersister {
42-
final String id;
43-
final List<String> events = [];
44-
bool closed = false;
45-
46-
InMemorySenderPersister(this.id);
47-
48-
@override
49-
void save(String event) {
50-
events.add(event);
51-
}
52-
53-
@override
54-
List<String> load() {
55-
return events;
56-
}
57-
58-
@override
59-
void close() {
60-
closed = true;
61-
}
62-
}
63-
6418
class MempoolAcceptanceCallback implements payjoin.CanBroadcast {
6519
final payjoin.RpcClient connection;
6620

@@ -493,7 +447,7 @@ void main() {
493447
services.waitForServicesReady();
494448
final directory = services.directoryUrl();
495449
final ohttpKeys = services.fetchOhttpKeys();
496-
final recvPersister = InMemoryReceiverPersister("prim");
450+
final recvPersister = InMemoryReceiverPersister();
497451
final pjUri = payjoin.ReceiverBuilder(
498452
address: receiverAddress,
499453
directory: directory,
@@ -535,8 +489,8 @@ void main() {
535489

536490
// **********************
537491
// Inside the Receiver:
538-
var recv_persister = InMemoryReceiverPersister("1");
539-
var sender_persister = InMemorySenderPersister("1");
492+
var recv_persister = InMemoryReceiverPersister();
493+
var sender_persister = InMemorySenderPersister();
540494
var session = create_receiver_context(
541495
receiver_address,
542496
directory,

0 commit comments

Comments
 (0)