OLD | NEW |
---|---|
(Empty) | |
1 library service_test; | |
2 | |
3 import 'dart:async' show Future; | |
4 | |
5 import 'package:protobuf/protobuf.dart'; | |
6 import 'package:unittest/unittest.dart'; | |
7 | |
8 import '../out/protos/service.pb.dart' as pb; | |
9 | |
10 class SearchService extends pb.SearchServiceBase { | |
11 Future<pb.SearchResponse> search(ServerContext ctx, pb.SearchRequest request ) async { | |
Søren Gjesse
2015/06/25 13:04:49
Long line.
wibling
2015/06/25 13:10:04
Done.
| |
12 var out = new pb.SearchResponse(); | |
13 if (request.query == 'hello' || request.query == 'world') { | |
14 out.result.add('hello, world!'); | |
15 } | |
16 return out; | |
17 } | |
18 } | |
19 | |
20 class FakeJsonServer { | |
21 final GeneratedService searchService; | |
22 FakeJsonServer(this.searchService); | |
23 | |
24 Future<String> messageHandler( | |
25 String serviceName, String methodName, String requestJson) async { | |
26 if (serviceName == 'SearchService') { | |
27 GeneratedMessage request = searchService.createRequest(methodName); | |
28 request.mergeFromJson(requestJson); | |
29 var ctx = new ServerContext(); | |
30 var reply = await searchService.handleCall(ctx, methodName, request); | |
31 return reply.writeToJson(); | |
32 } else { | |
33 throw 'unknown service: $serviceName'; | |
34 } | |
35 } | |
36 } | |
37 | |
38 class FakeJsonClient implements RpcClient { | |
39 final FakeJsonServer server; | |
40 FakeJsonClient(this.server); | |
41 | |
42 Future<GeneratedMessage> invoke( | |
43 ClientContext ctx, String serviceName, String methodName, | |
44 GeneratedMessage request, GeneratedMessage response) async { | |
45 | |
46 String requestJson = request.writeToJson(); | |
47 String replyJson = | |
48 await server.messageHandler(serviceName, methodName, requestJson); | |
49 response.mergeFromJson(replyJson); | |
50 return response; | |
51 } | |
52 } | |
53 | |
54 void main() { | |
55 var server = new FakeJsonServer(new SearchService()); | |
56 var api = new pb.SearchServiceApi(new FakeJsonClient(server)); | |
57 | |
58 test('end to end RPC using JSON', () async { | |
59 var request = new pb.SearchRequest() | |
60 ..query = "hello"; | |
61 var reply = await api.search(new ClientContext(), request); | |
62 expect(reply.result, ["hello, world!"]); | |
63 }); | |
64 } | |
OLD | NEW |