Skip to content

Commit 93e04f1

Browse files
committed
Other: Added basic services test case
1 parent b5a068f commit 93e04f1

File tree

2 files changed

+52
-24
lines changed

2 files changed

+52
-24
lines changed

tests/_support.js

Lines changed: 0 additions & 24 deletions
This file was deleted.

tests/service.js

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
var tape = require("tape");
2+
3+
var protobuf = require("..");
4+
5+
tape.test("services", function(test) {
6+
7+
protobuf.load("tests/data/service.proto", function(err, root) {
8+
if (err)
9+
return test.fail(err.message);
10+
11+
var myservice = root.lookup("myservice").resolveAll(),
12+
MyService = myservice.MyService,
13+
DoSomethingRequest = myservice.DoSomethingRequest,
14+
DoSomethingResponse = myservice.DoSomethingResponse,
15+
DoSomething = MyService.get("DoSomething");
16+
17+
function rpcImpl(method, requestData, callback) {
18+
if (requestData) {
19+
test.equal(method, DoSomething, "rpcImpl should reference the correct method");
20+
test.ok(callback, "rpcImpl should provide a callback");
21+
setTimeout(function() {
22+
callback(null, DoSomethingResponse.create());
23+
});
24+
} else {
25+
test.equal(method, null, "rpcImpl should not reference a method when closed");
26+
test.equal(callback, null, "rpcImpl should not provide a callback when closed");
27+
}
28+
}
29+
30+
var service = MyService.create(rpcImpl);
31+
var dataEmitted = false;
32+
service.on("data", function(responseData) {
33+
dataEmitted = true;
34+
test.ok(responseData, "should emit the data event");
35+
});
36+
var endCalled = false;
37+
service.on("end", function() {
38+
test.notOk(endCalled, "should not emit the end event twice");
39+
endCalled = true;
40+
test.pass("should call the end event");
41+
service.end();
42+
test.end();
43+
});
44+
service.doSomething(DoSomethingRequest.create(), function(err, res) {
45+
test.notOk(err, "should not raise an error");
46+
test.ok(res instanceof DoSomethingResponse.getCtor(), "should return a properly typed response");
47+
test.ok(dataEmitted, "should have emitted the data event");
48+
service.end();
49+
});
50+
});
51+
52+
});

0 commit comments

Comments
 (0)