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

Side by Side Diff: pkg/appengine/test/raw_datastore_v3_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/modules_test.dart ('k') | pkg/appengine/test/remote_api_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:fixnum/fixnum.dart';
8 import 'package:unittest/unittest.dart';
9
10 import 'package:appengine/api/errors.dart';
11 import 'package:appengine/src/appengine_context.dart';
12 import 'package:appengine/src/api_impl/raw_datastore_v3_impl.dart';
13 import 'package:appengine/src/protobuf_api/rpc/rpc_service.dart';
14 import 'package:appengine/src/protobuf_api/internal/datastore_v3.pb.dart';
15 import 'package:gcloud/datastore.dart' as raw;
16
17 import 'utils/mock_rpc.dart';
18 import 'utils/error_matchers.dart';
19 import 'utils/raw_datastore_test_utils.dart';
20
21 void runTests() {
22 const INVALID_PROTOBUF = const [1, 2, 3, 4, 5];
23
24 group('raw_datastore_v3_error_handling', () {
25 var unnamedKeys5 = buildKeys(1, 6);
26 var context = new AppengineContext(
27 'dev', 'application', 'version', null, null, null);
28
29 var transactionAbortedError = new RpcApplicationError(
30 Error_ErrorCode.CONCURRENT_TRANSACTION.value, 'foobar');
31 var needIndexError = new RpcApplicationError(
32 Error_ErrorCode.NEED_INDEX.value, 'foobar');
33 var timeoutError = new RpcApplicationError(
34 Error_ErrorCode.TIMEOUT.value, 'foobar');
35
36 buildMock(methodName, requestType, callback) {
37 var mock = new MockRPCService('datastore_v3');
38 mock.register(methodName, requestType, callback);
39 return mock;
40 }
41
42 buildDatastore(mock) {
43 return new DatastoreV3RpcImpl(mock, context, 'invalid-ticket');
44 }
45
46 group('allocateIds', () {
47 test('network_error', () {
48 var mock = buildMock('AllocateIds', AllocateIdsRequest,
49 (request) => new Future.error(new NetworkError("")));
50 var datastore = buildDatastore(mock);
51 expect(datastore.allocateIds(unnamedKeys5), throwsA(isNetworkError));
52 });
53
54 test('protocol_error', () {
55 var mock = buildMock('AllocateIds', AllocateIdsRequest,
56 (request) => new Future.value(INVALID_PROTOBUF));
57 var datastore = buildDatastore(mock);
58 expect(datastore.allocateIds(unnamedKeys5), throwsA(isProtocolError));
59 });
60 });
61
62 group('beginTransaction', () {
63 test('network_error', () {
64 var mock = buildMock('BeginTransaction', BeginTransactionRequest,
65 (request) => new Future.error(new NetworkError("")));
66 var datastore = buildDatastore(mock);
67 expect(datastore.beginTransaction(), throwsA(isNetworkError));
68 });
69
70 test('protocol_error', () {
71 var mock = buildMock('BeginTransaction', BeginTransactionRequest,
72 (request) => new Future.value(INVALID_PROTOBUF));
73 var datastore = buildDatastore(mock);
74 expect(datastore.beginTransaction(), throwsA(isProtocolError));
75 });
76 });
77
78 group('commit', () {
79 var e = new raw.Entity(buildKey(1, idFunction: (i) => "$i"), {});
80
81 test('network_error', () {
82 var mock = buildMock('Put', PutRequest,
83 (request) => new Future.error(new NetworkError("")));
84 var datastore = buildDatastore(mock);
85 expect(datastore.commit(inserts: [e]), throwsA(isNetworkError));
86 });
87
88 test('protocol_error', () {
89 var mock = buildMock('Put', PutRequest,
90 (request) => new Future.value(INVALID_PROTOBUF));
91 var datastore = buildDatastore(mock);
92 expect(datastore.commit(inserts: [e]), throwsA(isProtocolError));
93 });
94
95 test('transaction_aborted', () {
96 var mock = buildMock('Put', PutRequest,
97 (request) => new Future.error(transactionAbortedError));
98 var datastore = buildDatastore(mock);
99 expect(datastore.commit(inserts: [e]),
100 throwsA(isTransactionAbortedError));
101 });
102 });
103
104 group('rollback', () {
105 var rpcTransaction = new Transaction();
106 rpcTransaction.handle = new Int64(10);
107 var transaction = new TransactionImpl(rpcTransaction);
108
109 test('network_error', () {
110 var mock = buildMock('Rollback', Transaction,
111 (request) => new Future.error(new NetworkError("")));
112 var datastore = buildDatastore(mock);
113 expect(datastore.rollback(transaction), throwsA(isNetworkError));
114 });
115
116 test('protocol_error', () {
117 var mock = buildMock('Rollback', Transaction,
118 (request) => new Future.value(INVALID_PROTOBUF));
119 var datastore = buildDatastore(mock);
120 expect(datastore.rollback(transaction), throwsA(isProtocolError));
121 });
122 });
123
124 group('lookup', () {
125 var key = buildKey(1, idFunction: (i) => "$i");
126
127 test('network_error', () {
128 var mock = buildMock('Get', GetRequest,
129 (request) => new Future.error(new NetworkError("")));
130 var datastore = buildDatastore(mock);
131 expect(datastore.lookup([key]), throwsA(isNetworkError));
132 });
133
134 test('protocol_error', () {
135 var mock = buildMock('Get', GetRequest,
136 (request) => new Future.value(INVALID_PROTOBUF));
137 var datastore = buildDatastore(mock);
138 expect(datastore.lookup([key]), throwsA(isProtocolError));
139 });
140
141 test('timeout_error', () {
142 var mock = buildMock('Get', GetRequest,
143 (request) => new Future.error(timeoutError));
144 var datastore = buildDatastore(mock);
145 expect(datastore.lookup([key]), throwsA(isTimeoutError));
146 });
147 });
148
149 group('query', () {
150 var query = new raw.Query(kind: 'TestKind');
151
152 test('network_error', () {
153 var mock = buildMock('RunQuery', Query,
154 (request) => new Future.error(new NetworkError("")));
155 var datastore = buildDatastore(mock);
156 expect(datastore.query(query), throwsA(isNetworkError));
157 });
158
159 test('protocol_error', () {
160 var mock = buildMock('RunQuery', Query,
161 (request) => new Future.value(INVALID_PROTOBUF));
162 var datastore = buildDatastore(mock);
163 expect(datastore.query(query), throwsA(isProtocolError));
164 });
165
166 test('need_index_error', () {
167 var mock = buildMock('RunQuery', Query,
168 (request) => new Future.error(needIndexError));
169 var datastore = buildDatastore(mock);
170 expect(datastore.query(query), throwsA(isNeedIndexError));
171 });
172 });
173 });
174 }
175
176 main() {
177 runTests();
178 }
OLDNEW
« no previous file with comments | « pkg/appengine/test/modules_test.dart ('k') | pkg/appengine/test/remote_api_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698