Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(61)

Unified Diff: utils/tests/pub/oauth2_test.dart

Issue 11348268: Don't require users to copy-paste authorization codes when authorizing pub. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: utils/tests/pub/oauth2_test.dart
diff --git a/utils/tests/pub/oauth2_test.dart b/utils/tests/pub/oauth2_test.dart
index 9d8463087966674c52a46e3ba623d4122c76a95c..33c9de2f69cd516247d0c3f4b910d2a49baa178c 100644
--- a/utils/tests/pub/oauth2_test.dart
+++ b/utils/tests/pub/oauth2_test.dart
@@ -6,10 +6,13 @@ library oauth2_test;
import 'dart:io';
import 'dart:json';
+import 'dart:uri';
import 'test_pub.dart';
+import '../../../pkg/http/lib/http.dart' as http;
import '../../../pkg/unittest/lib/unittest.dart';
import '../../pub/io.dart';
+import '../../pub/utils.dart';
main() {
setUp(() => dir(appPath, [libPubspec("test_pkg", "1.0.0")]).scheduleCreate());
@@ -18,12 +21,7 @@ main() {
() {
var server = new ScheduledServer();
var pub = startPubLish(server);
-
- expectLater(pub.nextLine(), equals('Pub needs your '
- 'authorization to upload packages on your behalf.'));
- pub.writeLine('access code');
-
- handleAccessTokenRequest(server, "access token");
+ authorizePub(pub, server);
server.handle('GET', '/packages/versions/new.json', (request, response) {
expect(request.headers.value('authorization'),
@@ -107,11 +105,7 @@ main() {
expectLater(pub.nextErrLine(), equals("Pub's authorization to upload "
"packages has expired and can't be automatically refreshed."));
- expectLater(pub.nextLine(), equals('Pub needs your '
- 'authorization to upload packages on your behalf.'));
- pub.writeLine('access code');
-
- handleAccessTokenRequest(server, "new access token");
+ authorizePub(pub, server, "new access token");
server.handle('GET', '/packages/versions/new.json', (request, response) {
expect(request.headers.value('authorization'),
@@ -135,12 +129,7 @@ main() {
]).scheduleCreate();
var pub = startPubLish(server);
-
- expectLater(pub.nextLine(), equals('Pub needs your '
- 'authorization to upload packages on your behalf.'));
- pub.writeLine('access code');
-
- handleAccessTokenRequest(server, "new access token");
+ authorizePub(pub, server, "new access token");
server.handle('GET', '/packages/versions/new.json', (request, response) {
expect(request.headers.value('authorization'),
@@ -157,6 +146,28 @@ main() {
});
}
+void authorizePub(ScheduledProcess pub, ScheduledServer server,
+ [String accessToken="access token"]) {
+ expectLater(pub.nextLine(), equals('Pub needs your '
+ 'authorization to upload packages on your behalf.'));
+
+ expectLater(pub.nextLine().chain((line) {
+ var match = new RegExp(r'[?&]redirect_uri=([0-9a-zA-Z%+-]+)[$&]')
+ .firstMatch(line);
+ expect(match, isNotNull);
+
+ var redirectUrl = new Uri.fromString(decodeUriComponent(match.group(1)));
+ redirectUrl = addQueryParameters(redirectUrl, {'code': 'access code'});
+ return (new http.Request('GET', redirectUrl)..followRedirects = false)
+ .send();
+ }).transform((response) {
+ expect(response.headers['location'],
+ equals(['http://pub.dartlang.org/authorized']));
+ }), anything);
+
+ handleAccessTokenRequest(server, accessToken);
+}
+
void handleAccessTokenRequest(ScheduledServer server, String accessToken) {
server.handle('POST', '/token', (request, response) {
return consumeInputStream(request.inputStream).transform((bytes) {
« utils/pub/utils.dart ('K') | « utils/pub/utils.dart ('k') | utils/tests/pub/test_pub.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698