grenache-nodejs-http 1.0.2 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,119 +1,72 @@
1
- /* eslint-env mocha */
1
+ 'use strict'
2
2
 
3
- const assert = require('assert')
4
- const fs = require('fs')
5
- const path = require('path')
3
+ const test = require('brittle')
6
4
  const { PassThrough } = require('stream')
7
- const { PeerRPCClient, PeerRPCServer } = require('../')
8
- const Link = require('grenache-nodejs-link')
9
- const setupHooks = require('./before-after.js')
10
-
11
- const PORT = 1337
12
- let link, peer, peerSrvStr, serviceStr, stop
13
- describe('RPC integration', () => {
14
- setupHooks((grapes) => {
15
- link = new Link({
16
- grape: 'http://127.0.0.1:30001'
17
- })
18
- link.start()
19
-
20
- peer = new PeerRPCClient(link, {
21
- secure: {
22
- key: fs.readFileSync(path.join(__dirname, './certs/client1-key.pem')),
23
- cert: fs.readFileSync(path.join(__dirname, './certs/client1-crt.pem')),
24
- ca: fs.readFileSync(path.join(__dirname, './certs/ca-crt.pem')),
25
- rejectUnauthorized: false // take care, can be dangerous in production!
26
- }
27
- })
28
- peer.init()
29
-
30
- peerSrvStr = new PeerRPCServer(link, {
31
- secure: {
32
- key: fs.readFileSync(path.join(__dirname, './certs/server-key.pem')),
33
- cert: fs.readFileSync(path.join(__dirname, './certs/server-crt.pem')),
34
- ca: fs.readFileSync(path.join(__dirname, './certs/ca-crt.pem')),
35
- requestCert: true,
36
- rejectUnauthorized: false // take care, can be dangerous in production!
37
- },
38
- timeout: 300000,
39
- disableBuffered: true
40
- })
41
-
42
- peerSrvStr.init()
43
- serviceStr = peerSrvStr.transport('stream')
44
- serviceStr.listen(PORT)
5
+ const { rpcTestCase } = require('./before-after')
45
6
 
46
- link.announce('rpc_stream', serviceStr.port, {}, (err, res) => {
47
- if (err) throw Error('error in announce, setup')
48
- })
7
+ const rpcTest = rpcTestCase({ transport: 'stream', isSecure: true, disableBuffered: true })
49
8
 
50
- stop = () => {
51
- peer.stop()
52
- link.stop()
53
- serviceStr.stop()
54
- }
55
- })
56
-
57
- it('streaming works, objects, buffered client, reply handler', (done) => {
58
- serviceStr.on('stream', (req, res, meta, handler) => {
59
- assert.strictEqual(meta.isStream, false)
9
+ test('RPC integration', async (t) => {
10
+ await t.test('streaming works, objects, buffered client, reply handler', { timeout: 7000 }, rpcTest(async ({ t, service, peer }) => {
11
+ service.on('stream', (req, res, meta, handler) => {
12
+ t.is(meta.isStream, false)
60
13
 
61
14
  req.on('data', (d) => {
62
15
  const [rid, key, args] = JSON.parse(d.toString())
63
16
 
64
- assert.deepStrictEqual(args, { hello: 'world' })
65
- assert.ok(typeof rid === 'string')
66
- assert.strictEqual(key, 'rpc_stream')
17
+ t.alike(args, { hello: 'world' })
18
+ t.ok(typeof rid === 'string')
19
+ t.is(key, 'rpc_test')
67
20
 
68
21
  handler.reply(rid, null, { hello: 'helloworld' })
69
22
  })
70
23
  })
71
24
 
72
25
  const opts = { timeout: 100000 }
73
- peer.request('rpc_stream', { hello: 'world' }, opts, (err, result) => {
74
- if (err) throw err
75
- assert.deepStrictEqual(result, { hello: 'helloworld' })
76
-
77
- stop()
78
- done()
26
+ await new Promise(resolve => {
27
+ peer.request('rpc_test', { hello: 'world' }, opts, (err, result) => {
28
+ if (err) throw err
29
+ t.alike(result, { hello: 'helloworld' })
30
+ resolve()
31
+ })
79
32
  })
80
- }).timeout(7000)
33
+ }))
81
34
 
82
- it('streaming works, string, buffered client, reply handler', (done) => {
83
- serviceStr.on('stream', (req, res, meta, handler) => {
84
- assert.strictEqual(meta.isStream, false)
35
+ await t.test('streaming works, string, buffered client, reply handler', { timeout: 7000 }, rpcTest(async ({ t, service, peer }) => {
36
+ service.on('stream', (req, res, meta, handler) => {
37
+ t.is(meta.isStream, false)
85
38
 
86
39
  req.on('data', (d) => {
87
40
  const [rid, key, args] = JSON.parse(d.toString())
88
41
 
89
- assert.strictEqual(args, 'hello')
90
- assert.ok(typeof rid === 'string')
91
- assert.strictEqual(key, 'rpc_stream')
42
+ t.is(args, 'hello')
43
+ t.ok(typeof rid === 'string')
44
+ t.is(key, 'rpc_test')
92
45
 
93
46
  handler.reply(rid, null, 'world')
94
47
  })
95
48
  })
96
49
 
97
50
  const opts = { timeout: 100000 }
98
- peer.request('rpc_stream', 'hello', opts, (err, result) => {
99
- if (err) throw err
100
- assert.strictEqual(result, 'world')
101
-
102
- stop()
103
- done()
51
+ await new Promise(resolve => {
52
+ peer.request('rpc_test', 'hello', opts, (err, result) => {
53
+ if (err) throw err
54
+ t.is(result, 'world')
55
+ resolve()
56
+ })
104
57
  })
105
- }).timeout(7000)
58
+ }))
106
59
 
107
- it('streaming works, string, buffered client, stream sent back', (done) => {
108
- serviceStr.on('stream', (req, res, meta, handler) => {
109
- assert.strictEqual(meta.isStream, false)
60
+ await t.test('streaming works, string, buffered client, stream sent back', { timeout: 7000 }, rpcTest(async ({ t, service, peer }) => {
61
+ service.on('stream', (req, res, meta) => {
62
+ t.is(meta.isStream, false)
110
63
 
111
64
  req.on('data', (d) => {
112
65
  const [rid, key, args] = JSON.parse(d.toString())
113
66
 
114
- assert.strictEqual(args, 'hello')
115
- assert.ok(typeof rid === 'string')
116
- assert.strictEqual(key, 'rpc_stream')
67
+ t.is(args, 'hello')
68
+ t.ok(typeof rid === 'string')
69
+ t.is(key, 'rpc_test')
117
70
 
118
71
  const writable = new PassThrough()
119
72
  const payload = JSON.stringify([rid, null, 'world2'])
@@ -124,29 +77,29 @@ describe('RPC integration', () => {
124
77
  })
125
78
 
126
79
  const opts = { timeout: 100000 }
127
- peer.request('rpc_stream', 'hello', opts, (err, result) => {
128
- if (err) throw err
129
- assert.strictEqual(result, 'world2')
130
-
131
- stop()
132
- done()
80
+ await new Promise(resolve => {
81
+ peer.request('rpc_test', 'hello', opts, (err, result) => {
82
+ if (err) throw err
83
+ t.is(result, 'world2')
84
+ resolve()
85
+ })
133
86
  })
134
- }).timeout(7000)
87
+ }))
135
88
 
136
- it('streaming works, buffer, stream client, stream on server', (done) => {
89
+ await t.test('streaming works, buffer, stream client, stream on server', { timeout: 7000 }, rpcTest(async ({ t, service, peer }) => {
137
90
  const reqPayload = Buffer.from('megalargefile')
138
91
  const resPayload = Buffer.from('superlargefile')
139
92
 
140
- serviceStr.on('stream', (req, res, meta, handler) => {
141
- assert.strictEqual(meta.isStream, true)
93
+ service.on('stream', (req, res, meta) => {
94
+ t.is(meta.isStream, true)
142
95
 
143
96
  req.on('data', (d) => {
144
97
  const [rid, key] = meta.infoHeaders
145
98
 
146
- assert.ok(d.equals(reqPayload), 'received Buffer equals payload on server')
99
+ t.ok(d.equals(reqPayload), 'received Buffer equals payload on server')
147
100
 
148
- assert.ok(typeof rid === 'string')
149
- assert.strictEqual(key, 'rpc_stream')
101
+ t.ok(typeof rid === 'string')
102
+ t.is(key, 'rpc_test')
150
103
 
151
104
  const writable = new PassThrough()
152
105
  writable.pipe(res)
@@ -155,42 +108,44 @@ describe('RPC integration', () => {
155
108
  })
156
109
  })
157
110
 
158
- const req = peer.stream('rpc_stream', {
111
+ const req = peer.stream('rpc_test', {
159
112
  timeout: 10000
160
113
  })
161
114
 
162
- req
163
- .on('data', (data) => {
164
- assert.ok(data.equals(resPayload), 'received Buffer equals payload on client')
165
-
166
- stop()
167
- done()
168
- })
169
- .on('end', () => {})
170
- .on('error', (e) => { console.error(e) })
115
+ const p = new Promise(resolve => {
116
+ req
117
+ .on('data', (data) => {
118
+ t.ok(data.equals(resPayload), 'received Buffer equals payload on client')
119
+ resolve()
120
+ })
121
+ .on('end', () => {})
122
+ .on('error', (e) => { console.error(e) })
123
+ })
171
124
 
172
125
  const writable = new PassThrough()
173
126
  writable.write(reqPayload)
174
127
  writable.pipe(req)
175
- }).timeout(7000)
176
128
 
177
- it('streaming works, buffer, stream client, stream on server, additional headers', (done) => {
129
+ await p
130
+ }))
131
+
132
+ await t.test('streaming works, buffer, stream client, stream on server, additional headers', { timeout: 7000 }, rpcTest(async ({ t, service, peer }) => {
178
133
  const reqPayload = Buffer.from('megalargefile')
179
134
  const resPayload = Buffer.from('superlargefile')
180
135
 
181
- serviceStr.on('stream', (req, res, meta, handler) => {
182
- assert.strictEqual(meta.isStream, true)
136
+ service.on('stream', (req, res, meta) => {
137
+ t.is(meta.isStream, true)
183
138
 
184
139
  req.on('data', (d) => {
185
140
  const [rid, key] = meta.infoHeaders
186
141
 
187
- assert.ok(d.equals(reqPayload), 'received Buffer equals payload on server')
142
+ t.ok(d.equals(reqPayload), 'received Buffer equals payload on server')
188
143
 
189
- assert.ok(typeof rid === 'string')
190
- assert.strictEqual(key, 'rpc_stream')
144
+ t.ok(typeof rid === 'string')
145
+ t.is(key, 'rpc_test')
191
146
 
192
- assert.strictEqual(meta.action, 'uploadPublic')
193
- assert.strictEqual(meta.args.foo, 'bar')
147
+ t.is(meta.action, 'uploadPublic')
148
+ t.is(meta.args.foo, 'bar')
194
149
 
195
150
  const writable = new PassThrough()
196
151
  writable.pipe(res)
@@ -199,7 +154,7 @@ describe('RPC integration', () => {
199
154
  })
200
155
  })
201
156
 
202
- const req = peer.stream('rpc_stream', {
157
+ const req = peer.stream('rpc_test', {
203
158
  timeout: 10000,
204
159
  headers: {
205
160
  _a: 'uploadPublic',
@@ -207,18 +162,20 @@ describe('RPC integration', () => {
207
162
  }
208
163
  })
209
164
 
210
- req
211
- .on('data', (data) => {
212
- assert.ok(data.equals(resPayload), 'received Buffer equals payload on client')
213
-
214
- stop()
215
- done()
216
- })
217
- .on('end', () => {})
218
- .on('error', (e) => { console.error(e) })
165
+ const p = new Promise(resolve => {
166
+ req
167
+ .on('data', (data) => {
168
+ t.ok(data.equals(resPayload), 'received Buffer equals payload on client')
169
+ resolve()
170
+ })
171
+ .on('end', () => {})
172
+ .on('error', (e) => { console.error(e) })
173
+ })
219
174
 
220
175
  const writable = new PassThrough()
221
176
  writable.write(reqPayload)
222
177
  writable.pipe(req)
223
- }).timeout(7000)
178
+
179
+ await p
180
+ }))
224
181
  })
@@ -1,96 +1,48 @@
1
- /* eslint-env mocha */
1
+ 'use strict'
2
2
 
3
- const assert = require('assert')
4
- const fs = require('fs')
5
- const path = require('path')
6
- const { PeerRPCClient, PeerRPCServer } = require('../')
7
- const Link = require('grenache-nodejs-link')
8
- const setupHooks = require('./before-after.js')
3
+ const test = require('brittle')
4
+ const { rpcTestCase } = require('./before-after')
9
5
 
10
- const PORT = 1337
11
- let link, peer, peerSrv, service, stop
12
- describe('RPC integration', () => {
13
- setupHooks((grapes) => {
14
- link = new Link({
15
- grape: 'http://127.0.0.1:30001'
16
- })
17
- link.start()
18
-
19
- peer = new PeerRPCClient(link, {
20
- secure: {
21
- key: fs.readFileSync(path.join(__dirname, './certs/client1-key.pem')),
22
- cert: fs.readFileSync(path.join(__dirname, './certs/client1-crt.pem')),
23
- ca: fs.readFileSync(path.join(__dirname, './certs/ca-crt.pem')),
24
- rejectUnauthorized: false // take care, can be dangerous in production!
25
- }
26
- })
27
- peer.init()
28
-
29
- peerSrv = new PeerRPCServer(link, {
30
- secure: {
31
- key: fs.readFileSync(path.join(__dirname, './certs/server-key.pem')),
32
- cert: fs.readFileSync(path.join(__dirname, './certs/server-crt.pem')),
33
- ca: fs.readFileSync(path.join(__dirname, './certs/ca-crt.pem')),
34
- requestCert: true,
35
- rejectUnauthorized: false // take care, can be dangerous in production!
36
- },
37
- timeout: 300000
38
- })
39
-
40
- peerSrv.init()
41
- service = peerSrv.transport('server')
42
- service.listen(PORT)
43
-
44
- link.announce('rpc_test', service.port, {}, (err, res) => {
45
- if (err) throw Error('error in announce, setup')
46
- })
47
-
48
- stop = () => {
49
- peer.stop()
50
- link.stop()
51
- service.stop()
52
- }
53
- })
6
+ const rpcTest = rpcTestCase({ transport: 'server', isSecure: true })
54
7
 
55
- it('secure request, objects', (done) => {
8
+ test('RPC integration', async (t) => {
9
+ await t.test('secure request, objects', { timeout: 7000 }, rpcTest(async ({ t, service, peer }) => {
56
10
  service.on('request', (rid, key, payload, handler, cert) => {
57
- assert.ok(typeof rid === 'string')
58
- assert.strictEqual(key, 'rpc_test')
59
- assert.deepStrictEqual(payload, { hello: 'world' })
60
- assert.strictEqual(cert.fingerprint, 'E1:63:C1:46:B3:B6:46:3B:5E:92:98:34:40:A1:AB:FB:0E:92:D0:76')
11
+ t.ok(typeof rid === 'string')
12
+ t.is(key, 'rpc_test')
13
+ t.alike(payload, { hello: 'world' })
14
+ t.is(cert.fingerprint, 'E1:63:C1:46:B3:B6:46:3B:5E:92:98:34:40:A1:AB:FB:0E:92:D0:76')
61
15
 
62
16
  handler.reply(null, { hello: 'helloworld' })
63
17
  })
64
18
 
65
19
  const opts = { timeout: 100000 }
66
- peer.request('rpc_test', { hello: 'world' }, opts, (err, result) => {
67
- if (err) throw err
68
-
69
- assert.deepStrictEqual(result, { hello: 'helloworld' })
70
-
71
- stop()
72
- done()
20
+ await new Promise(resolve => {
21
+ peer.request('rpc_test', { hello: 'world' }, opts, (err, result) => {
22
+ if (err) throw err
23
+ t.alike(result, { hello: 'helloworld' })
24
+ resolve()
25
+ })
73
26
  })
74
- }).timeout(7000)
27
+ }))
75
28
 
76
- it('secure map, strings', (done) => {
29
+ await t.test('secure map, strings', { timeout: 7000 }, rpcTest(async ({ t, service, peer }) => {
77
30
  service.on('request', (rid, key, payload, handler, cert) => {
78
- assert.ok(typeof rid === 'string')
79
- assert.strictEqual(key, 'rpc_test')
80
- assert.strictEqual(payload, 'hello')
81
- assert.strictEqual(cert.fingerprint, 'E1:63:C1:46:B3:B6:46:3B:5E:92:98:34:40:A1:AB:FB:0E:92:D0:76')
31
+ t.ok(typeof rid === 'string')
32
+ t.is(key, 'rpc_test')
33
+ t.is(payload, 'hello')
34
+ t.is(cert.fingerprint, 'E1:63:C1:46:B3:B6:46:3B:5E:92:98:34:40:A1:AB:FB:0E:92:D0:76')
82
35
 
83
36
  handler.reply(null, 'world')
84
37
  })
85
38
 
86
39
  const opts = { timeout: 100000 }
87
- peer.map('rpc_test', 'hello', opts, (err, result) => {
88
- if (err) throw err
89
-
90
- assert.deepStrictEqual(result, ['world'])
91
-
92
- stop()
93
- done()
94
- })
95
- }).timeout(7000)
40
+ await new Promise(resolve => {
41
+ peer.map('rpc_test', 'hello', opts, (err, result) => {
42
+ if (err) throw err
43
+ t.alike(result, ['world'])
44
+ resolve()
45
+ })
46
+ })
47
+ }))
96
48
  })