UNPKG

grpc-promise

Version:

GRPC promisify module for all Request/Response types: standard and stream

94 lines (78 loc) 2.98 kB
const ServerStreamMock = require('../../tools/grpc-mock/ServerStreamMock'); const grpc_promise = require('../../../lib/index'); describe('Server Stream Request', function () { describe('With promisifyAll', function () { it('Test ok', function () { const client = {}; const makeServerStreamRequest = function () { return new ServerStreamMock({response: [{id: 1}, {id: 2}]}); }; makeServerStreamRequest.requestStream = false; makeServerStreamRequest.responseStream = true; Object.setPrototypeOf(client, { serverStreamReq: makeServerStreamRequest }); grpc_promise.promisifyAll(client); return Promise.all([client.serverStreamReq().sendMessage({}), client.serverStreamReq().sendMessage({})]) .then(res => { res[0][0].id.should.equal(1); res[0][1].id.should.equal(2); res[1][0].id.should.equal(1); res[1][1].id.should.equal(2); }); }); it('Test ko', function () { const client = {}; const makeServerStreamRequest = function () { return new ServerStreamMock(); }; makeServerStreamRequest.requestStream = false; makeServerStreamRequest.responseStream = true; Object.setPrototypeOf(client, { serverStreamReq: makeServerStreamRequest }); grpc_promise.promisifyAll(client); return client.serverStreamReq() .sendMessage({}) .then(() => { throw new Error('Should not happen'); }) .catch(err => err.should.equal('some_error')); }); }); describe('With promisify', function () { it('Test ok', function (done) { const client = {}; const makeServerStreamRequest = function () { return new ServerStreamMock({response: [{id: 1}, {id: 2}]}); }; makeServerStreamRequest.requestStream = false; makeServerStreamRequest.responseStream = true; const makeServerStreamRequest2 = function () { return new ServerStreamMock({response: [{id: 1}, {id: 2}]}); }; makeServerStreamRequest2.requestStream = false; makeServerStreamRequest2.responseStream = true; Object.setPrototypeOf(client, { serverStreamReq: makeServerStreamRequest, serverStreamReq2: makeServerStreamRequest2 }); grpc_promise.promisify(client, ['serverStreamReq']); Promise.all([client.serverStreamReq().sendMessage({}), client.serverStreamReq().sendMessage({})]) .then(res => { res[0][0].id.should.equal(1); res[0][1].id.should.equal(2); res[1][0].id.should.equal(1); res[1][1].id.should.equal(2); const call = client.serverStreamReq2({id: 1}); let responseCounter = 1; call.on('data', function (res) { res.id.should.equal(responseCounter++); if (responseCounter === 2) { done(); } }); }); }); }); });