|
| 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