| 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 |