48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
|
import * as assert from 'assert';
|
||
|
import * as pgp from 'openpgp';
|
||
|
|
||
|
import { Dispatcher } from '../src/dispatch';
|
||
|
import { User } from '../src/assets/user';
|
||
|
import { PGPSigner, KeyStore } from '../src/auth';
|
||
|
import { SubConsumer } from '../src/transport';
|
||
|
|
||
|
import { MockStore, MockPubSub, MockConsumer, MockKeyStore } from './mock';
|
||
|
|
||
|
async function createKeyStore() {
|
||
|
const opts = {
|
||
|
userIds: [
|
||
|
{
|
||
|
name: 'John Marston',
|
||
|
email: 'red@dead.com',
|
||
|
},
|
||
|
],
|
||
|
numBits: 2048,
|
||
|
passphrase: 'foo',
|
||
|
};
|
||
|
const pkgen = await pgp.generateKey(opts);
|
||
|
const pka = pkgen.privateKeyArmored;
|
||
|
const pks = await pgp.key.readArmored(pka);
|
||
|
await pks.keys[0].decrypt('foo');
|
||
|
return new MockKeyStore(pks.keys[0], []);
|
||
|
}
|
||
|
|
||
|
describe('fullchain', async () => {
|
||
|
it('dispatch_and_publish_user', async () => {
|
||
|
const g = await createKeyStore();
|
||
|
const n = new PGPSigner(g);
|
||
|
const u = new User('u1', {});
|
||
|
u.setSigner(n);
|
||
|
u.setName('Nico', 'Bellic');
|
||
|
const s = new MockStore('fooStore');
|
||
|
const c = new MockConsumer();
|
||
|
const p = new MockPubSub('fooPubSub', c);
|
||
|
const d = new Dispatcher(s, p);
|
||
|
u.onwrap = (e) => {
|
||
|
d.add(u.id, e);
|
||
|
d.sync(0);
|
||
|
assert.equal(p.pubs.length, 1);
|
||
|
};
|
||
|
u.sign();
|
||
|
});
|
||
|
});
|