OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 'test_pub.dart'; | 10 import 'test_pub.dart'; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
47 output: USAGE_STRING, exitCode: 64); | 47 output: USAGE_STRING, exitCode: 64); |
48 }); | 48 }); |
49 }); | 49 }); |
50 | 50 |
51 integration('adds an uploader', () { | 51 integration('adds an uploader', () { |
52 var server = new ScheduledServer(); | 52 var server = new ScheduledServer(); |
53 credentialsFile(server, 'access token').scheduleCreate(); | 53 credentialsFile(server, 'access token').scheduleCreate(); |
54 var pub = startPubUploader(server, ['--package', 'pkg', 'add', 'email']); | 54 var pub = startPubUploader(server, ['--package', 'pkg', 'add', 'email']); |
55 | 55 |
56 server.handle('POST', '/packages/pkg/uploaders.json', (request, response) { | 56 server.handle('POST', '/packages/pkg/uploaders.json', (request, response) { |
57 expect(wrapInputStream(request.inputStream).toBytes().then((bodyBytes) { | 57 expect(new ByteStream(request).toBytes().then((bodyBytes) { |
58 expect(new String.fromCharCodes(bodyBytes), equals('email=email')); | 58 expect(new String.fromCharCodes(bodyBytes), equals('email=email')); |
59 | 59 |
60 response.headers.contentType = new ContentType("application", "json"); | 60 response.headers.contentType = new ContentType("application", "json"); |
61 response.outputStream.writeString(json.stringify({ | 61 response.addString(json.stringify({ |
62 'success': {'message': 'Good job!'} | 62 'success': {'message': 'Good job!'} |
63 })); | 63 })); |
64 response.outputStream.close(); | 64 response.close(); |
65 }), completes); | 65 }), completes); |
66 }); | 66 }); |
67 | 67 |
68 expectLater(pub.nextLine(), equals('Good job!')); | 68 expectLater(pub.nextLine(), equals('Good job!')); |
69 pub.shouldExit(0); | 69 pub.shouldExit(0); |
70 }); | 70 }); |
71 | 71 |
72 integration('removes an uploader', () { | 72 integration('removes an uploader', () { |
73 var server = new ScheduledServer(); | 73 var server = new ScheduledServer(); |
74 credentialsFile(server, 'access token').scheduleCreate(); | 74 credentialsFile(server, 'access token').scheduleCreate(); |
75 var pub = startPubUploader(server, ['--package', 'pkg', 'remove', 'email']); | 75 var pub = startPubUploader(server, ['--package', 'pkg', 'remove', 'email']); |
76 | 76 |
77 server.handle('DELETE', '/packages/pkg/uploaders/email.json', | 77 server.handle('DELETE', '/packages/pkg/uploaders/email.json', |
78 (request, response) { | 78 (request, response) { |
79 response.headers.contentType = new ContentType("application", "json"); | 79 response.headers.contentType = new ContentType("application", "json"); |
80 response.outputStream.writeString(json.stringify({ | 80 response.addString(json.stringify({ |
81 'success': {'message': 'Good job!'} | 81 'success': {'message': 'Good job!'} |
82 })); | 82 })); |
83 response.outputStream.close(); | 83 response.close(); |
84 }); | 84 }); |
85 | 85 |
86 expectLater(pub.nextLine(), equals('Good job!')); | 86 expectLater(pub.nextLine(), equals('Good job!')); |
87 pub.shouldExit(0); | 87 pub.shouldExit(0); |
88 }); | 88 }); |
89 | 89 |
90 integration('defaults to the current package', () { | 90 integration('defaults to the current package', () { |
91 normalPackage.scheduleCreate(); | 91 normalPackage.scheduleCreate(); |
92 | 92 |
93 var server = new ScheduledServer(); | 93 var server = new ScheduledServer(); |
94 credentialsFile(server, 'access token').scheduleCreate(); | 94 credentialsFile(server, 'access token').scheduleCreate(); |
95 var pub = startPubUploader(server, ['add', 'email']); | 95 var pub = startPubUploader(server, ['add', 'email']); |
96 | 96 |
97 server.handle('POST', '/packages/test_pkg/uploaders.json', | 97 server.handle('POST', '/packages/test_pkg/uploaders.json', |
98 (request, response) { | 98 (request, response) { |
99 response.headers.contentType = new ContentType("application", "json"); | 99 response.headers.contentType = new ContentType("application", "json"); |
100 response.outputStream.writeString(json.stringify({ | 100 response.addString(json.stringify({ |
101 'success': {'message': 'Good job!'} | 101 'success': {'message': 'Good job!'} |
102 })); | 102 })); |
103 response.outputStream.close(); | 103 response.close(); |
104 }); | 104 }); |
105 | 105 |
106 expectLater(pub.nextLine(), equals('Good job!')); | 106 expectLater(pub.nextLine(), equals('Good job!')); |
107 pub.shouldExit(0); | 107 pub.shouldExit(0); |
108 }); | 108 }); |
109 | 109 |
110 integration('add provides an error', () { | 110 integration('add provides an error', () { |
111 var server = new ScheduledServer(); | 111 var server = new ScheduledServer(); |
112 credentialsFile(server, 'access token').scheduleCreate(); | 112 credentialsFile(server, 'access token').scheduleCreate(); |
113 var pub = startPubUploader(server, ['--package', 'pkg', 'add', 'email']); | 113 var pub = startPubUploader(server, ['--package', 'pkg', 'add', 'email']); |
114 | 114 |
115 server.handle('POST', '/packages/pkg/uploaders.json', (request, response) { | 115 server.handle('POST', '/packages/pkg/uploaders.json', (request, response) { |
116 response.statusCode = 400; | 116 response.statusCode = 400; |
117 response.headers.contentType = new ContentType("application", "json"); | 117 response.headers.contentType = new ContentType("application", "json"); |
118 response.outputStream.writeString(json.stringify({ | 118 response.addString(json.stringify({ |
119 'error': {'message': 'Bad job!'} | 119 'error': {'message': 'Bad job!'} |
120 })); | 120 })); |
121 response.outputStream.close(); | 121 response.close(); |
122 }); | 122 }); |
123 | 123 |
124 expectLater(pub.nextErrLine(), equals('Bad job!')); | 124 expectLater(pub.nextErrLine(), equals('Bad job!')); |
125 pub.shouldExit(1); | 125 pub.shouldExit(1); |
126 }); | 126 }); |
127 | 127 |
128 integration('remove provides an error', () { | 128 integration('remove provides an error', () { |
129 var server = new ScheduledServer(); | 129 var server = new ScheduledServer(); |
130 credentialsFile(server, 'access token').scheduleCreate(); | 130 credentialsFile(server, 'access token').scheduleCreate(); |
131 var pub = startPubUploader(server, | 131 var pub = startPubUploader(server, |
132 ['--package', 'pkg', 'remove', 'e/mail']); | 132 ['--package', 'pkg', 'remove', 'e/mail']); |
133 | 133 |
134 server.handle('DELETE', '/packages/pkg/uploaders/e%2Fmail.json', | 134 server.handle('DELETE', '/packages/pkg/uploaders/e%2Fmail.json', |
135 (request, response) { | 135 (request, response) { |
136 response.statusCode = 400; | 136 response.statusCode = 400; |
137 response.headers.contentType = new ContentType("application", "json"); | 137 response.headers.contentType = new ContentType("application", "json"); |
138 response.outputStream.writeString(json.stringify({ | 138 response.addString(json.stringify({ |
139 'error': {'message': 'Bad job!'} | 139 'error': {'message': 'Bad job!'} |
140 })); | 140 })); |
141 response.outputStream.close(); | 141 response.close(); |
142 }); | 142 }); |
143 | 143 |
144 expectLater(pub.nextErrLine(), equals('Bad job!')); | 144 expectLater(pub.nextErrLine(), equals('Bad job!')); |
145 pub.shouldExit(1); | 145 pub.shouldExit(1); |
146 }); | 146 }); |
147 | 147 |
148 integration('add provides invalid JSON', () { | 148 integration('add provides invalid JSON', () { |
149 var server = new ScheduledServer(); | 149 var server = new ScheduledServer(); |
150 credentialsFile(server, 'access token').scheduleCreate(); | 150 credentialsFile(server, 'access token').scheduleCreate(); |
151 var pub = startPubUploader(server, ['--package', 'pkg', 'add', 'email']); | 151 var pub = startPubUploader(server, ['--package', 'pkg', 'add', 'email']); |
152 | 152 |
153 server.handle('POST', '/packages/pkg/uploaders.json', (request, response) { | 153 server.handle('POST', '/packages/pkg/uploaders.json', (request, response) { |
154 response.outputStream.writeString("{not json"); | 154 response.addString("{not json"); |
155 response.outputStream.close(); | 155 response.close(); |
156 }); | 156 }); |
157 | 157 |
158 expectLater(pub.nextErrLine(), equals('Invalid server response:')); | 158 expectLater(pub.nextErrLine(), equals('Invalid server response:')); |
159 expectLater(pub.nextErrLine(), equals('{not json')); | 159 expectLater(pub.nextErrLine(), equals('{not json')); |
160 pub.shouldExit(1); | 160 pub.shouldExit(1); |
161 }); | 161 }); |
162 | 162 |
163 integration('remove provides invalid JSON', () { | 163 integration('remove provides invalid JSON', () { |
164 var server = new ScheduledServer(); | 164 var server = new ScheduledServer(); |
165 credentialsFile(server, 'access token').scheduleCreate(); | 165 credentialsFile(server, 'access token').scheduleCreate(); |
166 var pub = startPubUploader(server, ['--package', 'pkg', 'remove', 'email']); | 166 var pub = startPubUploader(server, ['--package', 'pkg', 'remove', 'email']); |
167 | 167 |
168 server.handle('DELETE', '/packages/pkg/uploaders/email.json', | 168 server.handle('DELETE', '/packages/pkg/uploaders/email.json', |
169 (request, response) { | 169 (request, response) { |
170 response.outputStream.writeString("{not json"); | 170 response.addString("{not json"); |
171 response.outputStream.close(); | 171 response.close(); |
172 }); | 172 }); |
173 | 173 |
174 expectLater(pub.nextErrLine(), equals('Invalid server response:')); | 174 expectLater(pub.nextErrLine(), equals('Invalid server response:')); |
175 expectLater(pub.nextErrLine(), equals('{not json')); | 175 expectLater(pub.nextErrLine(), equals('{not json')); |
176 pub.shouldExit(1); | 176 pub.shouldExit(1); |
177 }); | 177 }); |
178 } | 178 } |
OLD | NEW |