Commit 2584af0f0bc7b120e352272cee3f6a5f7ef14d2c
more test coverage!
Dominic Tarr committed on 12/21/2018, 1:06:32 AMParent: d8e63bc4e3cc6ca4565996990f626ed2a9742fd6
Files changed
test/accept2.js | changed |
test/accept3.js | changed |
test/accept4.js | changed |
test/accept5.js | changed |
test/error-without-pubs.js | added |
test/invite-with-pubs.js | added |
test/accept2.js | ||
---|---|---|
@@ -61,9 +61,9 @@ | ||
61 | 61 … | // var content = I.createInvite(seed, alice.id, {name: 'bob'}, {text: 'welcome to ssb!'}) |
62 | 62 … | // alice.publish(content, function (err, msg) { |
63 | 63 … | // I.verifyInvitePublic(msg.value) |
64 | 64 … | |
65 | - alice.userInvites.create({}, function (err, invite) { | |
65 … | + alice.userInvites.create({allowWithoutPubs: true}, function (err, invite) { | |
66 | 66 … | if(err) throw err |
67 | 67 … | var seed = invite.seed |
68 | 68 … | var invite_id = invite.invite |
69 | 69 … |
test/accept3.js | ||
---|---|---|
@@ -63,9 +63,9 @@ | ||
63 | 63 … | //in this test, we use a separate identity to create the invite, |
64 | 64 … | //to test multiple identity support, and also simulate confirmation by pub. |
65 | 65 … | alice.identities.create(function (err, carol_id) { |
66 | 66 … | if(err) throw err |
67 | - alice.userInvites.create({id: carol_id}, function (err, invite) { | |
67 … | + alice.userInvites.create({id: carol_id, allowWithoutPubs: true}, function (err, invite) { | |
68 | 68 … | if(err) throw err |
69 | 69 … | var seed = invite.seed |
70 | 70 … | var invite_id = invite.invite |
71 | 71 … |
test/accept4.js | ||
---|---|---|
@@ -55,9 +55,9 @@ | ||
55 | 55 … | }) |
56 | 56 … | |
57 | 57 … | tape('create an invite', function (t) { |
58 | 58 … | |
59 | - alice.userInvites.create({}, function (err, invite) { | |
59 … | + alice.userInvites.create({allowWithoutPubs: true}, function (err, invite) { | |
60 | 60 … | if(err) throw err |
61 | 61 … | var seed = invite.seed |
62 | 62 … | var invite_id = invite.invite |
63 | 63 … |
test/accept5.js | ||
---|---|---|
@@ -55,9 +55,9 @@ | ||
55 | 55 … | }) |
56 | 56 … | |
57 | 57 … | tape('create an invite', function (t) { |
58 | 58 … | |
59 | - alice.userInvites.create({}, function (err, invite) { | |
59 … | + alice.userInvites.create({allowWithoutPubs: true}, function (err, invite) { | |
60 | 60 … | if(err) throw err |
61 | 61 … | var seed = invite.seed |
62 | 62 … | var invite_id = invite.invite |
63 | 63 … |
test/error-without-pubs.js | ||
---|---|---|
@@ -1,0 +1,76 @@ | ||
1 … | +//WARNING: this test currently only passes | |
2 … | +//if the computer has a network. | |
3 … | +var crypto = require('crypto') | |
4 … | +var I = require('../valid') | |
5 … | +var createClient = require('ssb-client') | |
6 … | + | |
7 … | + | |
8 … | +var ssbKeys = require('ssb-keys') | |
9 … | +var tape = require('tape') | |
10 … | +var pull = require('pull-stream') | |
11 … | +var ref = require('ssb-ref') | |
12 … | + | |
13 … | +var createSbot = require('scuttlebot') | |
14 … | + .use(require('ssb-links')) | |
15 … | + .use({ | |
16 … | + name: 'replicate', version: '1.0.0', | |
17 … | + manifest: { request: 'sync' }, | |
18 … | + init: function () { | |
19 … | + return { request: function () {} } | |
20 … | + } | |
21 … | + }) | |
22 … | + .use(require('ssb-query')) | |
23 … | + .use(require('ssb-device-address')) | |
24 … | + .use(require('ssb-identities')) | |
25 … | + .use(require('ssb-friends')) | |
26 … | + .use(require('../')) | |
27 … | + | |
28 … | +function all(stream, cb) { | |
29 … | + return pull(stream, pull.collect(cb)) | |
30 … | +} | |
31 … | + | |
32 … | +var caps = { | |
33 … | + sign: crypto.randomBytes(32),//.toString('base64'), | |
34 … | + userInvite: crypto.randomBytes(32),//.toString('base64'), | |
35 … | + shs: crypto.randomBytes(32),//.toString('base64'), | |
36 … | +} | |
37 … | + | |
38 … | +var alice = createSbot({ | |
39 … | + temp: true, | |
40 … | + timeout: 1000, | |
41 … | + port: 12342, | |
42 … | + keys:ssbKeys.generate(), | |
43 … | + caps: caps | |
44 … | +}) | |
45 … | + | |
46 … | +function toId(msg) { | |
47 … | + return '%'+ssbKeys.hash(JSON.stringify(msg, null, 2)) | |
48 … | +} | |
49 … | + | |
50 … | +tape('create an invite', function (t) { | |
51 … | + | |
52 … | + var seed = crypto.randomBytes(32) | |
53 … | + | |
54 … | + //without the pubs option, do not allow creating | |
55 … | + //an invite. | |
56 … | + alice.userInvites.create({}, function (err, invite) { | |
57 … | + t.ok(err) | |
58 … | + alice.close() | |
59 … | + t.end() | |
60 … | + }) | |
61 … | +}) | |
62 … | + | |
63 … | + | |
64 … | + | |
65 … | + | |
66 … | + | |
67 … | + | |
68 … | + | |
69 … | + | |
70 … | + | |
71 … | + | |
72 … | + | |
73 … | + | |
74 … | + | |
75 … | + | |
76 … | + |
test/invite-with-pubs.js | |||
---|---|---|---|
@@ -1,0 +1,138 @@ | |||
1 … | +var crypto = require('crypto') | ||
2 … | +var createClient = require('ssb-client') | ||
3 … | +var explain = require('explain-error') | ||
4 … | + | ||
5 … | +var ssbKeys = require('ssb-keys') | ||
6 … | +var tape = require('tape') | ||
7 … | +var pull = require('pull-stream') | ||
8 … | +var ref = require('ssb-ref') | ||
9 … | + | ||
10 … | +var createSbot = require('scuttlebot') | ||
11 … | + .use(require('ssb-links')) | ||
12 … | + .use(require('scuttlebot/plugins/replicate')) | ||
13 … | + .use(require('scuttlebot/plugins/gossip')) | ||
14 … | + .use(require('ssb-query')) | ||
15 … | + .use(require('ssb-device-address')) | ||
16 … | + .use(require('ssb-identities')) | ||
17 … | + .use(require('ssb-friends')) | ||
18 … | + .use(require('../')) | ||
19 … | + | ||
20 … | +function all(stream, cb) { | ||
21 … | + return pull(stream, pull.collect(cb)) | ||
22 … | +} | ||
23 … | + | ||
24 … | +var caps = { | ||
25 … | + sign: crypto.randomBytes(32), | ||
26 … | + userInvite: crypto.randomBytes(32), | ||
27 … | + shs: crypto.randomBytes(32), | ||
28 … | +} | ||
29 … | + | ||
30 … | +var alice = createSbot({ | ||
31 … | + temp: true, | ||
32 … | + timeout: 1000, | ||
33 … | + port: 12342, | ||
34 … | + keys:ssbKeys.generate(), | ||
35 … | + caps: caps | ||
36 … | +}) | ||
37 … | + | ||
38 … | +var bob = createSbot({ | ||
39 … | + temp: true, | ||
40 … | + timeout: 1000, | ||
41 … | + port: 12343, | ||
42 … | + keys:ssbKeys.generate(), | ||
43 … | + caps: caps | ||
44 … | +}) | ||
45 … | + | ||
46 … | +var carol = createSbot({ | ||
47 … | + temp: true, | ||
48 … | + timeout: 1000, | ||
49 … | + port: 12344, | ||
50 … | + keys:ssbKeys.generate(), | ||
51 … | + caps: caps | ||
52 … | +}) | ||
53 … | + | ||
54 … | +tape('setup', function (t) { | ||
55 … | + | ||
56 … | + //once alice has 3 messages (one from her, and two from carol) | ||
57 … | + //can move to next test. | ||
58 … | + var a = 3 | ||
59 … | + alice.post(function (data) { | ||
60 … | + if(--a) return | ||
61 … | + t.end() | ||
62 … | + }) | ||
63 … | + | ||
64 … | + carol.deviceAddress.announce({ | ||
65 … | + address:carol.getAddress('device'), | ||
66 … | + availability: 1 | ||
67 … | + }, function (err, msg) { | ||
68 … | + if(err) throw err | ||
69 … | + t.ok(msg) | ||
70 … | + alice.publish({ | ||
71 … | + type: 'contact', contact: carol.id, following: true | ||
72 … | + }, function (err, msg) { | ||
73 … | + if(err) throw err | ||
74 … | + t.ok(msg) | ||
75 … | + carol.publish({ | ||
76 … | + type: 'contact', contact: alice.id, following: true | ||
77 … | + }, function (err, msg) { | ||
78 … | + if(err) throw err | ||
79 … | + t.ok(msg) | ||
80 … | + alice.connect(carol.getAddress(), function (err) { | ||
81 … | + if(err) throw err | ||
82 … | + }) | ||
83 … | + }) | ||
84 … | + }) | ||
85 … | + }) | ||
86 … | +}) | ||
87 … | + | ||
88 … | +var invite | ||
89 … | +tape('create-invite, with automatic pubs', function (t) { | ||
90 … | + var n = 1 | ||
91 … | + //wait until carol has received alice's invite | ||
92 … | + carol.post(function (data) { | ||
93 … | + if(data.value.content.type === 'user-invite') { | ||
94 … | + console.log('invit?', data) | ||
95 … | + if(--n) return | ||
96 … | + t.end() | ||
97 … | + } | ||
98 … | + }) | ||
99 … | + | ||
100 … | + setTimeout(function () { | ||
101 … | + alice.userInvites.create({}, function (err, _invite) { | ||
102 … | + if(err) throw err | ||
103 … | + console.log('create invite') | ||
104 … | + invite = _invite | ||
105 … | + }) | ||
106 … | + }) | ||
107 … | + | ||
108 … | +}) | ||
109 … | + | ||
110 … | +tape('accept invite', function (t) { | ||
111 … | + alice.get(invite.invite, function (err, invite_msg) { | ||
112 … | + if(err) throw err | ||
113 … | + t.deepEqual(invite.pubs, [carol.getAddress('device')]) | ||
114 … | + | ||
115 … | + bob.userInvites.openInvite(invite, function (err, _invite_msg) { | ||
116 … | + if(err) throw explain(err, 'error while opening invite') | ||
117 … | + t.deepEqual(_invite_msg, invite_msg) | ||
118 … | + bob.userInvites.acceptInvite(invite, function (err) { | ||
119 … | + if(err) throw err | ||
120 … | + t.end() | ||
121 … | + }) | ||
122 … | + }) | ||
123 … | + }) | ||
124 … | +}) | ||
125 … | + | ||
126 … | +//there is another race here. seems flumedb | ||
127 … | +//doesn't like it if you close and immediately | ||
128 … | +//it receives a message. (should just drop that though) | ||
129 … | +//we don't need to fix that just to get user-invites working, though. | ||
130 … | +tape('cleanup', function (t) { | ||
131 … | + setTimeout(function () { | ||
132 … | + alice.close() | ||
133 … | + carol.close() | ||
134 … | + bob.close() | ||
135 … | + t.end() | ||
136 … | + }, 1000) | ||
137 … | +}) | ||
138 … | + |
Built with git-ssb-web