import { getPublicKey, generatePrivateKey } from './keys.ts' import { getDelegator, createDelegation } from './nip26.ts' import { buildEvent } from './test-helpers.ts' test('parse good delegation from NIP', async () => { expect( getDelegator({ id: 'a080fd288b60ac2225ff2e2d815291bd730911e583e177302cc949a15dc2b2dc', pubkey: '62903b1ff41559daf9ee98ef1ae67cc52f301bb5ce26d14baba3052f649c3f49', created_at: 1660896109, kind: 1, tags: [ [ 'delegation', '86f0689bd48dcd19c67a19d994f938ee34f251d8c39976290955ff585f2db42e', 'kind=1&created_at>1640995200', 'c33c88ba78ec3c760e49db591ac5f7b129e3887c8af7729795e85a0588007e5ac89b46549232d8f918eefd73e726cb450135314bfda419c030d0b6affe401ec1', ], ], content: 'Hello world', sig: 'cd4a3cd20dc61dcbc98324de561a07fd23b3d9702115920c0814b5fb822cc5b7c5bcdaf3fa326d24ed50c5b9c8214d66c75bae34e3a84c25e4d122afccb66eb6', }), ).toEqual('86f0689bd48dcd19c67a19d994f938ee34f251d8c39976290955ff585f2db42e') }) test('parse bad delegations', async () => { expect( getDelegator({ id: 'a080fd288b60ac2225ff2e2d815291bd730911e583e177302cc949a15dc2b2dc', pubkey: '62903b1ff41559daf9ee98ef1ae67cc52f301bb5ce26d14baba3052f649c3f49', created_at: 1660896109, kind: 1, tags: [ [ 'delegation', '86f0689bd48dcd19c67a19d994f938ee34f251d8c39976290955ff585f2db42f', 'kind=1&created_at>1640995200', 'c33c88ba78ec3c760e49db591ac5f7b129e3887c8af7729795e85a0588007e5ac89b46549232d8f918eefd73e726cb450135314bfda419c030d0b6affe401ec1', ], ], content: 'Hello world', sig: 'cd4a3cd20dc61dcbc98324de561a07fd23b3d9702115920c0814b5fb822cc5b7c5bcdaf3fa326d24ed50c5b9c8214d66c75bae34e3a84c25e4d122afccb66eb6', }), ).toEqual(null) expect( getDelegator({ id: 'a080fd288b60ac2225ff2e2d815291bd730911e583e177302cc949a15dc2b2dc', pubkey: '62903b1ff41559daf9ee98ef1ae67cc52f301bb5ce26d14baba3052f649c3f49', created_at: 1660896109, kind: 1, tags: [ [ 'delegation', '86f0689bd48dcd19c67a19d994f938ee34f251d8c39976290955ff585f2db42e', 'kind=1&created_at>1740995200', 'c33c88ba78ec3c760e49db591ac5f7b129e3887c8af7729795e85a0588007e5ac89b46549232d8f918eefd73e726cb450135314bfda419c030d0b6affe401ec1', ], ], content: 'Hello world', sig: 'cd4a3cd20dc61dcbc98324de561a07fd23b3d9702115920c0814b5fb822cc5b7c5bcdaf3fa326d24ed50c5b9c8214d66c75bae34e3a84c25e4d122afccb66eb6', }), ).toEqual(null) expect( getDelegator({ id: 'a080fd288b60ac2225ff2e2d815291bd730911e583e177302cc949a15dc2b2dc', pubkey: '62903b1ff41559daf9ee98ef1ae67c152f301bb5ce26d14baba3052f649c3f49', created_at: 1660896109, kind: 1, tags: [ [ 'delegation', '86f0689bd48dcd19c67a19d994f938ee34f251d8c39976290955ff585f2db42e', 'kind=1&created_at>1640995200', 'c33c88ba78ec3c760e49db591ac5f7b129e3887c8af7729795e85a0588007e5ac89b46549232d8f918eefd73e726cb450135314bfda419c030d0b6affe401ec1', ], ], content: 'Hello world', sig: 'cd4a3cd20dc61dcbc98324de561a07fd23b3d9702115920c0814b5fb822cc5b7c5bcdaf3fa326d24ed50c5b9c8214d66c75bae34e3a84c25e4d122afccb66eb6', }), ).toEqual(null) }) test('create and verify delegation', async () => { let sk1 = generatePrivateKey() let pk1 = getPublicKey(sk1) let sk2 = generatePrivateKey() let pk2 = getPublicKey(sk2) let delegation = createDelegation(sk1, { pubkey: pk2, kind: 1 }) expect(delegation).toHaveProperty('from', pk1) expect(delegation).toHaveProperty('to', pk2) expect(delegation).toHaveProperty('cond', 'kind=1') let event = buildEvent({ kind: 1, tags: [['delegation', delegation.from, delegation.cond, delegation.sig]], pubkey: pk2, }) expect(getDelegator(event)).toEqual(pk1) })