| Index: utils/tests/pub/oauth2_test.dart
|
| diff --git a/utils/tests/pub/oauth2_test.dart b/utils/tests/pub/oauth2_test.dart
|
| index f640e114326546ec17a87bafb05d7e2224cdcfc7..08d97fe4861c15f5956ac259827f7f6579e595ec 100644
|
| --- a/utils/tests/pub/oauth2_test.dart
|
| +++ b/utils/tests/pub/oauth2_test.dart
|
| @@ -149,6 +149,36 @@ main() {
|
|
|
| run();
|
| });
|
| +
|
| + test('with server-rejected credentials, authenticates again and saves '
|
| + 'credentials.json', () {
|
| + var server = new ScheduledServer();
|
| + credentialsFile(server, 'access token').scheduleCreate();
|
| + var pub = startPubLish(server);
|
| +
|
| + confirmPublish(pub);
|
| +
|
| + server.handle('GET', '/packages/versions/new.json', (request, response) {
|
| + response.statusCode = 401;
|
| + response.headers.set('www-authenticate', 'Bearer error="invalid_token",'
|
| + ' error_description="your token sucks"');
|
| + response.outputStream.writeString(JSON.stringify({
|
| + 'error': {'message': 'your token sucks'}
|
| + }));
|
| + response.outputStream.close();
|
| + });
|
| +
|
| + expectLater(pub.nextErrLine(), equals('OAuth2 authorization failed (your '
|
| + 'token sucks).'));
|
| + // TODO(rnystrom): The confirm line is run together with this one because
|
| + // in normal usage, the user will have entered a newline on stdin which
|
| + // gets echoed to the terminal. Do something better here?
|
| + expectLater(pub.nextLine(), equals(
|
| + 'Looks great! Are you ready to upload your package (y/n)? '
|
| + 'Pub needs your authorization to upload packages on your behalf.'));
|
| + pub.kill();
|
| + run();
|
| + });
|
| }
|
|
|
| void authorizePub(ScheduledProcess pub, ScheduledServer server,
|
|
|