diff options
| author | Andrej Mihajlov <and@mullvad.net> | 2018-07-16 20:54:39 +0200 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2018-07-16 20:54:39 +0200 |
| commit | 508fc0775e62f9361df2814cad5229b7706d4095 (patch) | |
| tree | 055ad745e22cb3b1cbbe91571d57a08070d4a525 /test | |
| parent | 8e219adbcc3523badf5a0351ca4a8e91596b4114 (diff) | |
| parent | 313d3bf47cd3cc91bc34143deaa930d4bbea14ce (diff) | |
| download | mullvadvpn-508fc0775e62f9361df2814cad5229b7706d4095.tar.xz mullvadvpn-508fc0775e62f9361df2814cad5229b7706d4095.zip | |
Merge branch 'add-eslint-promises'
Diffstat (limited to 'test')
| -rw-r--r-- | test/jsonrpc-transport.spec.js | 97 | ||||
| -rw-r--r-- | test/setup/renderer.js | 2 |
2 files changed, 36 insertions, 63 deletions
diff --git a/test/jsonrpc-transport.spec.js b/test/jsonrpc-transport.spec.js index 124bba8f00..1f36be83a6 100644 --- a/test/jsonrpc-transport.spec.js +++ b/test/jsonrpc-transport.spec.js @@ -19,7 +19,7 @@ describe('JSON RPC transport', () => { server.close(); }); - it('should send as soon as the websocket connects', (done) => { + it('should send as soon as the websocket connects', () => { server.on('message', (msg) => { const { payload } = jsonrpc.parse(msg); @@ -28,19 +28,14 @@ describe('JSON RPC transport', () => { } }); - transport - .send('hello') - .then(() => { - done(); - }) - .catch((error) => { - done(error); - }); + const sendPromise = transport.send('hello'); transport.connect(WEBSOCKET_URL); + + return expect(sendPromise).to.eventually.be.fulfilled; }); - it('should reject failed jsonrpc requests', (done) => { + it('should reject failed jsonrpc requests', () => { server.on('message', (msg) => { const { payload } = jsonrpc.parse(msg); @@ -53,17 +48,11 @@ describe('JSON RPC transport', () => { } }); - transport.send('invalid-method').catch((error) => { - try { - expect(error.code).to.equal(-32601); - expect(error.message).to.contain('Method not found'); - done(); - } catch (error) { - done(error); - } - }); + const sendPromise = transport.send('invalid-method'); transport.connect(WEBSOCKET_URL); + + return expect(sendPromise).to.eventually.be.rejectedWith('Method not found'); }); it('should route reply to correct promise', () => { @@ -75,44 +64,29 @@ describe('JSON RPC transport', () => { } }); - const decoy = transport - .send('a decoy', [], 100) - .then(() => { - throw new Error('Should not be called'); - }) - .catch((error) => { - expect(error).to.be.an.instanceof(JsonRpcTransportTimeOutError); - }); - - const message = transport.send('a message', [], 100).then((reply) => { - expect(reply).to.equal('a reply'); - }); + const decoyPromise = transport.send('a decoy', [], 100); + const messagePromise = transport.send('a message', [], 100); transport.connect(WEBSOCKET_URL); - return Promise.all([message, decoy]); + return Promise.all([ + expect(messagePromise).to.eventually.be.equal('a reply'), + expect(decoyPromise).to.eventually.be.rejectedWith(JsonRpcTransportTimeOutError), + ]); }); - it('should timeout if no response is returned', (done) => { - transport - .send('timeout-message', {}, 1) - .then(() => { - done(new Error('Should not be called')); - }) - .catch((error) => { - try { - expect(error).to.be.an.instanceof(JsonRpcTransportTimeOutError); - expect(error.message).to.contain('Request timed out'); - done(); - } catch (error) { - done(error); - } - }); + it('should timeout if no response is returned', () => { + const sendPromise = transport.send('timeout-message', {}, 1); transport.connect(WEBSOCKET_URL); + + return expect(sendPromise).to.eventually.be.rejectedWith( + JsonRpcTransportTimeOutError, + 'Request timed out', + ); }); - it('should route notifications', (done) => { + it('should route notifications', () => { server.on('message', (msg) => { const { payload } = jsonrpc.parse(msg); @@ -121,24 +95,21 @@ describe('JSON RPC transport', () => { } }); - transport - .subscribe('event', (event) => { - try { - expect(event).to.equal('an event!'); - done(); - } catch (error) { - done(error); - } - }) - .then(() => { + transport.connect(WEBSOCKET_URL); + + let subscribePromise; + const eventPromise = new Promise((resolve) => { + subscribePromise = transport.subscribe('event', resolve).then((value) => { server.send( - JSON.stringify(jsonrpc.notification('event', { subscription: 1, result: 'an event!' })), + JSON.stringify(jsonrpc.notification('event', { subscription: 1, result: 'beacon' })), ); - }) - .catch((error) => { - done(error); + return value; }); + }); - transport.connect(WEBSOCKET_URL); + return Promise.all([ + expect(subscribePromise).to.eventually.be.fulfilled, + expect(eventPromise).to.eventually.be.equal('beacon'), + ]); }); }); diff --git a/test/setup/renderer.js b/test/setup/renderer.js index acfa87b7ed..a1bd11a4d8 100644 --- a/test/setup/renderer.js +++ b/test/setup/renderer.js @@ -2,8 +2,10 @@ const Enzyme = require('enzyme'); const Adapter = require('enzyme-adapter-react-16'); const chai = require('chai'); const spies = require('chai-spies'); +const chaiAsPromised = require('chai-as-promised'); chai.use(spies); +chai.use(chaiAsPromised); Enzyme.configure({ adapter: new Adapter(), |
