Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(515)

Side by Side Diff: pkg/appengine/test/modules_test.dart

Issue 804973002: Add appengine/gcloud/mustache dependencies. (Closed) Base URL: git@github.com:dart-lang/pub-dartlang-dart.git@master
Patch Set: Added AUTHORS/LICENSE/PATENTS files Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pkg/appengine/test/memcache_test.dart ('k') | pkg/appengine/test/raw_datastore_v3_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 import 'dart:async';
6
7 import 'package:unittest/unittest.dart';
8
9 import 'package:appengine/api/errors.dart';
10 import 'package:appengine/src/api_impl/modules_impl.dart';
11 import 'package:appengine/src/protobuf_api/rpc/rpc_service.dart';
12 import 'package:appengine/src/appengine_context.dart';
13 import 'package:appengine/src/protobuf_api/internal/'
14 'modules_service.pb.dart' as pb;
15
16 import 'utils/mock_rpc.dart';
17 import 'utils/error_matchers.dart';
18
19 main() {
20 const INVALID_PROTOBUF = const [1, 2, 3, 4, 5];
21
22 group('modules', () {
23 test('current', () {
24 var mock = new MockRPCService('modules');
25 var context = new AppengineContext(
26 'dev', 'application', 'version', 'module', 'instance', null);
27 var modules = new ModulesRpcImpl(mock, context, '');
28 expect(modules.currentModule, 'module');
29 expect(modules.currentVersion, 'version');
30 expect(modules.currentInstance, 'instance');
31 });
32
33 test('default-version', () {
34 var mock = new MockRPCService('modules');
35 var context = new AppengineContext(
36 'dev', 'application', 'version', null, null, null);
37 var modules = new ModulesRpcImpl(mock, context, '');
38
39 // Tests NetworkError.
40 mock.register('GetDefaultVersion',
41 pb.GetDefaultVersionRequest, expectAsync((request) {
42 return new Future.error(new NetworkError(""));
43 }));
44 expect(modules.defaultVersion('module'), throwsA(isNetworkError));
45
46 // Tests ProtocolError.
47 mock.register('GetDefaultVersion',
48 pb.GetDefaultVersionRequest, expectAsync((request) {
49 return new Future.value(INVALID_PROTOBUF);
50 }));
51 expect(modules.defaultVersion('module'), throwsA(isProtocolError));
52
53 // Tests ApplicationError.
54 mock.register('GetDefaultVersion',
55 pb.GetDefaultVersionRequest, expectAsync((request) {
56 return new Future.error(new RpcApplicationError(
57 pb.ModulesServiceError_ErrorCode.INVALID_MODULE.value, 'foobar'));
58 }));
59 expect(modules.defaultVersion('module'),
60 throwsA(isAppEngineApplicationError));
61
62 mock.register('GetDefaultVersion',
63 pb.GetDefaultVersionRequest, expectAsync((request) {
64 expect(request.module, 'module');
65 var response = new pb.GetDefaultVersionResponse();
66 response.version = 'default';
67 return new Future.value(response.writeToBuffer());
68 }));
69 expect(modules.defaultVersion('module'), completion('default'));
70 });
71
72 test('modules', () {
73 var mock = new MockRPCService('modules');
74 var context = new AppengineContext(
75 'dev', 'application', 'version', null, null, null);
76 var modules = new ModulesRpcImpl(mock, context, '');
77
78 // Tests NetworkError.
79 mock.register('GetModules',
80 pb.GetDefaultVersionRequest, expectAsync((request) {
81 return new Future.error(new NetworkError(""));
82 }));
83 expect(modules.modules(), throwsA(isNetworkError));
84
85 // Tests ProtocolError.
86 mock.register('GetModules',
87 pb.GetDefaultVersionRequest, expectAsync((request) {
88 return new Future.value(INVALID_PROTOBUF);
89 }));
90 expect(modules.modules(), throwsA(isProtocolError));
91
92 // Tests ApplicationError.
93 mock.register('GetModules',
94 pb.GetDefaultVersionRequest, expectAsync((request) {
95 return new Future.error(new RpcApplicationError(
96 pb.ModulesServiceError_ErrorCode.INVALID_MODULE.value, 'foobar'));
97 }));
98 expect(modules.modules(), throwsA(isAppEngineApplicationError));
99
100 mock.register('GetModules', pb.GetModulesRequest, expectAsync((request) {
101 var response = new pb.GetModulesResponse();
102 response.module.add('module1');
103 response.module.add('module2');
104 return new Future.value(response.writeToBuffer());
105 }));
106 expect(modules.modules(), completion(['module1', 'module2']));
107 });
108
109 test('versions', () {
110 var mock = new MockRPCService('modules');
111 var context = new AppengineContext(
112 'dev', 'application', 'version', null, null, null);
113 var modules = new ModulesRpcImpl(mock, context, '');
114
115 // Tests NetworkError.
116 mock.register('GetVersions',
117 pb.GetVersionsRequest, expectAsync((request) {
118 return new Future.error(new NetworkError(""));
119 }));
120 expect(modules.versions('module'), throwsA(isNetworkError));
121
122 // Tests ProtocolError.
123 mock.register('GetVersions',
124 pb.GetVersionsRequest, expectAsync((request) {
125 return new Future.value(INVALID_PROTOBUF);
126 }));
127 expect(modules.versions('module'), throwsA(isProtocolError));
128
129 // Tests ApplicationError.
130 mock.register('GetVersions',
131 pb.GetDefaultVersionRequest, expectAsync((request) {
132 return new Future.error(new RpcApplicationError(
133 pb.ModulesServiceError_ErrorCode.INVALID_MODULE.value, 'foobar'));
134 }));
135 expect(modules.versions('module'), throwsA(isAppEngineApplicationError));
136
137 mock.register('GetVersions',
138 pb.GetVersionsRequest, expectAsync((request) {
139 expect(request.module, 'module');
140 var response = new pb.GetVersionsResponse();
141 response.version.add('version1');
142 response.version.add('version2');
143 return new Future.value(response.writeToBuffer());
144 }));
145 expect(modules.versions('module'), completion(['version1', 'version2']));
146 });
147
148 test('hostname', () {
149 var mock = new MockRPCService('modules');
150 var context = new AppengineContext(
151 'dev', 'application', 'version', null, null, null);
152 var modules = new ModulesRpcImpl(mock, context, '');
153
154 // Tests NetworkError.
155 mock.register('GetHostname',
156 pb.GetHostnameRequest, expectAsync((request) {
157 return new Future.error(new NetworkError(""));
158 }));
159 expect(modules.hostname(), throwsA(isNetworkError));
160
161 // Tests ProtocolError.
162 mock.register('GetHostname',
163 pb.GetHostnameRequest, expectAsync((request) {
164 return new Future.value(INVALID_PROTOBUF);
165 }));
166 expect(modules.hostname(), throwsA(isProtocolError));
167
168 // Tests ApplicationError.
169 mock.register('GetHostname',
170 pb.GetDefaultVersionRequest, expectAsync((request) {
171 return new Future.error(new RpcApplicationError(
172 pb.ModulesServiceError_ErrorCode.INVALID_MODULE.value, 'foobar'));
173 }));
174 expect(modules.hostname(), throwsA(isAppEngineApplicationError));
175
176 var count = 0;
177 mock.register('GetHostname',
178 pb.GetHostnameRequest, expectAsync((request) {
179 switch (count++) {
180 case 0:
181 expect(request.hasModule(), isFalse);
182 expect(request.hasVersion(), isFalse);
183 expect(request.hasInstance(), isFalse);
184 break;
185 case 1:
186 expect(request.module, 'module');
187 expect(request.hasVersion(), isFalse);
188 expect(request.hasInstance(), isFalse);
189 break;
190 case 2:
191 expect(request.module, 'module');
192 expect(request.version, 'version');
193 expect(request.hasInstance(), isFalse);
194 break;
195 case 3:
196 expect(request.module, 'module');
197 expect(request.version, 'version');
198 expect(request.instance, 'instance');
199 break;
200 default:
201 throw new UnsupportedError('Unreachable');
202 }
203 var response = new pb.GetHostnameResponse();
204 response.hostname = 'hostname';
205 return new Future.value(response.writeToBuffer());
206 }, count: 4));
207 expect(modules.hostname(), completion('hostname'));
208 expect(modules.hostname('module'), completion('hostname'));
209 expect(modules.hostname('module', 'version'), completion('hostname'));
210 expect(modules.hostname('module', 'version', 'instance'),
211 completion('hostname'));
212
213 count = 0;
214 var hostnames = [
215 'project.appspot.com',
216 'version.project.appspot.com',
217 'version.module.project.appspot.com',
218 'instance.version.module.project.appspot.com'
219 ];
220
221 var mappedHostnames = [
222 'project.appspot.com',
223 'version-dot-project.appspot.com',
224 'version-dot-module-dot-project.appspot.com',
225 'instance-dot-version-dot-module-dot-project.appspot.com'
226 ];
227
228 mock.register('GetHostname',
229 pb.GetHostnameRequest, expectAsync((request) {
230 var response = new pb.GetHostnameResponse();
231 response.hostname = hostnames[count++];
232 print(response.hostname);
233 return new Future.value(response.writeToBuffer());
234 }, count: hostnames.length));
235 Future.forEach(mappedHostnames, expectAsync((expected) {
236 return modules.hostname().then((hostname) {
237 expect(hostname, expected);
238 });
239 }, count: mappedHostnames.length));
240 });
241 });
242 }
OLDNEW
« no previous file with comments | « pkg/appengine/test/memcache_test.dart ('k') | pkg/appengine/test/raw_datastore_v3_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698