Substitute pub.dartlang.org for of pub.dev (#3358)
diff --git a/lib/src/command/lish.dart b/lib/src/command/lish.dart
index 99b5051..dc6f9f4 100644
--- a/lib/src/command/lish.dart
+++ b/lib/src/command/lish.dart
@@ -155,7 +155,8 @@
try {
final officialPubServers = {
'https://pub.dartlang.org',
- 'https://pub.dev',
+ // [validateAndNormalizeHostedUrl] normalizes https://pub.dev to
+ // https://pub.dartlang.org, so we don't need to do allow that here.
// Pub uses oauth2 credentials only for authenticating official pub
// servers for security purposes (to not expose pub.dev access token to
diff --git a/lib/src/source/hosted.dart b/lib/src/source/hosted.dart
index 7d08a55..09d9eb1 100644
--- a/lib/src/source/hosted.dart
+++ b/lib/src/source/hosted.dart
@@ -79,6 +79,14 @@
if (u.path.isNotEmpty && !u.path.endsWith('/')) {
u = u.replace(path: u.path + '/');
}
+ // pub.dev and pub.dartlang.org are identical.
+ //
+ // We rewrite here to avoid caching both, and to avoid having different
+ // credentials for these two.
+ if (u == Uri.parse('https://pub.dev')) {
+ log.fine('Using https://pub.dartlang.org instead of https://pub.dev.');
+ u = Uri.parse('https://pub.dartlang.org');
+ }
return u;
}
diff --git a/test/token/add_token_test.dart b/test/token/add_token_test.dart
index ca68c41..65f7d56 100644
--- a/test/token/add_token_test.dart
+++ b/test/token/add_token_test.dart
@@ -150,4 +150,20 @@
includeParentEnvironment: false,
);
});
+
+ test('with https://pub.dev rewrites to https://pub.dartlang.org', () async {
+ await runPub(
+ args: ['token', 'add', 'https://pub.dev'],
+ input: ['auth-token'],
+ silent: contains(
+ 'Using https://pub.dartlang.org instead of https://pub.dev.'),
+ );
+
+ await d.tokensFile({
+ 'version': 1,
+ 'hosted': [
+ {'url': 'https://pub.dartlang.org', 'token': 'auth-token'}
+ ]
+ }).validate();
+ });
}