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

Unified Diff: pkg/oauth2/test/client_test.dart

Issue 11316325: Make the oauth2 lib handle OAuth2 401 errors. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Code review changes. Created 8 years 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
« no previous file with comments | « pkg/oauth2/lib/src/utils.dart ('k') | pkg/oauth2/test/utils_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/oauth2/test/client_test.dart
diff --git a/pkg/oauth2/test/client_test.dart b/pkg/oauth2/test/client_test.dart
index 94b792038bff8bf407be500848c10cfd312e16af..fba14a626e6479bde68464a0266688a391afb7c0 100644
--- a/pkg/oauth2/test/client_test.dart
+++ b/pkg/oauth2/test/client_test.dart
@@ -117,4 +117,109 @@ void main() {
expect(client.refreshCredentials(), throwsStateError);
});
});
+
+ group('with invalid credentials', () {
+ setUp(createHttpClient);
+
+ test('throws an AuthorizationException for a 401 response', () {
+ var credentials = new oauth2.Credentials('access token');
+ var client = new oauth2.Client('identifier', 'secret', credentials,
+ httpClient: httpClient);
+
+ httpClient.expectRequest((request) {
+ expect(request.method, equals('GET'));
+ expect(request.url.toString(), equals(requestUri.toString()));
+ expect(request.headers['authorization'],
+ equals('Bearer access token'));
+
+ var authenticate = 'Bearer error="invalid_token", error_description='
+ '"Something is terribly wrong."';
+ return new Future.immediate(new http.Response('bad job', 401,
+ headers: {'www-authenticate': authenticate}));
+ });
+
+ expect(client.read(requestUri), throwsAuthorizationException);
+ });
+
+ test('passes through a 401 response without www-authenticate', () {
+ var credentials = new oauth2.Credentials('access token');
+ var client = new oauth2.Client('identifier', 'secret', credentials,
+ httpClient: httpClient);
+
+ httpClient.expectRequest((request) {
+ expect(request.method, equals('GET'));
+ expect(request.url.toString(), equals(requestUri.toString()));
+ expect(request.headers['authorization'],
+ equals('Bearer access token'));
+
+ return new Future.immediate(new http.Response('bad job', 401));
+ });
+
+ expect(
+ client.get(requestUri).transform((response) => response.statusCode),
+ completion(equals(401)));
+ });
+
+ test('passes through a 401 response with invalid www-authenticate', () {
+ var credentials = new oauth2.Credentials('access token');
+ var client = new oauth2.Client('identifier', 'secret', credentials,
+ httpClient: httpClient);
+
+ httpClient.expectRequest((request) {
+ expect(request.method, equals('GET'));
+ expect(request.url.toString(), equals(requestUri.toString()));
+ expect(request.headers['authorization'],
+ equals('Bearer access token'));
+
+ var authenticate = 'Bearer error="invalid_token", error_description='
+ '"Something is terribly wrong.", ';
+ return new Future.immediate(new http.Response('bad job', 401,
+ headers: {'www-authenticate': authenticate}));
+ });
+
+ expect(
+ client.get(requestUri).transform((response) => response.statusCode),
+ completion(equals(401)));
+ });
+
+ test('passes through a 401 response with non-bearer www-authenticate', () {
+ var credentials = new oauth2.Credentials('access token');
+ var client = new oauth2.Client('identifier', 'secret', credentials,
+ httpClient: httpClient);
+
+ httpClient.expectRequest((request) {
+ expect(request.method, equals('GET'));
+ expect(request.url.toString(), equals(requestUri.toString()));
+ expect(request.headers['authorization'],
+ equals('Bearer access token'));
+
+ return new Future.immediate(new http.Response('bad job', 401,
+ headers: {'www-authenticate': 'Digest'}));
+ });
+
+ expect(
+ client.get(requestUri).transform((response) => response.statusCode),
+ completion(equals(401)));
+ });
+
+ test('passes through a 401 response with non-OAuth2 www-authenticate', () {
+ var credentials = new oauth2.Credentials('access token');
+ var client = new oauth2.Client('identifier', 'secret', credentials,
+ httpClient: httpClient);
+
+ httpClient.expectRequest((request) {
+ expect(request.method, equals('GET'));
+ expect(request.url.toString(), equals(requestUri.toString()));
+ expect(request.headers['authorization'],
+ equals('Bearer access token'));
+
+ return new Future.immediate(new http.Response('bad job', 401,
+ headers: {'www-authenticate': 'Bearer'}));
+ });
+
+ expect(
+ client.get(requestUri).transform((response) => response.statusCode),
+ completion(equals(401)));
+ });
+ });
}
« no previous file with comments | « pkg/oauth2/lib/src/utils.dart ('k') | pkg/oauth2/test/utils_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698