| 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:convert'; | 7 import 'dart:convert'; |
| 8 import 'dart:io'; | 8 import 'dart:io'; |
| 9 | 9 |
| 10 import 'package:scheduled_test/scheduled_process.dart'; | 10 import 'package:scheduled_test/scheduled_process.dart'; |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 | 66 |
| 67 request.response.headers.contentType = | 67 request.response.headers.contentType = |
| 68 new ContentType("application", "json"); | 68 new ContentType("application", "json"); |
| 69 request.response.write(JSON.encode({ | 69 request.response.write(JSON.encode({ |
| 70 'success': {'message': 'Good job!'} | 70 'success': {'message': 'Good job!'} |
| 71 })); | 71 })); |
| 72 request.response.close(); | 72 request.response.close(); |
| 73 }), completes); | 73 }), completes); |
| 74 }); | 74 }); |
| 75 | 75 |
| 76 expect(pub.nextLine(), completion(equals('Good job!'))); | 76 pub.stdout.expect('Good job!'); |
| 77 pub.shouldExit(exit_codes.SUCCESS); | 77 pub.shouldExit(exit_codes.SUCCESS); |
| 78 }); | 78 }); |
| 79 | 79 |
| 80 integration('removes an uploader', () { | 80 integration('removes an uploader', () { |
| 81 var server = new ScheduledServer(); | 81 var server = new ScheduledServer(); |
| 82 d.credentialsFile(server, 'access token').create(); | 82 d.credentialsFile(server, 'access token').create(); |
| 83 var pub = startPubUploader(server, ['--package', 'pkg', 'remove', 'email']); | 83 var pub = startPubUploader(server, ['--package', 'pkg', 'remove', 'email']); |
| 84 | 84 |
| 85 server.handle('DELETE', '/api/packages/pkg/uploaders/email', (request) { | 85 server.handle('DELETE', '/api/packages/pkg/uploaders/email', (request) { |
| 86 request.response.headers.contentType = | 86 request.response.headers.contentType = |
| 87 new ContentType("application", "json"); | 87 new ContentType("application", "json"); |
| 88 request.response.write(JSON.encode({ | 88 request.response.write(JSON.encode({ |
| 89 'success': {'message': 'Good job!'} | 89 'success': {'message': 'Good job!'} |
| 90 })); | 90 })); |
| 91 request.response.close(); | 91 request.response.close(); |
| 92 }); | 92 }); |
| 93 | 93 |
| 94 expect(pub.nextLine(), completion(equals('Good job!'))); | 94 pub.stdout.expect('Good job!'); |
| 95 pub.shouldExit(exit_codes.SUCCESS); | 95 pub.shouldExit(exit_codes.SUCCESS); |
| 96 }); | 96 }); |
| 97 | 97 |
| 98 integration('defaults to the current package', () { | 98 integration('defaults to the current package', () { |
| 99 d.validPackage.create(); | 99 d.validPackage.create(); |
| 100 | 100 |
| 101 var server = new ScheduledServer(); | 101 var server = new ScheduledServer(); |
| 102 d.credentialsFile(server, 'access token').create(); | 102 d.credentialsFile(server, 'access token').create(); |
| 103 var pub = startPubUploader(server, ['add', 'email']); | 103 var pub = startPubUploader(server, ['add', 'email']); |
| 104 | 104 |
| 105 server.handle('POST', '/api/packages/test_pkg/uploaders', (request) { | 105 server.handle('POST', '/api/packages/test_pkg/uploaders', (request) { |
| 106 request.response.headers.contentType = | 106 request.response.headers.contentType = |
| 107 new ContentType("application", "json"); | 107 new ContentType("application", "json"); |
| 108 request.response.write(JSON.encode({ | 108 request.response.write(JSON.encode({ |
| 109 'success': {'message': 'Good job!'} | 109 'success': {'message': 'Good job!'} |
| 110 })); | 110 })); |
| 111 request.response.close(); | 111 request.response.close(); |
| 112 }); | 112 }); |
| 113 | 113 |
| 114 expect(pub.nextLine(), completion(equals('Good job!'))); | 114 pub.stdout.expect('Good job!'); |
| 115 pub.shouldExit(exit_codes.SUCCESS); | 115 pub.shouldExit(exit_codes.SUCCESS); |
| 116 }); | 116 }); |
| 117 | 117 |
| 118 integration('add provides an error', () { | 118 integration('add provides an error', () { |
| 119 var server = new ScheduledServer(); | 119 var server = new ScheduledServer(); |
| 120 d.credentialsFile(server, 'access token').create(); | 120 d.credentialsFile(server, 'access token').create(); |
| 121 var pub = startPubUploader(server, ['--package', 'pkg', 'add', 'email']); | 121 var pub = startPubUploader(server, ['--package', 'pkg', 'add', 'email']); |
| 122 | 122 |
| 123 server.handle('POST', '/api/packages/pkg/uploaders', (request) { | 123 server.handle('POST', '/api/packages/pkg/uploaders', (request) { |
| 124 request.response.statusCode = 400; | 124 request.response.statusCode = 400; |
| 125 request.response.headers.contentType = | 125 request.response.headers.contentType = |
| 126 new ContentType("application", "json"); | 126 new ContentType("application", "json"); |
| 127 request.response.write(JSON.encode({ | 127 request.response.write(JSON.encode({ |
| 128 'error': {'message': 'Bad job!'} | 128 'error': {'message': 'Bad job!'} |
| 129 })); | 129 })); |
| 130 request.response.close(); | 130 request.response.close(); |
| 131 }); | 131 }); |
| 132 | 132 |
| 133 expect(pub.nextErrLine(), completion(equals('Bad job!'))); | 133 pub.stderr.expect('Bad job!'); |
| 134 pub.shouldExit(1); | 134 pub.shouldExit(1); |
| 135 }); | 135 }); |
| 136 | 136 |
| 137 integration('remove provides an error', () { | 137 integration('remove provides an error', () { |
| 138 var server = new ScheduledServer(); | 138 var server = new ScheduledServer(); |
| 139 d.credentialsFile(server, 'access token').create(); | 139 d.credentialsFile(server, 'access token').create(); |
| 140 var pub = startPubUploader(server, | 140 var pub = startPubUploader(server, |
| 141 ['--package', 'pkg', 'remove', 'e/mail']); | 141 ['--package', 'pkg', 'remove', 'e/mail']); |
| 142 | 142 |
| 143 server.handle('DELETE', '/api/packages/pkg/uploaders/e%2Fmail', (request) { | 143 server.handle('DELETE', '/api/packages/pkg/uploaders/e%2Fmail', (request) { |
| 144 request.response.statusCode = 400; | 144 request.response.statusCode = 400; |
| 145 request.response.headers.contentType = | 145 request.response.headers.contentType = |
| 146 new ContentType("application", "json"); | 146 new ContentType("application", "json"); |
| 147 request.response.write(JSON.encode({ | 147 request.response.write(JSON.encode({ |
| 148 'error': {'message': 'Bad job!'} | 148 'error': {'message': 'Bad job!'} |
| 149 })); | 149 })); |
| 150 request.response.close(); | 150 request.response.close(); |
| 151 }); | 151 }); |
| 152 | 152 |
| 153 expect(pub.nextErrLine(), completion(equals('Bad job!'))); | 153 pub.stderr.expect('Bad job!'); |
| 154 pub.shouldExit(1); | 154 pub.shouldExit(1); |
| 155 }); | 155 }); |
| 156 | 156 |
| 157 integration('add provides invalid JSON', () { | 157 integration('add provides invalid JSON', () { |
| 158 var server = new ScheduledServer(); | 158 var server = new ScheduledServer(); |
| 159 d.credentialsFile(server, 'access token').create(); | 159 d.credentialsFile(server, 'access token').create(); |
| 160 var pub = startPubUploader(server, ['--package', 'pkg', 'add', 'email']); | 160 var pub = startPubUploader(server, ['--package', 'pkg', 'add', 'email']); |
| 161 | 161 |
| 162 server.handle('POST', '/api/packages/pkg/uploaders', (request) { | 162 server.handle('POST', '/api/packages/pkg/uploaders', (request) { |
| 163 request.response.write("{not json"); | 163 request.response.write("{not json"); |
| 164 request.response.close(); | 164 request.response.close(); |
| 165 }); | 165 }); |
| 166 | 166 |
| 167 expect(pub.nextErrLine(), completion(equals('Invalid server response:'))); | 167 pub.stderr.expect(emitsLines( |
| 168 expect(pub.nextErrLine(), completion(equals('{not json'))); | 168 'Invalid server response:\n' |
| 169 '{not json')); |
| 169 pub.shouldExit(1); | 170 pub.shouldExit(1); |
| 170 }); | 171 }); |
| 171 | 172 |
| 172 integration('remove provides invalid JSON', () { | 173 integration('remove provides invalid JSON', () { |
| 173 var server = new ScheduledServer(); | 174 var server = new ScheduledServer(); |
| 174 d.credentialsFile(server, 'access token').create(); | 175 d.credentialsFile(server, 'access token').create(); |
| 175 var pub = startPubUploader(server, ['--package', 'pkg', 'remove', 'email']); | 176 var pub = startPubUploader(server, ['--package', 'pkg', 'remove', 'email']); |
| 176 | 177 |
| 177 server.handle('DELETE', '/api/packages/pkg/uploaders/email', (request) { | 178 server.handle('DELETE', '/api/packages/pkg/uploaders/email', (request) { |
| 178 request.response.write("{not json"); | 179 request.response.write("{not json"); |
| 179 request.response.close(); | 180 request.response.close(); |
| 180 }); | 181 }); |
| 181 | 182 |
| 182 expect(pub.nextErrLine(), completion(equals('Invalid server response:'))); | 183 pub.stderr.expect(emitsLines( |
| 183 expect(pub.nextErrLine(), completion(equals('{not json'))); | 184 'Invalid server response:\n' |
| 185 '{not json')); |
| 184 pub.shouldExit(1); | 186 pub.shouldExit(1); |
| 185 }); | 187 }); |
| 186 } | 188 } |
| OLD | NEW |