| // Copyright (c) 2021, 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. | |
| @TestOn('vm') | |
| library; | |
| import 'package:pub/src/exit_codes.dart' as exit_codes; | |
| import 'package:test/test.dart'; | |
| import '../descriptor.dart' as d; | |
| import '../lish/utils.dart'; | |
| import '../test_pub.dart'; | |
| void main() { | |
| test('with a pre existing environment token authenticates', () async { | |
| await servePackages(); | |
| await d.validPackage().create(); | |
| await d.tokensFile({ | |
| 'version': 1, | |
| 'hosted': [ | |
| {'url': globalServer.url, 'env': 'TOKEN'}, | |
| ], | |
| }).create(); | |
| final pub = await startPublish( | |
| globalServer, | |
| overrideDefaultHostedServer: false, | |
| environment: {'TOKEN': 'access-token'}, | |
| ); | |
| await confirmPublish(pub); | |
| handleUploadForm(globalServer); | |
| await pub.shouldExit(1); | |
| }); | |
| test('with an invalid environment token fails with error', () async { | |
| await servePackages(); | |
| await d.validPackage().create(); | |
| await d.tokensFile({ | |
| 'version': 1, | |
| 'hosted': [ | |
| {'url': globalServer.url, 'env': 'TOKEN'}, | |
| ], | |
| }).create(); | |
| await runPub( | |
| args: ['publish'], | |
| environment: { | |
| 'TOKEN': 'access-token@', // '@' is not allowed in bearer tokens | |
| }, | |
| error: contains( | |
| 'Credential token for ${globalServer.url} is not a valid Bearer token.', | |
| ), | |
| exitCode: exit_codes.DATA, | |
| ); | |
| }); | |
| test('with a pre existing invalid opaque token fails with error', () async { | |
| await servePackages(); | |
| await d.validPackage().create(); | |
| await d.tokensFile({ | |
| 'version': 1, | |
| 'hosted': [ | |
| // Corrupted files can be created by earlier pub versions that did not | |
| // validate, or by manual edits. | |
| { | |
| 'url': globalServer.url, | |
| 'token': 'access-token@', // '@' is not allowed in bearer tokens | |
| }, | |
| ], | |
| }).create(); | |
| await runPub( | |
| args: ['publish'], | |
| environment: { | |
| 'TOKEN': 'access-token@', // '@' is not allowed in bearer tokens | |
| }, | |
| error: contains( | |
| 'Credential token for ${globalServer.url} is not a valid Bearer token.', | |
| ), | |
| exitCode: exit_codes.DATA, | |
| ); | |
| }); | |
| test('with a pre existing opaque token authenticates', () async { | |
| await servePackages(); | |
| await d.validPackage().create(); | |
| await d.tokensFile({ | |
| 'version': 1, | |
| 'hosted': [ | |
| {'url': globalServer.url, 'token': 'access-token'}, | |
| ], | |
| }).create(); | |
| final pub = await startPublish( | |
| globalServer, | |
| overrideDefaultHostedServer: false, | |
| ); | |
| await confirmPublish(pub); | |
| handleUploadForm(globalServer); | |
| await pub.shouldExit(1); | |
| }); | |
| } |