Skip to content

Commit 855fd17

Browse files
committed
Only update email list, no google.com exemption
1 parent 6bd343e commit 855fd17

File tree

3 files changed

+22
-18
lines changed

3 files changed

+22
-18
lines changed

app/lib/admin/actions/package_reserve.dart

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,14 @@ final packageReserve = AdminAction(
1212
name: 'package-reserve',
1313
summary: 'Creates a ReservedPackage entity.',
1414
description: '''
15-
Reserves a package name that can be claimed by @google.com accounts or
16-
the allowed list of email addresses.
15+
Reserves a package name that can be claimed by the specified list of email addresses.
1716
18-
The action can be re-run with the same package name. In such cases the provided
19-
email list will be added to the existing ReservedPackage entity.
17+
The action can be re-run with the same package name. In such cases the previous
18+
email list will be discarded, and the specified email list will be updated to the
19+
existing ReservedPackage entity.
20+
21+
When no emails are specified, the package will be reserved, but no user may be
22+
able to claim it.
2023
''',
2124
options: {
2225
'package': 'The package name to be reserved.',
@@ -43,9 +46,7 @@ email list will be added to the existing ReservedPackage entity.
4346
final existing = await tx.lookupOrNull<ReservedPackage>(
4447
dbService.emptyKey.append(ReservedPackage, id: package));
4548
final entry = existing ?? ReservedPackage.init(package);
46-
if (emails != null) {
47-
entry.emails = <String>{...entry.emails, ...emails}.toList();
48-
}
49+
entry.emails = <String>{...?emails}.toList();
4950
tx.insert(entry);
5051
return entry;
5152
});

app/lib/package/backend.dart

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1023,13 +1023,16 @@ class PackageBackend {
10231023
required AuthenticatedAgent agent,
10241024
}) async {
10251025
final reservedPackage = await lookupReservedPackage(name);
1026-
final reservedEmails = reservedPackage?.emails ?? const <String>[];
10271026

10281027
bool isAllowedUser = false;
10291028
if (agent is AuthenticatedUser) {
10301029
final email = agent.user.email;
1031-
isAllowedUser = email != null &&
1032-
(email.endsWith('@google.com') || reservedEmails.contains(email));
1030+
if (reservedPackage != null) {
1031+
final reservedEmails = reservedPackage.emails;
1032+
isAllowedUser = email != null && reservedEmails.contains(email);
1033+
} else {
1034+
isAllowedUser = email != null && email.endsWith('@google.com');
1035+
}
10331036
}
10341037

10351038
final isReservedName =

app/test/admin/package_reserve_test.dart

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -85,18 +85,18 @@ void main() {
8585
expect(rp, isNull);
8686
});
8787

88-
testWithProfile('allows Dart-team publishing', fn: () async {
88+
testWithProfile('no longer allows Dart-team exemption', fn: () async {
8989
await _reserve('pkg');
9090

9191
final pubspecContent = generatePubspecYaml('pkg', '1.0.0');
9292
final bytes = await packageArchiveBytes(pubspecContent: pubspecContent);
93-
await createPubApiClient(
94-
authToken: createFakeAuthTokenForEmail('[email protected]',
95-
audience: 'fake-client-audience'))
96-
.uploadPackageBytes(bytes);
97-
98-
final rp = await packageBackend.lookupReservedPackage('pkg');
99-
expect(rp, isNull);
93+
await expectApiException(
94+
createPubApiClient(authToken: adminClientToken)
95+
.uploadPackageBytes(bytes),
96+
code: 'PackageRejected',
97+
status: 400,
98+
message: 'Package name pkg is reserved.',
99+
);
100100
});
101101
});
102102
}

0 commit comments

Comments
 (0)