| OLD | NEW | 
|---|
| 1 // Copyright (c) 2013, 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 import 'dart:io'; | 
| 5 import 'dart:json' as json; | 6 import 'dart:json' as json; | 
| 6 | 7 | 
| 7 import 'package:scheduled_test/scheduled_test.dart'; | 8 import 'package:scheduled_test/scheduled_test.dart'; | 
| 8 import 'package:scheduled_test/scheduled_server.dart'; | 9 import 'package:scheduled_test/scheduled_server.dart'; | 
| 9 | 10 | 
|  | 11 import '../../../pub/io.dart'; | 
|  | 12 import '../../../pub/utils.dart'; | 
| 10 import '../descriptor.dart' as d; | 13 import '../descriptor.dart' as d; | 
| 11 import '../test_pub.dart'; | 14 import '../test_pub.dart'; | 
| 12 import 'utils.dart'; | 15 import 'utils.dart'; | 
| 13 | 16 | 
| 14 main() { | 17 main() { | 
| 15   initConfig(); | 18   integration('with server-rejected credentials, authenticates again and saves ' | 
| 16   setUp(d.validPackage.create); | 19       'credentials.json', () { | 
| 17 | 20     d.validPackage.create(); | 
| 18   integration('archives and uploads a package', () { |  | 
| 19     var server = new ScheduledServer(); | 21     var server = new ScheduledServer(); | 
| 20     d.credentialsFile(server, 'access token').create(); | 22     d.credentialsFile(server, 'access token').create(); | 
| 21     var pub = startPublish(server); | 23     var pub = startPublish(server); | 
| 22 | 24 | 
| 23     confirmPublish(pub); | 25     confirmPublish(pub); | 
| 24     handleUploadForm(server); |  | 
| 25     handleUpload(server); |  | 
| 26 | 26 | 
| 27     server.handle('GET', '/create', (request) { | 27     server.handle('GET', '/packages/versions/new.json', (request) { | 
| 28       request.response.write(json.stringify({ | 28       var response = request.response; | 
| 29         'success': {'message': 'Package test_pkg 1.0.0 uploaded!'} | 29       response.statusCode = 401; | 
|  | 30       response.headers.set('www-authenticate', 'Bearer error="invalid_token",' | 
|  | 31           ' error_description="your token sucks"'); | 
|  | 32       response.write(json.stringify({ | 
|  | 33         'error': {'message': 'your token sucks'} | 
| 30       })); | 34       })); | 
| 31       request.response.close(); | 35       response.close(); | 
| 32     }); | 36     }); | 
| 33 | 37 | 
|  | 38     expect(pub.nextErrLine(), completion(equals('OAuth2 authorization failed ' | 
|  | 39         '(your token sucks).'))); | 
| 34     // TODO(rnystrom): The confirm line is run together with this one because | 40     // TODO(rnystrom): The confirm line is run together with this one because | 
| 35     // in normal usage, the user will have entered a newline on stdin which | 41     // in normal usage, the user will have entered a newline on stdin which | 
| 36     // gets echoed to the terminal. Do something better here? | 42     // gets echoed to the terminal. Do something better here? | 
| 37     expect(pub.nextLine(), completion(equals( | 43     expect(pub.nextLine(), completion(equals( | 
| 38         'Looks great! Are you ready to upload your package (y/n)?' | 44         'Looks great! Are you ready to upload your package (y/n)? ' | 
| 39         ' Package test_pkg 1.0.0 uploaded!'))); | 45         'Pub needs your authorization to upload packages on your behalf.'))); | 
| 40     pub.shouldExit(0); | 46     pub.kill(); | 
| 41   }); | 47   }); | 
| 42 |  | 
| 43   // TODO(nweiz): Once a multipart/form-data parser in Dart exists, we should |  | 
| 44   // test that "pub lish" chooses the correct files to publish. |  | 
| 45 } | 48 } | 
| OLD | NEW | 
|---|