Skip to content

Commit 5b1302f

Browse files
committed
test: add metadata NIP-65 relay discovery regression
1 parent 39c9816 commit 5b1302f

1 file changed

Lines changed: 61 additions & 0 deletions

File tree

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import 'package:test/test.dart';
2+
import 'package:ndk/domain_layer/entities/nip_65.dart';
3+
import 'package:ndk/domain_layer/entities/read_write_marker.dart';
4+
import 'package:ndk/ndk.dart';
5+
import 'package:ndk/shared/nips/nip01/bip340.dart';
6+
7+
import '../../mocks/mock_relay.dart';
8+
9+
void main() {
10+
test('loadMetadata follows the author write relay', () async {
11+
final key = Bip340.generatePrivateKey();
12+
final metadata = Metadata(pubKey: key.publicKey, name: 'nip65-profile');
13+
14+
final profileRelay = MockRelay(name: 'profile relay');
15+
final signedMetadataEvent = Nip01Utils.signWithPrivateKey(
16+
event: metadata.toEvent(),
17+
privateKey: key.privateKey!,
18+
);
19+
await profileRelay.startServer(metadatas: {
20+
key.publicKey: signedMetadataEvent,
21+
});
22+
23+
final relayList = Nip65.fromMap(key.publicKey, {
24+
profileRelay.url: ReadWriteMarker.readWrite,
25+
});
26+
final signedRelayListEvent = Nip01Utils.signWithPrivateKey(
27+
event: relayList.toEvent(),
28+
privateKey: key.privateKey!,
29+
);
30+
final relayListBootstrap = MockRelay(name: 'relay list bootstrap');
31+
await relayListBootstrap.startServer();
32+
33+
final ndk = Ndk(NdkConfig(
34+
eventVerifier: Bip340EventVerifier(),
35+
cache: MemCacheManager(),
36+
bootstrapRelays: [relayListBootstrap.url],
37+
));
38+
39+
await ndk.relays.seedRelaysConnected;
40+
41+
addTearDown(() async {
42+
await ndk.destroy();
43+
await relayListBootstrap.stopServer();
44+
await profileRelay.stopServer();
45+
});
46+
47+
await ndk.broadcast
48+
.broadcast(
49+
nostrEvent: signedRelayListEvent,
50+
specificRelays: [relayListBootstrap.url],
51+
saveToCache: false,
52+
)
53+
.broadcastDoneFuture;
54+
55+
final loaded = await ndk.metadata.loadMetadata(
56+
key.publicKey,
57+
);
58+
59+
expect(loaded?.name, equals(metadata.name));
60+
});
61+
}

0 commit comments

Comments
 (0)