Chromium Code Reviews| 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 |