OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library pub_uploader_test; | 5 library pub_uploader_test; |
6 | 6 |
7 import 'dart:io'; | 7 import 'dart:io'; |
8 import 'dart:json' as json; | 8 import 'dart:json' as json; |
9 | 9 |
10 import 'package:scheduled_test/scheduled_process.dart'; | 10 import 'package:scheduled_test/scheduled_process.dart'; |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 schedulePub(args: ['uploader', 'foo', 'email'], | 51 schedulePub(args: ['uploader', 'foo', 'email'], |
52 output: USAGE_STRING, exitCode: 64); | 52 output: USAGE_STRING, exitCode: 64); |
53 }); | 53 }); |
54 }); | 54 }); |
55 | 55 |
56 integration('adds an uploader', () { | 56 integration('adds an uploader', () { |
57 var server = new ScheduledServer(); | 57 var server = new ScheduledServer(); |
58 d.credentialsFile(server, 'access token').create(); | 58 d.credentialsFile(server, 'access token').create(); |
59 var pub = startPubUploader(server, ['--package', 'pkg', 'add', 'email']); | 59 var pub = startPubUploader(server, ['--package', 'pkg', 'add', 'email']); |
60 | 60 |
61 server.handle('POST', '/packages/pkg/uploaders.json', (request) { | 61 server.handle('POST', '/api/packages/pkg/uploaders', (request) { |
62 expect(new ByteStream(request).toBytes().then((bodyBytes) { | 62 expect(new ByteStream(request).toBytes().then((bodyBytes) { |
63 expect(new String.fromCharCodes(bodyBytes), equals('email=email')); | 63 expect(new String.fromCharCodes(bodyBytes), equals('email=email')); |
64 | 64 |
65 request.response.headers.contentType = | 65 request.response.headers.contentType = |
66 new ContentType("application", "json"); | 66 new ContentType("application", "json"); |
67 request.response.write(json.stringify({ | 67 request.response.write(json.stringify({ |
68 'success': {'message': 'Good job!'} | 68 'success': {'message': 'Good job!'} |
69 })); | 69 })); |
70 request.response.close(); | 70 request.response.close(); |
71 }), completes); | 71 }), completes); |
72 }); | 72 }); |
73 | 73 |
74 expect(pub.nextLine(), completion(equals('Good job!'))); | 74 expect(pub.nextLine(), completion(equals('Good job!'))); |
75 pub.shouldExit(0); | 75 pub.shouldExit(0); |
76 }); | 76 }); |
77 | 77 |
78 integration('removes an uploader', () { | 78 integration('removes an uploader', () { |
79 var server = new ScheduledServer(); | 79 var server = new ScheduledServer(); |
80 d.credentialsFile(server, 'access token').create(); | 80 d.credentialsFile(server, 'access token').create(); |
81 var pub = startPubUploader(server, ['--package', 'pkg', 'remove', 'email']); | 81 var pub = startPubUploader(server, ['--package', 'pkg', 'remove', 'email']); |
82 | 82 |
83 server.handle('DELETE', '/packages/pkg/uploaders/email.json', (request) { | 83 server.handle('DELETE', '/api/packages/pkg/uploaders/email', (request) { |
84 request.response.headers.contentType = | 84 request.response.headers.contentType = |
85 new ContentType("application", "json"); | 85 new ContentType("application", "json"); |
86 request.response.write(json.stringify({ | 86 request.response.write(json.stringify({ |
87 'success': {'message': 'Good job!'} | 87 'success': {'message': 'Good job!'} |
88 })); | 88 })); |
89 request.response.close(); | 89 request.response.close(); |
90 }); | 90 }); |
91 | 91 |
92 expect(pub.nextLine(), completion(equals('Good job!'))); | 92 expect(pub.nextLine(), completion(equals('Good job!'))); |
93 pub.shouldExit(0); | 93 pub.shouldExit(0); |
94 }); | 94 }); |
95 | 95 |
96 integration('defaults to the current package', () { | 96 integration('defaults to the current package', () { |
97 d.validPackage.create(); | 97 d.validPackage.create(); |
98 | 98 |
99 var server = new ScheduledServer(); | 99 var server = new ScheduledServer(); |
100 d.credentialsFile(server, 'access token').create(); | 100 d.credentialsFile(server, 'access token').create(); |
101 var pub = startPubUploader(server, ['add', 'email']); | 101 var pub = startPubUploader(server, ['add', 'email']); |
102 | 102 |
103 server.handle('POST', '/packages/test_pkg/uploaders.json', (request) { | 103 server.handle('POST', '/api/packages/test_pkg/uploaders', (request) { |
104 request.response.headers.contentType = | 104 request.response.headers.contentType = |
105 new ContentType("application", "json"); | 105 new ContentType("application", "json"); |
106 request.response.write(json.stringify({ | 106 request.response.write(json.stringify({ |
107 'success': {'message': 'Good job!'} | 107 'success': {'message': 'Good job!'} |
108 })); | 108 })); |
109 request.response.close(); | 109 request.response.close(); |
110 }); | 110 }); |
111 | 111 |
112 expect(pub.nextLine(), completion(equals('Good job!'))); | 112 expect(pub.nextLine(), completion(equals('Good job!'))); |
113 pub.shouldExit(0); | 113 pub.shouldExit(0); |
114 }); | 114 }); |
115 | 115 |
116 integration('add provides an error', () { | 116 integration('add provides an error', () { |
117 var server = new ScheduledServer(); | 117 var server = new ScheduledServer(); |
118 d.credentialsFile(server, 'access token').create(); | 118 d.credentialsFile(server, 'access token').create(); |
119 var pub = startPubUploader(server, ['--package', 'pkg', 'add', 'email']); | 119 var pub = startPubUploader(server, ['--package', 'pkg', 'add', 'email']); |
120 | 120 |
121 server.handle('POST', '/packages/pkg/uploaders.json', (request) { | 121 server.handle('POST', '/api/packages/pkg/uploaders', (request) { |
122 request.response.statusCode = 400; | 122 request.response.statusCode = 400; |
123 request.response.headers.contentType = | 123 request.response.headers.contentType = |
124 new ContentType("application", "json"); | 124 new ContentType("application", "json"); |
125 request.response.write(json.stringify({ | 125 request.response.write(json.stringify({ |
126 'error': {'message': 'Bad job!'} | 126 'error': {'message': 'Bad job!'} |
127 })); | 127 })); |
128 request.response.close(); | 128 request.response.close(); |
129 }); | 129 }); |
130 | 130 |
131 expect(pub.nextErrLine(), completion(equals('Bad job!'))); | 131 expect(pub.nextErrLine(), completion(equals('Bad job!'))); |
132 pub.shouldExit(1); | 132 pub.shouldExit(1); |
133 }); | 133 }); |
134 | 134 |
135 integration('remove provides an error', () { | 135 integration('remove provides an error', () { |
136 var server = new ScheduledServer(); | 136 var server = new ScheduledServer(); |
137 d.credentialsFile(server, 'access token').create(); | 137 d.credentialsFile(server, 'access token').create(); |
138 var pub = startPubUploader(server, | 138 var pub = startPubUploader(server, |
139 ['--package', 'pkg', 'remove', 'e/mail']); | 139 ['--package', 'pkg', 'remove', 'e/mail']); |
140 | 140 |
141 server.handle('DELETE', '/packages/pkg/uploaders/e%2Fmail.json', (request) { | 141 server.handle('DELETE', '/api/packages/pkg/uploaders/e%2Fmail', (request) { |
142 request.response.statusCode = 400; | 142 request.response.statusCode = 400; |
143 request.response.headers.contentType = | 143 request.response.headers.contentType = |
144 new ContentType("application", "json"); | 144 new ContentType("application", "json"); |
145 request.response.write(json.stringify({ | 145 request.response.write(json.stringify({ |
146 'error': {'message': 'Bad job!'} | 146 'error': {'message': 'Bad job!'} |
147 })); | 147 })); |
148 request.response.close(); | 148 request.response.close(); |
149 }); | 149 }); |
150 | 150 |
151 expect(pub.nextErrLine(), completion(equals('Bad job!'))); | 151 expect(pub.nextErrLine(), completion(equals('Bad job!'))); |
152 pub.shouldExit(1); | 152 pub.shouldExit(1); |
153 }); | 153 }); |
154 | 154 |
155 integration('add provides invalid JSON', () { | 155 integration('add provides invalid JSON', () { |
156 var server = new ScheduledServer(); | 156 var server = new ScheduledServer(); |
157 d.credentialsFile(server, 'access token').create(); | 157 d.credentialsFile(server, 'access token').create(); |
158 var pub = startPubUploader(server, ['--package', 'pkg', 'add', 'email']); | 158 var pub = startPubUploader(server, ['--package', 'pkg', 'add', 'email']); |
159 | 159 |
160 server.handle('POST', '/packages/pkg/uploaders.json', (request) { | 160 server.handle('POST', '/api/packages/pkg/uploaders', (request) { |
161 request.response.write("{not json"); | 161 request.response.write("{not json"); |
162 request.response.close(); | 162 request.response.close(); |
163 }); | 163 }); |
164 | 164 |
165 expect(pub.nextErrLine(), completion(equals('Invalid server response:'))); | 165 expect(pub.nextErrLine(), completion(equals('Invalid server response:'))); |
166 expect(pub.nextErrLine(), completion(equals('{not json'))); | 166 expect(pub.nextErrLine(), completion(equals('{not json'))); |
167 pub.shouldExit(1); | 167 pub.shouldExit(1); |
168 }); | 168 }); |
169 | 169 |
170 integration('remove provides invalid JSON', () { | 170 integration('remove provides invalid JSON', () { |
171 var server = new ScheduledServer(); | 171 var server = new ScheduledServer(); |
172 d.credentialsFile(server, 'access token').create(); | 172 d.credentialsFile(server, 'access token').create(); |
173 var pub = startPubUploader(server, ['--package', 'pkg', 'remove', 'email']); | 173 var pub = startPubUploader(server, ['--package', 'pkg', 'remove', 'email']); |
174 | 174 |
175 server.handle('DELETE', '/packages/pkg/uploaders/email.json', (request) { | 175 server.handle('DELETE', '/api/packages/pkg/uploaders/email', (request) { |
176 request.response.write("{not json"); | 176 request.response.write("{not json"); |
177 request.response.close(); | 177 request.response.close(); |
178 }); | 178 }); |
179 | 179 |
180 expect(pub.nextErrLine(), completion(equals('Invalid server response:'))); | 180 expect(pub.nextErrLine(), completion(equals('Invalid server response:'))); |
181 expect(pub.nextErrLine(), completion(equals('{not json'))); | 181 expect(pub.nextErrLine(), completion(equals('{not json'))); |
182 pub.shouldExit(1); | 182 pub.shouldExit(1); |
183 }); | 183 }); |
184 } | 184 } |
OLD | NEW |