| 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 import 'dart:async'; | 5 import 'dart:async'; | 
| 6 import 'dart:convert'; | 6 import 'dart:convert'; | 
| 7 | 7 | 
| 8 import 'package:test/test.dart'; | 8 import 'package:test/test.dart'; | 
| 9 import 'package:http/http.dart' as http; | 9 import 'package:http/http.dart' as http; | 
| 10 import 'package:oauth2/oauth2.dart' as oauth2; | 10 import 'package:oauth2/oauth2.dart' as oauth2; | 
| 11 | 11 | 
| 12 import 'utils.dart'; | 12 import 'utils.dart'; | 
| 13 | 13 | 
| 14 final redirectUrl = Uri.parse('http://example.com/redirect'); | 14 final redirectUrl = Uri.parse('http://example.com/redirect'); | 
| 15 | 15 | 
| 16 void main() { | 16 void main() { | 
| 17   var client; | 17   var client; | 
| 18   var grant; | 18   var grant; | 
| 19   setUp(() { | 19   setUp(() { | 
| 20     client = new ExpectClient(); | 20     client = new ExpectClient(); | 
| 21     grant = new oauth2.AuthorizationCodeGrant( | 21     grant = new oauth2.AuthorizationCodeGrant( | 
| 22         'identifier', | 22         'identifier', | 
| 23         'secret', |  | 
| 24         Uri.parse('https://example.com/authorization'), | 23         Uri.parse('https://example.com/authorization'), | 
| 25         Uri.parse('https://example.com/token'), | 24         Uri.parse('https://example.com/token'), | 
|  | 25         secret: 'secret', | 
| 26         httpClient: client); | 26         httpClient: client); | 
| 27   }); | 27   }); | 
| 28 | 28 | 
| 29   group('.getAuthorizationUrl', () { | 29   group('.getAuthorizationUrl', () { | 
| 30     test('builds the correct URL', () { | 30     test('builds the correct URL', () { | 
| 31       expect(grant.getAuthorizationUrl(redirectUrl).toString(), | 31       expect(grant.getAuthorizationUrl(redirectUrl).toString(), | 
| 32           equals('https://example.com/authorization' | 32           equals('https://example.com/authorization' | 
| 33               '?response_type=code' | 33               '?response_type=code' | 
| 34               '&client_id=identifier' | 34               '&client_id=identifier' | 
| 35               '&redirect_uri=http%3A%2F%2Fexample.com%2Fredirect')); | 35               '&redirect_uri=http%3A%2F%2Fexample.com%2Fredirect')); | 
| (...skipping 17 matching lines...) Expand all  Loading... | 
| 53           equals('https://example.com/authorization' | 53           equals('https://example.com/authorization' | 
| 54               '?response_type=code' | 54               '?response_type=code' | 
| 55               '&client_id=identifier' | 55               '&client_id=identifier' | 
| 56               '&redirect_uri=http%3A%2F%2Fexample.com%2Fredirect' | 56               '&redirect_uri=http%3A%2F%2Fexample.com%2Fredirect' | 
| 57               '&state=state')); | 57               '&state=state')); | 
| 58     }); | 58     }); | 
| 59 | 59 | 
| 60     test('merges with existing query parameters', () { | 60     test('merges with existing query parameters', () { | 
| 61       grant = new oauth2.AuthorizationCodeGrant( | 61       grant = new oauth2.AuthorizationCodeGrant( | 
| 62           'identifier', | 62           'identifier', | 
| 63           'secret', |  | 
| 64           Uri.parse('https://example.com/authorization?query=value'), | 63           Uri.parse('https://example.com/authorization?query=value'), | 
| 65           Uri.parse('https://example.com/token'), | 64           Uri.parse('https://example.com/token'), | 
|  | 65           secret: 'secret', | 
| 66           httpClient: client); | 66           httpClient: client); | 
| 67 | 67 | 
| 68       var authorizationUrl = grant.getAuthorizationUrl(redirectUrl); | 68       var authorizationUrl = grant.getAuthorizationUrl(redirectUrl); | 
| 69       expect(authorizationUrl.toString(), | 69       expect(authorizationUrl.toString(), | 
| 70           equals('https://example.com/authorization' | 70           equals('https://example.com/authorization' | 
| 71               '?query=value' | 71               '?query=value' | 
| 72               '&response_type=code' | 72               '&response_type=code' | 
| 73               '&client_id=identifier' | 73               '&client_id=identifier' | 
| 74               '&redirect_uri=http%3A%2F%2Fexample.com%2Fredirect')); | 74               '&redirect_uri=http%3A%2F%2Fexample.com%2Fredirect')); | 
| 75     }); | 75     }); | 
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 120     }); | 120     }); | 
| 121 | 121 | 
| 122     test('sends an authorization code request', () { | 122     test('sends an authorization code request', () { | 
| 123       grant.getAuthorizationUrl(redirectUrl); | 123       grant.getAuthorizationUrl(redirectUrl); | 
| 124       client.expectRequest((request) { | 124       client.expectRequest((request) { | 
| 125         expect(request.method, equals('POST')); | 125         expect(request.method, equals('POST')); | 
| 126         expect(request.url.toString(), equals(grant.tokenEndpoint.toString())); | 126         expect(request.url.toString(), equals(grant.tokenEndpoint.toString())); | 
| 127         expect(request.bodyFields, equals({ | 127         expect(request.bodyFields, equals({ | 
| 128           'grant_type': 'authorization_code', | 128           'grant_type': 'authorization_code', | 
| 129           'code': 'auth code', | 129           'code': 'auth code', | 
| 130           'redirect_uri': redirectUrl.toString(), | 130           'redirect_uri': redirectUrl.toString() | 
| 131           'client_id': 'identifier', |  | 
| 132           'client_secret': 'secret' |  | 
| 133         })); | 131         })); | 
|  | 132         expect(request.headers, containsPair( | 
|  | 133             "Authorization", | 
|  | 134             "Basic aWRlbnRpZmllcjpzZWNyZXQ=")); | 
| 134 | 135 | 
| 135         return new Future.value(new http.Response(JSON.encode({ | 136         return new Future.value(new http.Response(JSON.encode({ | 
| 136           'access_token': 'access token', | 137           'access_token': 'access token', | 
| 137           'token_type': 'bearer', | 138           'token_type': 'bearer', | 
| 138         }), 200, headers: {'content-type': 'application/json'})); | 139         }), 200, headers: {'content-type': 'application/json'})); | 
| 139       }); | 140       }); | 
| 140 | 141 | 
| 141       expect(grant.handleAuthorizationResponse({'code': 'auth code'}) | 142       expect(grant.handleAuthorizationResponse({'code': 'auth code'}) | 
| 142             .then((client) => client.credentials.accessToken), | 143             .then((client) => client.credentials.accessToken), | 
| 143           completion(equals('access token'))); | 144           completion(equals('access token'))); | 
| (...skipping 12 matching lines...) Expand all  Loading... | 
| 156     }); | 157     }); | 
| 157 | 158 | 
| 158     test('sends an authorization code request', () { | 159     test('sends an authorization code request', () { | 
| 159       grant.getAuthorizationUrl(redirectUrl); | 160       grant.getAuthorizationUrl(redirectUrl); | 
| 160       client.expectRequest((request) { | 161       client.expectRequest((request) { | 
| 161         expect(request.method, equals('POST')); | 162         expect(request.method, equals('POST')); | 
| 162         expect(request.url.toString(), equals(grant.tokenEndpoint.toString())); | 163         expect(request.url.toString(), equals(grant.tokenEndpoint.toString())); | 
| 163         expect(request.bodyFields, equals({ | 164         expect(request.bodyFields, equals({ | 
| 164           'grant_type': 'authorization_code', | 165           'grant_type': 'authorization_code', | 
| 165           'code': 'auth code', | 166           'code': 'auth code', | 
|  | 167           'redirect_uri': redirectUrl.toString() | 
|  | 168         })); | 
|  | 169         expect(request.headers, containsPair( | 
|  | 170             "Authorization", | 
|  | 171             "Basic aWRlbnRpZmllcjpzZWNyZXQ=")); | 
|  | 172 | 
|  | 173         return new Future.value(new http.Response(JSON.encode({ | 
|  | 174           'access_token': 'access token', | 
|  | 175           'token_type': 'bearer', | 
|  | 176         }), 200, headers: {'content-type': 'application/json'})); | 
|  | 177       }); | 
|  | 178 | 
|  | 179       expect(grant.handleAuthorizationCode('auth code'), | 
|  | 180           completion(predicate((client) { | 
|  | 181             expect(client.credentials.accessToken, equals('access token')); | 
|  | 182             return true; | 
|  | 183           }))); | 
|  | 184     }); | 
|  | 185   }); | 
|  | 186 | 
|  | 187   group("with basicAuth: false", () { | 
|  | 188     setUp(() { | 
|  | 189       client = new ExpectClient(); | 
|  | 190       grant = new oauth2.AuthorizationCodeGrant( | 
|  | 191           'identifier', | 
|  | 192           Uri.parse('https://example.com/authorization'), | 
|  | 193           Uri.parse('https://example.com/token'), | 
|  | 194           secret: 'secret', | 
|  | 195           basicAuth: false, | 
|  | 196           httpClient: client); | 
|  | 197     }); | 
|  | 198 | 
|  | 199     test('.handleAuthorizationResponse sends an authorization code request', | 
|  | 200         () { | 
|  | 201       grant.getAuthorizationUrl(redirectUrl); | 
|  | 202       client.expectRequest((request) { | 
|  | 203         expect(request.method, equals('POST')); | 
|  | 204         expect(request.url.toString(), equals(grant.tokenEndpoint.toString())); | 
|  | 205         expect(request.bodyFields, equals({ | 
|  | 206           'grant_type': 'authorization_code', | 
|  | 207           'code': 'auth code', | 
| 166           'redirect_uri': redirectUrl.toString(), | 208           'redirect_uri': redirectUrl.toString(), | 
| 167           'client_id': 'identifier', | 209           'client_id': 'identifier', | 
| 168           'client_secret': 'secret' | 210           'client_secret': 'secret' | 
|  | 211         })); | 
|  | 212 | 
|  | 213         return new Future.value(new http.Response(JSON.encode({ | 
|  | 214           'access_token': 'access token', | 
|  | 215           'token_type': 'bearer', | 
|  | 216         }), 200, headers: {'content-type': 'application/json'})); | 
|  | 217       }); | 
|  | 218 | 
|  | 219       expect(grant.handleAuthorizationResponse({'code': 'auth code'}) | 
|  | 220             .then((client) => client.credentials.accessToken), | 
|  | 221           completion(equals('access token'))); | 
|  | 222     }); | 
|  | 223 | 
|  | 224     test('.handleAuthorizationCode sends an authorization code request', () { | 
|  | 225       grant.getAuthorizationUrl(redirectUrl); | 
|  | 226       client.expectRequest((request) { | 
|  | 227         expect(request.method, equals('POST')); | 
|  | 228         expect(request.url.toString(), equals(grant.tokenEndpoint.toString())); | 
|  | 229         expect(request.bodyFields, equals({ | 
|  | 230           'grant_type': 'authorization_code', | 
|  | 231           'code': 'auth code', | 
|  | 232           'redirect_uri': redirectUrl.toString(), | 
|  | 233           'client_id': 'identifier', | 
|  | 234           'client_secret': 'secret' | 
| 169         })); | 235         })); | 
| 170 | 236 | 
| 171         return new Future.value(new http.Response(JSON.encode({ | 237         return new Future.value(new http.Response(JSON.encode({ | 
| 172           'access_token': 'access token', | 238           'access_token': 'access token', | 
| 173           'token_type': 'bearer', | 239           'token_type': 'bearer', | 
| 174         }), 200, headers: {'content-type': 'application/json'})); | 240         }), 200, headers: {'content-type': 'application/json'})); | 
| 175       }); | 241       }); | 
| 176 | 242 | 
| 177       expect(grant.handleAuthorizationCode('auth code'), | 243       expect(grant.handleAuthorizationCode('auth code'), | 
| 178           completion(predicate((client) { | 244           completion(predicate((client) { | 
| 179             expect(client.credentials.accessToken, equals('access token')); | 245             expect(client.credentials.accessToken, equals('access token')); | 
| 180             return true; | 246             return true; | 
| 181           }))); | 247           }))); | 
| 182     }); | 248     }); | 
| 183   }); | 249   }); | 
| 184 } | 250 } | 
| OLD | NEW | 
|---|