mirror of https://codeberg.org/pzp/pzp-invite.git
104 lines
2.6 KiB
JavaScript
104 lines
2.6 KiB
JavaScript
const test = require('node:test')
|
|
const assert = require('node:assert')
|
|
const Path = require('node:path')
|
|
const os = require('node:os')
|
|
const p = require('node:util').promisify
|
|
const rimraf = require('rimraf')
|
|
const Keypair = require('pzp-keypair')
|
|
const caps = require('pzp-caps')
|
|
|
|
test('createForFriend()', async (t) => {
|
|
const path = Path.join(os.tmpdir(), 'pzp-promise-createForFriend-0')
|
|
rimraf.sync(path)
|
|
const keypair = Keypair.generate('ed25519', 'alice')
|
|
|
|
let connectCalled = false
|
|
let createTokenCalled = false
|
|
let createPromiseCalled = false
|
|
|
|
const mockNet = {
|
|
name: 'net',
|
|
manifest: {
|
|
connect: 'async',
|
|
},
|
|
init() {
|
|
return {
|
|
connect(address, cb) {
|
|
connectCalled = true
|
|
assert.equal(address, '/dns/example.com/tcp/8008/shse/HUB_PUBKEY')
|
|
const mockRpc = {
|
|
hub: {
|
|
createToken(cb) {
|
|
createTokenCalled = true
|
|
cb(null, 'MOCK_TOKEN')
|
|
},
|
|
},
|
|
}
|
|
cb(null, mockRpc)
|
|
},
|
|
}
|
|
},
|
|
}
|
|
|
|
const mockPromise = {
|
|
name: 'promise',
|
|
manifest: {
|
|
create: 'async',
|
|
},
|
|
init() {
|
|
return {
|
|
create(opts, cb) {
|
|
createPromiseCalled = true
|
|
assert.deepEqual(opts, { type: 'follow', account: 'MOCK_ID' })
|
|
cb(null, 'MOCK_PROMISE')
|
|
},
|
|
}
|
|
},
|
|
}
|
|
|
|
const mockHubClient = {
|
|
name: 'hubClient',
|
|
init() {}
|
|
}
|
|
|
|
const local = require('secret-stack/bare')()
|
|
.use(require('secret-stack/plugins/net'))
|
|
.use(require('secret-handshake-ext/secret-stack'))
|
|
.use(mockNet)
|
|
.use(mockPromise)
|
|
.use(mockHubClient)
|
|
.use(require('../lib'))
|
|
.call(null, {
|
|
shse: {
|
|
caps,
|
|
},
|
|
global: {
|
|
path,
|
|
keypair,
|
|
connections: {
|
|
outgoing: {
|
|
net: [{ transform: 'shse' }],
|
|
},
|
|
},
|
|
},
|
|
})
|
|
|
|
const { uri, url } = await p(local.invite.createForFriend)({
|
|
_hubMultiaddr: '/dns/example.com/tcp/8008/shse/HUB_PUBKEY',
|
|
id: 'MOCK_ID',
|
|
})
|
|
assert.equal(
|
|
uri,
|
|
`pzp://invite/join/dns/example.com/tcp/8008/shse/HUB_PUBKEY.MOCK_TOKEN/follow/MOCK_ID/promise.follow/pubkey.${keypair.public}/MOCK_PROMISE`
|
|
)
|
|
assert.equal(
|
|
url,
|
|
`https://example.com/invite#pzp%3A%2F%2Finvite%2Fjoin%2Fdns%2Fexample.com%2Ftcp%2F8008%2Fshse%2FHUB_PUBKEY.MOCK_TOKEN%2Ffollow%2FMOCK_ID%2Fpromise.follow%2Fpubkey.${keypair.public}%2FMOCK_PROMISE`
|
|
)
|
|
|
|
assert.ok(connectCalled)
|
|
assert.ok(createTokenCalled)
|
|
assert.ok(createPromiseCalled)
|
|
await p(local.close)()
|
|
})
|