import 'dart:convert'; import 'package:swarm/swarm.dart'; import 'package:test/test.dart'; void main() { // Produces a genuinely-signed event so verifyNostrEvent has a real signature // to check (signed with the throwaway key below). const privKey = '0000000000000000000000000000000000000000000000000000000000000001'; Future> signedEvent() async { final signer = NostrSignerActor(privKey); final result = await signer.handle( const SignEvent(kind: 1985, content: '', tags: [ ['L', 'app.xfay.moderation'], ['l', 'hide', 'app.xfay.moderation'], ['e', 'imageeventid'], ]), ) as EventSigned; return jsonDecode(result.event) as Map; } test('accepts a genuinely signed event', () async { expect(verifyNostrEvent(await signedEvent()), isTrue); }); test('rejects a tampered content', () async { final event = await signedEvent(); event['content'] = 'tampered'; expect(verifyNostrEvent(event), isFalse); }); test('rejects a tampered id', () async { final event = await signedEvent(); event['id'] = '${event['id']}'.replaceRange(0, 1, '0'); expect(verifyNostrEvent(event), isFalse); }); test('rejects a forged author (pubkey swapped)', () async { final event = await signedEvent(); event['pubkey'] = '0000000000000000000000000000000000000000000000000000000000000002'; expect(verifyNostrEvent(event), isFalse); }); test('returns false for a malformed map instead of throwing', () { expect(verifyNostrEvent(const {}), isFalse); expect(verifyNostrEvent(const {'kind': 1}), isFalse); }); }