| 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:io'; | 8 import 'dart:io'; |
| 8 import 'dart:json' as json; | |
| 9 | 9 |
| 10 import 'package:scheduled_test/scheduled_process.dart'; | 10 import 'package:scheduled_test/scheduled_process.dart'; |
| 11 import 'package:scheduled_test/scheduled_server.dart'; | 11 import 'package:scheduled_test/scheduled_server.dart'; |
| 12 import 'package:scheduled_test/scheduled_test.dart'; | 12 import 'package:scheduled_test/scheduled_test.dart'; |
| 13 | 13 |
| 14 import '../lib/src/io.dart'; | 14 import '../lib/src/io.dart'; |
| 15 import '../lib/src/utils.dart'; | 15 import '../lib/src/utils.dart'; |
| 16 import 'descriptor.dart' as d; | 16 import 'descriptor.dart' as d; |
| 17 import 'test_pub.dart'; | 17 import 'test_pub.dart'; |
| 18 | 18 |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 var server = new ScheduledServer(); | 58 var server = new ScheduledServer(); |
| 59 d.credentialsFile(server, 'access token').create(); | 59 d.credentialsFile(server, 'access token').create(); |
| 60 var pub = startPubUploader(server, ['--package', 'pkg', 'add', 'email']); | 60 var pub = startPubUploader(server, ['--package', 'pkg', 'add', 'email']); |
| 61 | 61 |
| 62 server.handle('POST', '/api/packages/pkg/uploaders', (request) { | 62 server.handle('POST', '/api/packages/pkg/uploaders', (request) { |
| 63 expect(new ByteStream(request).toBytes().then((bodyBytes) { | 63 expect(new ByteStream(request).toBytes().then((bodyBytes) { |
| 64 expect(new String.fromCharCodes(bodyBytes), equals('email=email')); | 64 expect(new String.fromCharCodes(bodyBytes), equals('email=email')); |
| 65 | 65 |
| 66 request.response.headers.contentType = | 66 request.response.headers.contentType = |
| 67 new ContentType("application", "json"); | 67 new ContentType("application", "json"); |
| 68 request.response.write(json.stringify({ | 68 request.response.write(JSON.encode({ |
| 69 'success': {'message': 'Good job!'} | 69 'success': {'message': 'Good job!'} |
| 70 })); | 70 })); |
| 71 request.response.close(); | 71 request.response.close(); |
| 72 }), completes); | 72 }), completes); |
| 73 }); | 73 }); |
| 74 | 74 |
| 75 expect(pub.nextLine(), completion(equals('Good job!'))); | 75 expect(pub.nextLine(), completion(equals('Good job!'))); |
| 76 pub.shouldExit(0); | 76 pub.shouldExit(0); |
| 77 }); | 77 }); |
| 78 | 78 |
| 79 integration('removes an uploader', () { | 79 integration('removes an uploader', () { |
| 80 var server = new ScheduledServer(); | 80 var server = new ScheduledServer(); |
| 81 d.credentialsFile(server, 'access token').create(); | 81 d.credentialsFile(server, 'access token').create(); |
| 82 var pub = startPubUploader(server, ['--package', 'pkg', 'remove', 'email']); | 82 var pub = startPubUploader(server, ['--package', 'pkg', 'remove', 'email']); |
| 83 | 83 |
| 84 server.handle('DELETE', '/api/packages/pkg/uploaders/email', (request) { | 84 server.handle('DELETE', '/api/packages/pkg/uploaders/email', (request) { |
| 85 request.response.headers.contentType = | 85 request.response.headers.contentType = |
| 86 new ContentType("application", "json"); | 86 new ContentType("application", "json"); |
| 87 request.response.write(json.stringify({ | 87 request.response.write(JSON.encode({ |
| 88 'success': {'message': 'Good job!'} | 88 'success': {'message': 'Good job!'} |
| 89 })); | 89 })); |
| 90 request.response.close(); | 90 request.response.close(); |
| 91 }); | 91 }); |
| 92 | 92 |
| 93 expect(pub.nextLine(), completion(equals('Good job!'))); | 93 expect(pub.nextLine(), completion(equals('Good job!'))); |
| 94 pub.shouldExit(0); | 94 pub.shouldExit(0); |
| 95 }); | 95 }); |
| 96 | 96 |
| 97 integration('defaults to the current package', () { | 97 integration('defaults to the current package', () { |
| 98 d.validPackage.create(); | 98 d.validPackage.create(); |
| 99 | 99 |
| 100 var server = new ScheduledServer(); | 100 var server = new ScheduledServer(); |
| 101 d.credentialsFile(server, 'access token').create(); | 101 d.credentialsFile(server, 'access token').create(); |
| 102 var pub = startPubUploader(server, ['add', 'email']); | 102 var pub = startPubUploader(server, ['add', 'email']); |
| 103 | 103 |
| 104 server.handle('POST', '/api/packages/test_pkg/uploaders', (request) { | 104 server.handle('POST', '/api/packages/test_pkg/uploaders', (request) { |
| 105 request.response.headers.contentType = | 105 request.response.headers.contentType = |
| 106 new ContentType("application", "json"); | 106 new ContentType("application", "json"); |
| 107 request.response.write(json.stringify({ | 107 request.response.write(JSON.encode({ |
| 108 'success': {'message': 'Good job!'} | 108 'success': {'message': 'Good job!'} |
| 109 })); | 109 })); |
| 110 request.response.close(); | 110 request.response.close(); |
| 111 }); | 111 }); |
| 112 | 112 |
| 113 expect(pub.nextLine(), completion(equals('Good job!'))); | 113 expect(pub.nextLine(), completion(equals('Good job!'))); |
| 114 pub.shouldExit(0); | 114 pub.shouldExit(0); |
| 115 }); | 115 }); |
| 116 | 116 |
| 117 integration('add provides an error', () { | 117 integration('add provides an error', () { |
| 118 var server = new ScheduledServer(); | 118 var server = new ScheduledServer(); |
| 119 d.credentialsFile(server, 'access token').create(); | 119 d.credentialsFile(server, 'access token').create(); |
| 120 var pub = startPubUploader(server, ['--package', 'pkg', 'add', 'email']); | 120 var pub = startPubUploader(server, ['--package', 'pkg', 'add', 'email']); |
| 121 | 121 |
| 122 server.handle('POST', '/api/packages/pkg/uploaders', (request) { | 122 server.handle('POST', '/api/packages/pkg/uploaders', (request) { |
| 123 request.response.statusCode = 400; | 123 request.response.statusCode = 400; |
| 124 request.response.headers.contentType = | 124 request.response.headers.contentType = |
| 125 new ContentType("application", "json"); | 125 new ContentType("application", "json"); |
| 126 request.response.write(json.stringify({ | 126 request.response.write(JSON.encode({ |
| 127 'error': {'message': 'Bad job!'} | 127 'error': {'message': 'Bad job!'} |
| 128 })); | 128 })); |
| 129 request.response.close(); | 129 request.response.close(); |
| 130 }); | 130 }); |
| 131 | 131 |
| 132 expect(pub.nextErrLine(), completion(equals('Bad job!'))); | 132 expect(pub.nextErrLine(), completion(equals('Bad job!'))); |
| 133 pub.shouldExit(1); | 133 pub.shouldExit(1); |
| 134 }); | 134 }); |
| 135 | 135 |
| 136 integration('remove provides an error', () { | 136 integration('remove provides an error', () { |
| 137 var server = new ScheduledServer(); | 137 var server = new ScheduledServer(); |
| 138 d.credentialsFile(server, 'access token').create(); | 138 d.credentialsFile(server, 'access token').create(); |
| 139 var pub = startPubUploader(server, | 139 var pub = startPubUploader(server, |
| 140 ['--package', 'pkg', 'remove', 'e/mail']); | 140 ['--package', 'pkg', 'remove', 'e/mail']); |
| 141 | 141 |
| 142 server.handle('DELETE', '/api/packages/pkg/uploaders/e%2Fmail', (request) { | 142 server.handle('DELETE', '/api/packages/pkg/uploaders/e%2Fmail', (request) { |
| 143 request.response.statusCode = 400; | 143 request.response.statusCode = 400; |
| 144 request.response.headers.contentType = | 144 request.response.headers.contentType = |
| 145 new ContentType("application", "json"); | 145 new ContentType("application", "json"); |
| 146 request.response.write(json.stringify({ | 146 request.response.write(JSON.encode({ |
| 147 'error': {'message': 'Bad job!'} | 147 'error': {'message': 'Bad job!'} |
| 148 })); | 148 })); |
| 149 request.response.close(); | 149 request.response.close(); |
| 150 }); | 150 }); |
| 151 | 151 |
| 152 expect(pub.nextErrLine(), completion(equals('Bad job!'))); | 152 expect(pub.nextErrLine(), completion(equals('Bad job!'))); |
| 153 pub.shouldExit(1); | 153 pub.shouldExit(1); |
| 154 }); | 154 }); |
| 155 | 155 |
| 156 integration('add provides invalid JSON', () { | 156 integration('add provides invalid JSON', () { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 176 server.handle('DELETE', '/api/packages/pkg/uploaders/email', (request) { | 176 server.handle('DELETE', '/api/packages/pkg/uploaders/email', (request) { |
| 177 request.response.write("{not json"); | 177 request.response.write("{not json"); |
| 178 request.response.close(); | 178 request.response.close(); |
| 179 }); | 179 }); |
| 180 | 180 |
| 181 expect(pub.nextErrLine(), completion(equals('Invalid server response:'))); | 181 expect(pub.nextErrLine(), completion(equals('Invalid server response:'))); |
| 182 expect(pub.nextErrLine(), completion(equals('{not json'))); | 182 expect(pub.nextErrLine(), completion(equals('{not json'))); |
| 183 pub.shouldExit(1); | 183 pub.shouldExit(1); |
| 184 }); | 184 }); |
| 185 } | 185 } |
| OLD | NEW |