diff --git a/package-lock.json b/package-lock.json index c6fab065..44ea12af 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,7 +30,7 @@ "sodium-native": "^3.4.1", "ssb-bfe": "^3.7.0", "ssb-crut": "^4.6.2", - "ssb-keyring": "^5.6.0", + "ssb-keyring": "^7.0.0", "ssb-keys": "^8.5.0", "ssb-private-group-keys": "^0.4.1", "ssb-ref": "^2.16.0", @@ -5495,9 +5495,9 @@ "dev": true }, "node_modules/ssb-keyring": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/ssb-keyring/-/ssb-keyring-5.6.0.tgz", - "integrity": "sha512-6pLwJkcHzJcnmWgiAScYTwUbPYvMxGem4X25Y00rIukbVElhKZ2cx6bmeOpKdlVkCTdM+qc2/q3XLLGKsZoWwA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ssb-keyring/-/ssb-keyring-7.0.0.tgz", + "integrity": "sha512-HBeAFCdjqSLCiors10s+AHfaFm78ac97oqeWgDg9Es4gK2LUs/ZQ1DjoYH+BS4EnTh5yE+Y9E8ska4WWc0p4Dw==", "dependencies": { "charwise": "^3.0.1", "level": "^6.0.1", diff --git a/package.json b/package.json index 2269e2d1..d9797bdc 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "sodium-native": "^3.4.1", "ssb-bfe": "^3.7.0", "ssb-crut": "^4.6.2", - "ssb-keyring": "^5.6.0", + "ssb-keyring": "^7.0.0", "ssb-keys": "^8.5.0", "ssb-private-group-keys": "^0.4.1", "ssb-ref": "^2.16.0", diff --git a/test/api/add-new-author-listener.test.js b/test/api/add-new-author-listener.test.js index c1adae32..6ecd6f40 100644 --- a/test/api/add-new-author-listener.test.js +++ b/test/api/add-new-author-listener.test.js @@ -3,8 +3,6 @@ const { promisify: p } = require('util') const { Server, replicate } = require('../helpers') test('addNewAuthorListener', t => { - t.plan(6) - const admin = Server({ name: 'admin', debug: false }) // me const newPerson = Server({ name: 'newPerson', debug: false }) // some friend @@ -38,8 +36,13 @@ test('addNewAuthorListener', t => { t.equal(_groupId, groupId, 'newPerson, returns expected groupId') setTimeout(() => { - admin.close() - newPerson.close() + Promise.all([ + p(admin.close)(true), + p(newPerson.close)(true) + ]).then(()=>{ + if(numAdded === 2) t.end() + else t.fail("didn't get all listener events") + }) }, 1000) }) diff --git a/test/api/exclude-members.test.js b/test/api/exclude-members.test.js index a4f599a8..33336963 100644 --- a/test/api/exclude-members.test.js +++ b/test/api/exclude-members.test.js @@ -1,10 +1,12 @@ const test = require('tape') const { promisify: p } = require('util') +const ssbKeys = require('ssb-keys') const { Server, replicate, FeedId } = require('../helpers') test('tribes.excludeMembers', async t => { - const kaitiaki = Server() - const newPerson = Server() + const newPersonKeys = ssbKeys.generate() + const kaitiaki = Server({ name: 'kaitiaki' }) + const newPerson = Server({ name: 'newPerson', keys: newPersonKeys }) const name = id => { if (id === kaitiaki.id) return 'kaitiaki ' @@ -55,18 +57,42 @@ test('tribes.excludeMembers', async t => { const excludedList = await p(newPerson.tribes.list)() t.deepEqual(excludedList, [], "new person can't list any groups anymore") - } catch (err) { - t.fail(err) - } - await p(setTimeout)(500) + // excluding again to make us use the members tangle to calculate membership + await p(kaitiaki.tribes.excludeMembers)(groupId, [newPerson.id]).catch(err => t.error(err, err.message)) + + await p(kaitiaki.tribes.invite)( + groupId, [newPerson.id], {} + ) + + const reAddedAuthors = await p(kaitiaki.tribes.listAuthors)(groupId) + t.deepEqual(reAddedAuthors.sort(), [kaitiaki.id, newPerson.id].sort(), 're-added person is listed as a member') + + await p(replicate)({ from: kaitiaki, to: newPerson, live: false, name }) + + const newPersonBackInGroup = await p(newPerson.tribes.get)(groupId) + t.equal(newPersonBackInGroup.excluded, undefined, 'new person is not excluded anymore') + + await p(setTimeout)(500) + + await Promise.all([ + p(kaitiaki.close)(true), + p(newPerson.close)(true) + ]) + .then(() => t.pass('clients close')) + .catch((err) => t.error(err)) + + await p(setTimeout)(500) + + const newPerson2 = Server({ name: 'newPerson',keys: newPersonKeys, startUnclean: true }) - await Promise.all([ - p(kaitiaki.close)(true), - p(newPerson.close)(true) - ]) - .then(() => t.pass('clients close')) - .catch((err) => t.error(err)) + const stillInGroup = await p(newPerson2.tribes.get)(groupId) + t.equal(stillInGroup.excluded, undefined, 'new person is still not excluded after client restart') - t.end() + await p(setTimeout)(500) + + await p(newPerson2.close)(true) + } catch (err) { + t.fail(err) + } }) diff --git a/test/rebuild.test.js b/test/rebuild.test.js index 0e1c4bbf..a21f546b 100644 --- a/test/rebuild.test.js +++ b/test/rebuild.test.js @@ -1,5 +1,6 @@ const test = require('tape') const pull = require('pull-stream') +const { promisify: p } = require('util') const { Server, replicate, FeedId } = require('./helpers') @@ -166,9 +167,11 @@ test('rebuild (I am added to a group, then someone else is added)', t => { (err) => { if (seenMine === 20) t.equal(seenMine, 20, 'bob saw 20 messages from me') if (err) throw err - bob.close() - admin.close() - t.end() + + Promise.all([ + p(bob.close)(true), + p(admin.close)(true) + ]).then(()=>t.end()) } ) )