Skip to content
This repository was archived by the owner on Feb 24, 2021. It is now read-only.

Commit 1fdbcc4

Browse files
committed
feat: add browser <-> nodejs test
1 parent 8fc1b47 commit 1fdbcc4

File tree

6 files changed

+122
-8
lines changed

6 files changed

+122
-8
lines changed

gulpfile.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
'use strict'
2+
3+
const gulp = require('gulp')
4+
const multiaddr = require('multiaddr')
5+
const secio = require('./src')
6+
const pull = require('pull-stream')
7+
8+
const WS = require('libp2p-websockets')
9+
10+
let listener
11+
const PeerId = require('peer-id')
12+
const peerNodeJSON = require('./test/peer-node.json')
13+
14+
gulp.task('test:browser:before', (done) => {
15+
// echo on an encrypted channel
16+
PeerId.createFromJSON(peerNodeJSON, (err, pid) => {
17+
if (err) {
18+
return done(err)
19+
}
20+
21+
const ws = new WS()
22+
const ma = multiaddr('/ip4/127.0.0.1/tcp/9090/ws')
23+
listener = ws.createListener((conn) => {
24+
secio.encrypt(pid, {
25+
public: pid._pubKey,
26+
private: pid._privKey
27+
}, conn, (err, conn) => {
28+
if (err) {
29+
return done(err)
30+
}
31+
pull(conn, conn)
32+
})
33+
})
34+
listener.listen(ma, done)
35+
})
36+
})
37+
38+
gulp.task('test:browser:after', (done) => {
39+
listener.close(done)
40+
})
41+
42+
require('aegir/gulp')(gulp)

package.json

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,25 @@
2626
"license": "MIT",
2727
"dependencies": {
2828
"async": "^2.1.2",
29-
"debug": "^2.2.0",
29+
"debug": "^2.3.0",
3030
"interface-connection": "^0.3.0",
3131
"libp2p-crypto": "^0.7.0",
3232
"multihashing-async": "^0.2.0",
3333
"peer-id": "^0.8.0",
34-
"protocol-buffers": "^3.1.7",
34+
"protocol-buffers": "^3.1.8",
3535
"pull-defer": "^0.2.2",
3636
"pull-handshake": "^1.1.4",
3737
"pull-length-prefixed": "^1.2.0",
3838
"pull-stream": "^3.5.0"
3939
},
4040
"devDependencies": {
41-
"aegir": "^9.0.1",
41+
"aegir": "^9.1.1",
4242
"benchmark": "^2.1.2",
4343
"chai": "^3.5.0",
44+
"libp2p-websockets": "^0.9.1",
4445
"multistream-select": "^0.13.0",
4546
"pre-commit": "^1.1.3",
47+
"pull-goodbye": "0.0.1",
4648
"pull-pair": "^1.1.0",
4749
"pull-pushable": "^2.0.1"
4850
},
@@ -67,4 +69,4 @@
6769
"Richard Littauer <[email protected]>",
6870
"greenkeeperio-bot <[email protected]>"
6971
]
70-
}
72+
}

test/browser.js

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/* eslint-env mocha */
2+
'use strict'
3+
4+
const expect = require('chai').expect
5+
const multiaddr = require('multiaddr')
6+
const pull = require('pull-stream')
7+
const pullGoodbye = require('pull-goodbye')
8+
9+
const secio = require('../src')
10+
const WS = require('libp2p-websockets')
11+
const PeerId = require('peer-id')
12+
const peerBrowserJSON = require('./peer-browser.json')
13+
14+
describe('secio browser <-> nodejs', () => {
15+
const ma = multiaddr('/ip4/127.0.0.1/tcp/9090/ws')
16+
let ws
17+
let conn
18+
let pid
19+
let encryptedConn
20+
21+
before((done) => {
22+
PeerId.createFromJSON(peerBrowserJSON, (err, _pid) => {
23+
expect(err).to.not.exist
24+
25+
pid = _pid
26+
ws = new WS()
27+
expect(ws).to.exist
28+
conn = ws.dial(ma, (err) => {
29+
expect(err).to.not.exist
30+
done()
31+
})
32+
})
33+
})
34+
35+
it('encrypt', (done) => {
36+
secio.encrypt(pid, {
37+
public: pid._pubKey,
38+
private: pid._privKey
39+
}, conn, (err, _encryptedConn) => {
40+
expect(err).to.not.exist
41+
encryptedConn = _encryptedConn
42+
done()
43+
})
44+
})
45+
46+
it('echo', (done) => {
47+
const message = 'Hello World!'
48+
49+
const s = pullGoodbye({
50+
source: pull.values([message]),
51+
sink: pull.collect((err, results) => {
52+
expect(err).to.not.exist
53+
expect(results).to.be.eql([message])
54+
done()
55+
})
56+
})
57+
58+
pull(s, encryptedConn, s)
59+
})
60+
})

test/index.spec.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,18 +102,18 @@ describe('libp2p-secio', () => {
102102
})
103103
})
104104

105-
function createSession (insecure, cb) {
105+
function createSession (insecure, callback) {
106106
crypto.generateKeyPair('RSA', 2048, (err, key) => {
107107
if (err) {
108-
return cb(err)
108+
return callback(err)
109109
}
110110

111111
key.public.hash((err, digest) => {
112112
if (err) {
113-
return cb(err)
113+
return callback(err)
114114
}
115115

116-
cb(null, secio.encrypt(new PeerId(digest, key), key, insecure))
116+
callback(null, secio.encrypt(new PeerId(digest, key), key, insecure))
117117
})
118118
})
119119
}

test/peer-browser.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"id": "QmWDLy5Q31n9TbPsoE49NjagV8uJbNbixQ4JbyB2WcnNmv",
3+
"privKey": "CAASpwkwggSjAgEAAoIBAQCi3wtY+s70DLgeMKk7BhQq0Xmpkl1Z9YHaP+8ERM2slqPYSAnG1zaOP4iy+O0AAji+7/pIRGVYyY2oBmCM7Uo2jZZZHEAcJ0Ih4vIT7jwnqdOUrEkkiHxgVCq2+yxgY85LpiIDzJIme3Atc90roPfJi5wpgxM8Yvxwh/Jpr0it4VrNxWSQmGgxfrK9La5ezfFSs/MrU+aA8Qh+vMkRQHsBVyr30pzK1bD2l3kkg5hC48wClduoYHB1IGAOgx14Hsu+4qX/tpu7c3HXL9mPvjHsddqeKiHIs1u2kkXKw+myDyIJr/FVPHQxxpuOnA+GmPVQI5d+INLVzCV88CfzqKwpAgMBAAECggEATYj/HvHvWbFAaWbi+W1QZn3ofDhoZm4AzkSHZbHXc+UWxNyugtFrcFaAnirwsINePk+CB6s/z//LhwTaK9y+6q+Gto9DWeO6kOU4NxK/4mXviqRmAZVUGIuY9hkmrBB3Yf4JzWMy5Ez5PzocPSvZKkJjKkPzAVliMbQWTAedAuE1eq9b5Nb5MQJq/1a9RYFdFm0kYy7FgwQbMsoXc3Uv5s+TJGwXzhsUFH6MpNZGniUsS6wiwWPLjdGKebUrf/pD8Z7nwscSQBKzkyrHVBGfImOtNcgM+BwesN+WUFqyAJRvPv0SNVu+KwkVx3jEqAaIf5vxO62TNok+TuBxQP8HrQKBgQDai5dWEy08EZOyuM0MlU3fXhpUFczSrtxw1Ty4a4ma+jQitcaCnUdgA1keQhTpLYoSqE0NL8uykTC3FcRF2AQf0jTGZ94smbu5cJkWWh5NoIW2EnkSQwfPMjHGKjwKhltIbiAxlnbxmpLd3CTTx7eVXB5a5WgVih1fYOThoXzKTwKBgQC+yNLQ7FkxsCW3wRQ6ANk/6mQEYpuX6ap2TtxykvwCwuWbadufeRAZb52gbiNUgClqT7h0Kper6mBqhs7ubU55DVJMUTLKqWLQVkHdkQIoau5uXaYoX/1/bfc65BgHg61aUF93hJAYzv0NuEEX2UaLAXcpYfXe2Liv8AYvr9mcBwKBgDPDqpXdtvIqa6SCdzcKykYlAPF3tGsWteoX5+j6t744k07BZYKchEJuqJYtKszMV47xxEZiUso576L+Cd5NOzTaUlvIUGyaAUf8LpaHw/O5GNK2b2zu6ZOfHQEGEfCgQFDYnNGCBSxW44CfWy26eXZsOlhnTA8GBs0Ho076NBerAoGAV/5iFZBdFyjKTLVV8ebATNV7qfYdE3TndUesL4ARkeh4ZDTv4d7BiSnMxtjlnKy77Ve1mIaoi9c+/wMMYDW0EusNATwWNBjqBXMzT9D48NFZBThWUZrsXaDHfbcESjr2cohNb9+JYpfdaT2JcEl7WtOjNUgEUfMdQ7Bt+gKeWHMCgYEApoS8oknM4AtveP/w3YYSLSILbNMx2sYDNJ6HGDdg9ajjpTez4PS+BgqhcMkzMd/oVB7VD2n8As35LxppfHtSEPW1II/h3Phtd//HT8Wsu2L0BRoY/JIMLCbTwTSbtVr2+w9vWz7pg2Q2r0uScYadYNpMNF2uXC6vd6TFyCc17ic=",
4+
"pubKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCi3wtY+s70DLgeMKk7BhQq0Xmpkl1Z9YHaP+8ERM2slqPYSAnG1zaOP4iy+O0AAji+7/pIRGVYyY2oBmCM7Uo2jZZZHEAcJ0Ih4vIT7jwnqdOUrEkkiHxgVCq2+yxgY85LpiIDzJIme3Atc90roPfJi5wpgxM8Yvxwh/Jpr0it4VrNxWSQmGgxfrK9La5ezfFSs/MrU+aA8Qh+vMkRQHsBVyr30pzK1bD2l3kkg5hC48wClduoYHB1IGAOgx14Hsu+4qX/tpu7c3HXL9mPvjHsddqeKiHIs1u2kkXKw+myDyIJr/FVPHQxxpuOnA+GmPVQI5d+INLVzCV88CfzqKwpAgMBAAE="
5+
}

test/peer-node.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"id": "QmY2cwDxD3B2n1Tv9YiBKZXgKkKCkcS5r2sCJMu9oBcGBq",
3+
"privKey": "CAASqAkwggSkAgEAAoIBAQCfBFkPbclTBzE4W4hhuteYrK4qR3eQnfbwfR1LUPdNmZKZxnTuQmL86ZCQCBzolqbJVFWb+phs2y3+0jCt/pdwSAjWIO8A9PJBcavJzYhi9JLLg8wl96xIHqHHQ8JsD8np1RLOYFQ1w2jNrXkDO0RQXb62+7xSoSyG4Y8UrhT/n65fv3aGlhqcYh1Tz4DV1bWdXzEOfg3R+KGmMcbJT4eC0x04gvxZXlTOmI2YMW+DunK/RN8fmt9YJqqu/f2bed+cuGsmwqfX/grDjVRjSxK2QECGYXjxU7WIZMrqBvlkBc7sWFyp3KHFU8bZYvP6a6K/dgoTbQAcz/UJswGpE9j3AgMBAAECggEAFZNFci53Lmi/aOIicwAi2Hg1eU8RDfIg2yhenSVzKHg5x9uBagJf4+jc0G4JXhVys8ZZhzxNChgC+ZwTNshgS7+6UzNMuliBthdyM4NLigGdGTfcrxoXqgFd+edbrcXGo49hadbwFgtZYO60iJe2ASF3CuTE/IEZxYM9IpUsDDKqZ8/fToLQk80XQuupiqwx4X6Yon/XTSLnNBSMA/hnhuwjJjw90DQQs+OER4ixbS7ENCFrMvV2omtwHh+bo2bfFhdyzSrV2wiRIyQiP6cOT5k7AsHkz2xzU7novNAW3D0bXDYhlBpTWEvn3yoKKkYuYptP9lyA2hcGedoVCR1wYQKBgQD1zWUdgnf3BfpYB0E3gItAEAgy1dvGny39XGvRtFZCWfykNKCyjOe48lXntNAjQq22Leo4U4LQWb/PWkYlO3mm2Zt1Posyx6lBbFS6h+5dCFDPbC7zvf1QD5kyAtS93Xds8gX4YWQVd0jj3ov7f3FghlTjnc6udTPD1oWiaekeqwKBgQClnTo+WHf9ZPQtZzBNht/rqEYA1p6KiedsAR1cXYMhernafLQ5FnT4czp3gZTcnEAsTfBg4mp3j+dqxmN/YpPI6hRMQlbsi7Zv3ro7FivTUHBYdWC2OHu+fDbpqras8s6nRBilKzkcaMf5WPw+fQpcr+zor4fFM01oGxfBClo+5QKBgQAI6kc1l8rUGdJnqPOzmKT0UOCLP3h2LsXTP6vlcj4CsBLavdHqR/QLoDZ/be5yqPN1/RpWqqi+99JeKe8LYKnb5F6gFQGleNpptg0oqs95bljH/SuCyaxLYBV1W+btb//p4qlWxemEYcwx/5tiJtAs6RJhIxMg/r0+6CP2rRK4ewKBgQCWNPQOd87cVCPiyiRVLG8LHaPgPsesf0cV/izTCT1VsCnAsDoFTQjqDhiJK04IiO7rQAU02iYWKr6JaUX000OWhjfCsqiEAnOFI01lKca18c7zbAI7Qx94tNBZPixQ0Cf+LRTtOTajPaWh0cN2KZKsXiNRJ2LMyKr8MRZqTylqwQKBgCb6022/mnnJQQue3NpgOnm9hSnnmm+zNU74DhQbzf5Uod+hzlpQsQnH7q935KAZj7VQGxkb0w4ctwyggoQnljCtuT+8kNLmZd5bFmx9JfY5uqzhvOueC/AKJdQ0S61NVs5YqEUrmLPRvSG5TXH3swWcHt7ofOgTsdZTKPqduj5x",
4+
"pubKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCfBFkPbclTBzE4W4hhuteYrK4qR3eQnfbwfR1LUPdNmZKZxnTuQmL86ZCQCBzolqbJVFWb+phs2y3+0jCt/pdwSAjWIO8A9PJBcavJzYhi9JLLg8wl96xIHqHHQ8JsD8np1RLOYFQ1w2jNrXkDO0RQXb62+7xSoSyG4Y8UrhT/n65fv3aGlhqcYh1Tz4DV1bWdXzEOfg3R+KGmMcbJT4eC0x04gvxZXlTOmI2YMW+DunK/RN8fmt9YJqqu/f2bed+cuGsmwqfX/grDjVRjSxK2QECGYXjxU7WIZMrqBvlkBc7sWFyp3KHFU8bZYvP6a6K/dgoTbQAcz/UJswGpE9j3AgMBAAE="
5+
}

0 commit comments

Comments
 (0)