Skip to content

Commit f337206

Browse files
author
Michael Mrowetz
committed
chore(microservice) tests for grpc cancelling - server side
1 parent 3984bc9 commit f337206

1 file changed

Lines changed: 19 additions & 1 deletion

File tree

packages/microservices/test/server/server-grpc.spec.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { ServerGrpc } from '../../server/server-grpc';
22
import { expect } from 'chai';
33
import * as sinon from 'sinon';
4-
import { Observable } from 'rxjs';
4+
import { of } from 'rxjs';
55
import { join } from 'path';
66
import { InvalidGrpcPackageException } from '../../exceptions/invalid-grpc-package.exception';
77

@@ -161,6 +161,24 @@ describe('ServerGrpc', () => {
161161
await server.createStreamServiceMethod(native)(call, callback);
162162
expect(native.called).to.be.true;
163163
expect(call.addListener.calledWith('cancelled')).to.be.true;
164+
expect(call.removeListener.calledWith('cancelled')).to.be.true;
165+
});
166+
167+
it(`should close the result observable when receiving an 'cancelled' event from the client`, async () => {
168+
let cancelCb: () => void;
169+
const call = {
170+
write: sinon.stub().onSecondCall().callsFake(() => cancelCb()),
171+
end: sinon.spy(),
172+
addListener: (name, cb) => cancelCb = cb,
173+
removeListener: sinon.spy(),
174+
};
175+
const result$ = of(1, 2, 3);
176+
const callback = sinon.spy();
177+
const native = sinon.stub().returns(new Promise((resolve, reject) => resolve(result$)));
178+
179+
await server.createStreamServiceMethod(native)(call, callback);
180+
expect(call.write.calledTwice).to.be.true;
181+
expect(call.end.called).to.be.true;
164182
});
165183
});
166184
});

0 commit comments

Comments
 (0)