Skip to content

Commit 802c20e

Browse files
authored
Fix e-mail urls (#2644)
* Fix e-mail urls * remove dot from test expectation
1 parent 389f259 commit 802c20e

File tree

4 files changed

+43
-22
lines changed

4 files changed

+43
-22
lines changed

app/lib/shared/email.dart

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,9 @@ EmailMessage createPackageUploadedEmail({
126126
127127
$uploaderEmail has published a new version ($packageVersion) of the $packageName package to the Dart package site ($primaryHost).
128128
129-
For details, go to $url.
129+
For details, go to $url
130130
131-
If you have any concerns about this package, file an issue at https://github.com/dart-lang/pub-dev/issues.
131+
If you have any concerns about this package, file an issue at https://github.com/dart-lang/pub-dev/issues
132132
133133
Thanks for your contributions to the Dart community!
134134
@@ -145,18 +145,19 @@ EmailMessage createUploaderConfirmationEmail({
145145
@required String addedUploaderEmail,
146146
@required String confirmationUrl,
147147
}) {
148+
final pkgUrl = pkgPageUrl(packageName, includeHost: true);
148149
final subject = 'Uploader invitation for package: $packageName';
149150
final bodyText = '''Dear package maintainer,
150151
151-
$activeAccountEmail has invited you to become an uploader of the $packageName package. If you accept this invitation, you’ll be able to upload new versions of the package to the Dart package site ($primaryHost), and you’ll be listed as an uploader at $siteRoot/packages/$packageName.
152+
$activeAccountEmail has invited you to become an uploader of the $packageName package. If you accept this invitation, you’ll be able to upload new versions of the package to the Dart package site ($primaryHost), and you’ll be listed as an uploader at $pkgUrl
152153
153154
To accept this invitation, visit the following URL:
154155
$confirmationUrl
155156
156157
157158
If you don’t want to be an uploader, simply ignore this email.
158159
159-
If you have any concerns about this invitation, file an issue at https://github.com/dart-lang/pub-dev/issues.
160+
If you have any concerns about this invitation, file an issue at https://github.com/dart-lang/pub-dev/issues
160161
161162
Thanks for your contributions to the Dart community!
162163
@@ -183,7 +184,7 @@ $consentUrl
183184
184185
If you don’t want to accept it, simply ignore this email.
185186
186-
If you have any concerns about this invitation, file an issue at https://github.com/dart-lang/pub-dev/issues.
187+
If you have any concerns about this invitation, file an issue at https://github.com/dart-lang/pub-dev/issues
187188
188189
Thanks for your contributions to the Dart community!
189190

app/test/frontend/backend_test.dart

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,12 @@ void main() {
229229
final p = list.single;
230230
expect(p.uploaders, [hansUser.userId]);
231231

232-
// TODO: check sent e-mail
232+
expect(fakeEmailSender.sentMessages, hasLength(1));
233+
final email = fakeEmailSender.sentMessages.single;
234+
expect(email.recipients.single.email, '[email protected]');
235+
expect(email.subject, 'Uploader invitation for package: hydrogen');
236+
expect(email.bodyText, contains('https://pub.dev/packages/hydrogen\n'));
237+
233238
// TODO: check consent (after migrating to consent API)
234239
});
235240
});
@@ -444,7 +449,15 @@ void main() {
444449
expect(pv.downloads, 0);
445450
expect(pv.sortOrder, 0);
446451

447-
// TODO: check sent e-mail
452+
expect(fakeEmailSender.sentMessages, hasLength(1));
453+
final email = fakeEmailSender.sentMessages.single;
454+
expect(email.recipients.single.email, hansUser.email);
455+
expect(email.subject, 'Package uploaded: new_package 1.2.3');
456+
expect(
457+
email.bodyText,
458+
contains(
459+
'https://pub.dev/packages/new_package/versions/1.2.3\n'));
460+
448461
// TODO: check history
449462
// TODO: check assets
450463
});
@@ -538,7 +551,13 @@ void main() {
538551
await backend.repository.upload(Stream.fromIterable([tarball]));
539552
expect(version.packageName, foobarPackage.name);
540553
expect(version.versionString, '1.2.3');
541-
// TODO: check sent e-mail
554+
555+
expect(fakeEmailSender.sentMessages, hasLength(1));
556+
final email = fakeEmailSender.sentMessages.single;
557+
expect(email.recipients.single.email, hansUser.email);
558+
expect(email.subject, 'Package uploaded: foobar_pkg 1.2.3');
559+
expect(email.bodyText,
560+
contains('https://pub.dev/packages/foobar_pkg/versions/1.2.3\n'));
542561

543562
final packages = await backend.latestPackages();
544563
expect(packages.first.name, foobarPackage.name);

app/test/frontend/backend_test_utils.dart

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,6 @@ library pub_dartlang_org.backend_test_utils;
77
import 'dart:async';
88
import 'dart:io';
99

10-
import 'package:pub_dartlang_org/shared/email.dart';
11-
12-
import 'package:pub_dartlang_org/frontend/email_sender.dart';
13-
1410
import '../shared/test_models.dart';
1511

1612
Future<T> withTempDirectory<T>(Future<T> func(String temp)) async {
@@ -55,13 +51,3 @@ Future<List<int>> packageArchiveBytes({String pubspecContent}) async {
5551
return bytes;
5652
});
5753
}
58-
59-
class EmailSenderMock implements EmailSender {
60-
final sentMessages = <EmailMessage>[];
61-
62-
@override
63-
Future sendMessage(EmailMessage message) async {
64-
sentMessages.add(message);
65-
return;
66-
}
67-
}

app/test/shared/test_services.dart

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import 'package:shelf/shelf.dart' as shelf;
1616

1717
import 'package:pub_dartlang_org/account/backend.dart';
1818
import 'package:pub_dartlang_org/account/testing/fake_auth_provider.dart';
19+
import 'package:pub_dartlang_org/frontend/email_sender.dart';
1920
import 'package:pub_dartlang_org/frontend/handlers.dart';
2021
import 'package:pub_dartlang_org/frontend/handlers/pubapi.client.dart';
2122
import 'package:pub_dartlang_org/frontend/testing/fake_upload_signer_service.dart';
@@ -26,6 +27,7 @@ import 'package:pub_dartlang_org/search/handlers.dart';
2627
import 'package:pub_dartlang_org/search/index_simple.dart';
2728
import 'package:pub_dartlang_org/search/updater.dart';
2829
import 'package:pub_dartlang_org/shared/configuration.dart';
30+
import 'package:pub_dartlang_org/shared/email.dart';
2931
import 'package:pub_dartlang_org/shared/exceptions.dart'
3032
show AuthorizationException;
3133
import 'package:pub_dartlang_org/shared/handler_helpers.dart';
@@ -88,6 +90,7 @@ void testWithServices(String name, Future fn()) {
8890
registerAccountBackend(
8991
AccountBackend(db, authProvider: FakeAuthProvider()));
9092
registerDomainVerifier(_FakeDomainVerifier());
93+
registerEmailSender(FakeEmailSender());
9194
registerUploadSigner(FakeUploadSignerService('https://storage.url'));
9295

9396
await dartSdkIndex.merge();
@@ -191,3 +194,15 @@ void _setupLogging() {
191194
}
192195
});
193196
}
197+
198+
FakeEmailSender get fakeEmailSender => emailSender as FakeEmailSender;
199+
200+
class FakeEmailSender implements EmailSender {
201+
final sentMessages = <EmailMessage>[];
202+
203+
@override
204+
Future sendMessage(EmailMessage message) async {
205+
sentMessages.add(message);
206+
return;
207+
}
208+
}

0 commit comments

Comments
 (0)