@@ -12,6 +12,7 @@ import 'package:pub_dev/account/models.dart';
12
12
import 'package:pub_dev/audit/backend.dart' ;
13
13
import 'package:pub_dev/audit/models.dart' ;
14
14
import 'package:pub_dev/fake/backend/fake_auth_provider.dart' ;
15
+ import 'package:pub_dev/fake/backend/fake_email_sender.dart' ;
15
16
import 'package:pub_dev/package/backend.dart' ;
16
17
import 'package:pub_dev/publisher/backend.dart' ;
17
18
import 'package:pub_dev/shared/configuration.dart' ;
@@ -23,8 +24,7 @@ import '../shared/test_services.dart';
23
24
24
25
void main () {
25
26
group ('Uploader invite' , () {
26
- Future <String ?> inviteUploader (
27
- {
String adminEmail
= '[email protected] ' })
async {
27
+ Future <
void >
sendUploadInvite ({
String adminEmail
= '[email protected] ' })
async {
28
28
await withFakeAuthRetryPubApiClient (
29
29
email: adminEmail,
30
30
pubHostedUrl: activeConfiguration.primarySiteUri.toString (),
@@ -33,6 +33,11 @@ void main() {
33
33
'oxygen' , InviteUploaderRequest (email: userAtPubDevEmail));
34
34
},
35
35
);
36
+ }
37
+
38
+ Future <String ?> inviteUploader (
39
+ {
String adminEmail
= '[email protected] ' })
async {
40
+ await sendUploadInvite (adminEmail: adminEmail);
36
41
37
42
String ? consentId;
38
43
await withFakeAuthRequestContext (userAtPubDevEmail, () async {
@@ -100,6 +105,18 @@ void main() {
100
105
'Uploader invite for package `oxygen` expired, `[email protected] ` did not respond.' );
101
106
});
102
107
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
+
103
120
testWithProfile (
104
121
'Uploader invite denied - original user is no longer admin' ,
105
122
fn: () async {
@@ -124,12 +141,17 @@ void main() {
124
141
});
125
142
126
143
group ('Publisher contact' , () {
127
- Future <String ?> inviteContact ({
128
- String adminEmail
= '[email protected] ' ,
129
- }) async {
144
+ Future <void > sendContactInvite (
145
+ {
String adminEmail
= '[email protected] ' })
async {
130
146
final adminClient = await createFakeAuthPubApiClient (email: adminEmail);
131
147
await adminClient.updatePublisher ('example.com' ,
132
148
UpdatePublisherRequest (contactEmail
: '[email protected] ' ));
149
+ }
150
+
151
+ Future <String ?> inviteContact ({
152
+ String adminEmail
= '[email protected] ' ,
153
+ }) async {
154
+ await sendContactInvite (adminEmail: adminEmail);
133
155
134
156
String ? consentId;
135
157
await withFakeAuthRequestContext (userAtPubDevEmail, () async {
@@ -198,6 +220,18 @@ void main() {
198
220
'Contact invite for publisher `example.com` expired, `[email protected] ` did not respond.' );
199
221
});
200
222
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
+
201
235
testWithProfile (
202
236
'Publisher contact denied - original user is no longer admin' ,
203
237
fn: () async {
@@ -215,12 +249,16 @@ void main() {
215
249
});
216
250
217
251
group ('Publisher member' , () {
218
- Future <String ?> inviteMember ({
219
- String adminEmail
= '[email protected] ' ,
220
- }) async {
252
+ Future <
void >
sendMemberInvite ({
String adminEmail
= '[email protected] ' })
async {
221
253
final adminClient = await createFakeAuthPubApiClient (email: adminEmail);
222
254
await adminClient.invitePublisherMember (
223
255
'example.com' ,
InviteMemberRequest (email
: '[email protected] ' ));
256
+ }
257
+
258
+ Future <String ?> inviteMember ({
259
+ String adminEmail
= '[email protected] ' ,
260
+ }) async {
261
+ await sendMemberInvite (adminEmail: adminEmail);
224
262
225
263
String ? consentId;
226
264
await withFakeAuthRequestContext (userAtPubDevEmail, () async {
@@ -291,6 +329,18 @@ void main() {
291
329
'Member invite for publisher `example.com` expired, `[email protected] ` did not respond.' );
292
330
});
293
331
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
+
294
344
testWithProfile (
295
345
'Publisher member denied - original user is no longer admin' ,
296
346
fn: () async {
0 commit comments