|  | // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | import 'package:pub/src/exit_codes.dart' as exit_codes; | 
|  | import 'package:test/test.dart'; | 
|  |  | 
|  | import '../descriptor.dart' as d; | 
|  | import '../test_pub.dart'; | 
|  |  | 
|  | void main() { | 
|  | forBothPubGetAndUpgrade((command) { | 
|  | test('fails gracefully if the url is invalid', () async { | 
|  | await d.dir(appPath, [ | 
|  | d.appPubspec( | 
|  | dependencies: { | 
|  | 'foo': { | 
|  | 'hosted': {'name': 'foo', 'url': 'not@url-com'}, | 
|  | }, | 
|  | }, | 
|  | ), | 
|  | ]).create(); | 
|  |  | 
|  | await pubCommand( | 
|  | command, | 
|  | error: contains('url scheme must be https:// or http://'), | 
|  | exitCode: exit_codes.DATA, | 
|  | environment: { | 
|  | 'PUB_MAX_HTTP_RETRIES': '2', | 
|  | }, | 
|  | ); | 
|  | }); | 
|  | test('fails gracefully if the url has querystring', () async { | 
|  | await d.dir(appPath, [ | 
|  | d.appPubspec( | 
|  | dependencies: { | 
|  | 'foo': { | 
|  | 'hosted': {'name': 'foo', 'url': 'http://example.foo/?key=value'}, | 
|  | }, | 
|  | }, | 
|  | ), | 
|  | ]).create(); | 
|  |  | 
|  | await pubCommand( | 
|  | command, | 
|  | error: contains('querystring'), | 
|  | exitCode: exit_codes.DATA, | 
|  | environment: { | 
|  | 'PUB_MAX_HTTP_RETRIES': '2', | 
|  | }, | 
|  | ); | 
|  | }); | 
|  |  | 
|  | test('fails gracefully if the url has fragment', () async { | 
|  | await d.dir(appPath, [ | 
|  | d.appPubspec( | 
|  | dependencies: { | 
|  | 'foo': { | 
|  | 'hosted': {'name': 'foo', 'url': 'http://example.foo/#hash'}, | 
|  | }, | 
|  | }, | 
|  | ), | 
|  | ]).create(); | 
|  |  | 
|  | await pubCommand( | 
|  | command, | 
|  | error: contains('fragment'), | 
|  | exitCode: exit_codes.DATA, | 
|  | environment: { | 
|  | 'PUB_MAX_HTTP_RETRIES': '2', | 
|  | }, | 
|  | ); | 
|  | }); | 
|  |  | 
|  | test('fails gracefully if the url has user-info (1)', () async { | 
|  | await d.dir(appPath, [ | 
|  | d.appPubspec( | 
|  | dependencies: { | 
|  | 'foo': { | 
|  | 'hosted': {'name': 'foo', 'url': 'http://user:pwd@example.foo/'}, | 
|  | }, | 
|  | }, | 
|  | ), | 
|  | ]).create(); | 
|  |  | 
|  | await pubCommand( | 
|  | command, | 
|  | error: contains('user-info'), | 
|  | exitCode: exit_codes.DATA, | 
|  | environment: { | 
|  | 'PUB_MAX_HTTP_RETRIES': '2', | 
|  | }, | 
|  | ); | 
|  | }); | 
|  |  | 
|  | test('fails gracefully if the url has user-info (2)', () async { | 
|  | await d.dir(appPath, [ | 
|  | d.appPubspec( | 
|  | dependencies: { | 
|  | 'foo': { | 
|  | 'hosted': {'name': 'foo', 'url': 'http://user@example.foo/'}, | 
|  | }, | 
|  | }, | 
|  | ), | 
|  | ]).create(); | 
|  |  | 
|  | await pubCommand( | 
|  | command, | 
|  | error: contains('user-info'), | 
|  | exitCode: exit_codes.DATA, | 
|  | environment: { | 
|  | 'PUB_MAX_HTTP_RETRIES': '2', | 
|  | }, | 
|  | ); | 
|  | }); | 
|  | }); | 
|  | } |