Skip to content

Commit d8b1d2f

Browse files
authored
Additional test for consent deduplication. (#8700)
1 parent 877a4bc commit d8b1d2f

File tree

1 file changed

+58
-8
lines changed

1 file changed

+58
-8
lines changed

app/test/account/consent_backend_test.dart

Lines changed: 58 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import 'package:pub_dev/account/models.dart';
1212
import 'package:pub_dev/audit/backend.dart';
1313
import 'package:pub_dev/audit/models.dart';
1414
import 'package:pub_dev/fake/backend/fake_auth_provider.dart';
15+
import 'package:pub_dev/fake/backend/fake_email_sender.dart';
1516
import 'package:pub_dev/package/backend.dart';
1617
import 'package:pub_dev/publisher/backend.dart';
1718
import 'package:pub_dev/shared/configuration.dart';
@@ -23,8 +24,7 @@ import '../shared/test_services.dart';
2324

2425
void main() {
2526
group('Uploader invite', () {
26-
Future<String?> inviteUploader(
27-
{String adminEmail = '[email protected]'}) async {
27+
Future<void> sendUploadInvite({String adminEmail = '[email protected]'}) async {
2828
await withFakeAuthRetryPubApiClient(
2929
email: adminEmail,
3030
pubHostedUrl: activeConfiguration.primarySiteUri.toString(),
@@ -33,6 +33,11 @@ void main() {
3333
'oxygen', InviteUploaderRequest(email: userAtPubDevEmail));
3434
},
3535
);
36+
}
37+
38+
Future<String?> inviteUploader(
39+
{String adminEmail = '[email protected]'}) async {
40+
await sendUploadInvite(adminEmail: adminEmail);
3641

3742
String? consentId;
3843
await withFakeAuthRequestContext(userAtPubDevEmail, () async {
@@ -100,6 +105,18 @@ void main() {
100105
'Uploader invite for package `oxygen` expired, `[email protected]` did not respond.');
101106
});
102107

108+
testWithProfile('Duplicate uploader invite', fn: () async {
109+
expect(fakeEmailSender.sentMessages, hasLength(0));
110+
111+
await sendUploadInvite();
112+
expect(fakeEmailSender.sentMessages, hasLength(1));
113+
expect(await dbService.query<Consent>().run().toList(), hasLength(1));
114+
115+
await sendUploadInvite();
116+
expect(fakeEmailSender.sentMessages, hasLength(1));
117+
expect(await dbService.query<Consent>().run().toList(), hasLength(1));
118+
});
119+
103120
testWithProfile(
104121
'Uploader invite denied - original user is no longer admin',
105122
fn: () async {
@@ -124,12 +141,17 @@ void main() {
124141
});
125142

126143
group('Publisher contact', () {
127-
Future<String?> inviteContact({
128-
String adminEmail = '[email protected]',
129-
}) async {
144+
Future<void> sendContactInvite(
145+
{String adminEmail = '[email protected]'}) async {
130146
final adminClient = await createFakeAuthPubApiClient(email: adminEmail);
131147
await adminClient.updatePublisher('example.com',
132148
UpdatePublisherRequest(contactEmail: '[email protected]'));
149+
}
150+
151+
Future<String?> inviteContact({
152+
String adminEmail = '[email protected]',
153+
}) async {
154+
await sendContactInvite(adminEmail: adminEmail);
133155

134156
String? consentId;
135157
await withFakeAuthRequestContext(userAtPubDevEmail, () async {
@@ -198,6 +220,18 @@ void main() {
198220
'Contact invite for publisher `example.com` expired, `[email protected]` did not respond.');
199221
});
200222

223+
testWithProfile('Duplicate contact invite', fn: () async {
224+
expect(fakeEmailSender.sentMessages, hasLength(0));
225+
226+
await sendContactInvite();
227+
expect(fakeEmailSender.sentMessages, hasLength(1));
228+
expect(await dbService.query<Consent>().run().toList(), hasLength(1));
229+
230+
await sendContactInvite();
231+
expect(fakeEmailSender.sentMessages, hasLength(1));
232+
expect(await dbService.query<Consent>().run().toList(), hasLength(1));
233+
});
234+
201235
testWithProfile(
202236
'Publisher contact denied - original user is no longer admin',
203237
fn: () async {
@@ -215,12 +249,16 @@ void main() {
215249
});
216250

217251
group('Publisher member', () {
218-
Future<String?> inviteMember({
219-
String adminEmail = '[email protected]',
220-
}) async {
252+
Future<void> sendMemberInvite({String adminEmail = '[email protected]'}) async {
221253
final adminClient = await createFakeAuthPubApiClient(email: adminEmail);
222254
await adminClient.invitePublisherMember(
223255
'example.com', InviteMemberRequest(email: '[email protected]'));
256+
}
257+
258+
Future<String?> inviteMember({
259+
String adminEmail = '[email protected]',
260+
}) async {
261+
await sendMemberInvite(adminEmail: adminEmail);
224262

225263
String? consentId;
226264
await withFakeAuthRequestContext(userAtPubDevEmail, () async {
@@ -291,6 +329,18 @@ void main() {
291329
'Member invite for publisher `example.com` expired, `[email protected]` did not respond.');
292330
});
293331

332+
testWithProfile('Duplicate member invite', fn: () async {
333+
expect(fakeEmailSender.sentMessages, hasLength(0));
334+
335+
await sendMemberInvite();
336+
expect(fakeEmailSender.sentMessages, hasLength(1));
337+
expect(await dbService.query<Consent>().run().toList(), hasLength(1));
338+
339+
await sendMemberInvite();
340+
expect(fakeEmailSender.sentMessages, hasLength(1));
341+
expect(await dbService.query<Consent>().run().toList(), hasLength(1));
342+
});
343+
294344
testWithProfile(
295345
'Publisher member denied - original user is no longer admin',
296346
fn: () async {

0 commit comments

Comments
 (0)