| Index: utils/pub/oauth2.dart
 | 
| diff --git a/utils/pub/oauth2.dart b/utils/pub/oauth2.dart
 | 
| index cc80d862be004344d49b04556c200de984ad00df..6543ecd06528cbf626ccba93d131b090d1e78bc9 100644
 | 
| --- a/utils/pub/oauth2.dart
 | 
| +++ b/utils/pub/oauth2.dart
 | 
| @@ -35,14 +35,23 @@ final _secret = 'SWeqj8seoJW0w7_CpEPFLX0K';
 | 
|  /// a refresh token from the server. See the [Google OAuth2 documentation][].
 | 
|  ///
 | 
|  /// [Google OAuth2 documentation]: https://developers.google.com/accounts/docs/OAuth2WebServer#offline
 | 
| -final _authorizationEndpoint = Uri.parse(
 | 
| +final authorizationEndpoint = Uri.parse(
 | 
|      'https://accounts.google.com/o/oauth2/auth?access_type=offline'
 | 
|      '&approval_prompt=force');
 | 
|  
 | 
|  /// The URL from which the pub client will request an access token once it's
 | 
| -/// been authorized by the user.
 | 
| -final _tokenEndpoint = Uri.parse(
 | 
| -    'https://accounts.google.com/o/oauth2/token');
 | 
| +/// been authorized by the user. This can be controlled externally by setting
 | 
| +/// the _PUB_TEST_TOKEN_ENDPOINT environment variable.
 | 
| +Uri get tokenEndpoint {
 | 
| +  var tokenEndpoint = Platform.environment['_PUB_TEST_TOKEN_ENDPOINT'];
 | 
| +  if (tokenEndpoint != null) {
 | 
| +    return Uri.parse(tokenEndpoint);
 | 
| +  } else {
 | 
| +    return _tokenEndpoint;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +final _tokenEndpoint = Uri.parse('https://accounts.google.com/o/oauth2/token');
 | 
|  
 | 
|  /// The OAuth2 scopes that the pub client needs. Currently the client only needs
 | 
|  /// the user's email so that the server can verify their identity.
 | 
| @@ -152,18 +161,10 @@ String _credentialsFile(SystemCache cache) =>
 | 
|  /// Gets the user to authorize pub as a client of pub.dartlang.org via oauth2.
 | 
|  /// Returns a Future that will complete to a fully-authorized [Client].
 | 
|  Future<Client> _authorize() {
 | 
| -  // Allow the tests to inject their own token endpoint URL.
 | 
| -  var tokenEndpoint = Platform.environment['_PUB_TEST_TOKEN_ENDPOINT'];
 | 
| -  if (tokenEndpoint != null) {
 | 
| -    tokenEndpoint = Uri.parse(tokenEndpoint);
 | 
| -  } else {
 | 
| -    tokenEndpoint = _tokenEndpoint;
 | 
| -  }
 | 
| -
 | 
|    var grant = new AuthorizationCodeGrant(
 | 
|        _identifier,
 | 
|        _secret,
 | 
| -      _authorizationEndpoint,
 | 
| +      authorizationEndpoint,
 | 
|        tokenEndpoint,
 | 
|        httpClient: httpClient);
 | 
|  
 | 
| 
 |