File tree Expand file tree Collapse file tree 3 files changed +22
-18
lines changed Expand file tree Collapse file tree 3 files changed +22
-18
lines changed Original file line number Diff line number Diff 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 });
Original file line number Diff line number Diff 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 =
Original file line number Diff line number Diff 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}
You can’t perform that action at this time.
0 commit comments