Skip to content

Commit d605557

Browse files
committed
Verify severe and shout log messages in tests.
1 parent a499a1f commit d605557

12 files changed

+219
-47
lines changed

app/test/admin/exported_api_sync_test.dart

+4-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,10 @@ void main() {
9999
});
100100
});
101101

102-
testWithProfile('deleted files + full sync', fn: () async {
102+
testWithProfile('deleted files + full sync', expectedLogMessages: [
103+
// TODO: review why we have unhandled errors here
104+
RegExp(r'^SEVERE Unhandled error in API handler \(incidentId: .*\)'),
105+
], fn: () async {
103106
await syncExportedApi();
104107
final oldRoot = await listExportedApi();
105108

app/test/admin/moderate_package_test.dart

+40-7
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,11 @@ void main() {
6262
);
6363
}
6464

65-
testWithProfile('update state', fn: () async {
65+
testWithProfile('update state', expectedLogMessages: [
66+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.0.0.tar.gz".',
67+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.2.0.tar.gz".',
68+
'SHOUT Deleting object from public bucket: "packages/oxygen-2.0.0-dev.tar.gz".',
69+
], fn: () async {
6670
final mc = await _report('neon');
6771

6872
await expectModerationActions(mc.caseId, actions: []);
@@ -104,7 +108,11 @@ void main() {
104108
);
105109
});
106110

107-
testWithProfile('clear moderation flag', fn: () async {
111+
testWithProfile('clear moderation flag', expectedLogMessages: [
112+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.0.0.tar.gz".',
113+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.2.0.tar.gz".',
114+
'SHOUT Deleting object from public bucket: "packages/oxygen-2.0.0-dev.tar.gz".',
115+
], fn: () async {
108116
final mc = await _report('oxygen');
109117
await expectModerationActions(mc.caseId, actions: []);
110118
final r1 = await _moderate('oxygen', caseId: mc.caseId);
@@ -189,7 +197,11 @@ void main() {
189197
});
190198
});
191199

192-
testWithProfile('API endpoints return not found', fn: () async {
200+
testWithProfile('API endpoints return not found', expectedLogMessages: [
201+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.0.0.tar.gz".',
202+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.2.0.tar.gz".',
203+
'SHOUT Deleting object from public bucket: "packages/oxygen-2.0.0-dev.tar.gz".',
204+
], fn: () async {
193205
final jsonUrls = [
194206
'/api/packages/oxygen',
195207
'/api/packages/oxygen/versions/1.0.0',
@@ -215,7 +227,11 @@ void main() {
215227
});
216228

217229
testWithProfile('public pages are displaying moderation notice',
218-
fn: () async {
230+
expectedLogMessages: [
231+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.0.0.tar.gz".',
232+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.2.0.tar.gz".',
233+
'SHOUT Deleting object from public bucket: "packages/oxygen-2.0.0-dev.tar.gz".',
234+
], fn: () async {
219235
final htmlUrls = [
220236
'/packages/oxygen',
221237
'/packages/oxygen/changelog',
@@ -256,7 +272,11 @@ void main() {
256272
actions: [ModerationAction.apply, ModerationAction.revert]);
257273
});
258274

259-
testWithProfile('not included in search', fn: () async {
275+
testWithProfile('not included in search', expectedLogMessages: [
276+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.0.0.tar.gz".',
277+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.2.0.tar.gz".',
278+
'SHOUT Deleting object from public bucket: "packages/oxygen-2.0.0-dev.tar.gz".',
279+
], fn: () async {
260280
await searchBackend.doCreateAndUpdateSnapshot(
261281
FakeGlobalLockClaim(clock.now().add(Duration(seconds: 3))),
262282
concurrency: 2,
@@ -295,7 +315,12 @@ void main() {
295315
expect(docs3!.where((d) => d.package == 'oxygen'), isNotEmpty);
296316
});
297317

298-
testWithProfile('archives are removed from public buckets', fn: () async {
318+
testWithProfile('archives are removed from public buckets',
319+
expectedLogMessages: [
320+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.0.0.tar.gz".',
321+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.2.0.tar.gz".',
322+
'SHOUT Deleting object from public bucket: "packages/oxygen-2.0.0-dev.tar.gz".',
323+
], fn: () async {
299324
final publicUrls = [
300325
'${activeConfiguration.storageBaseUrl}'
301326
'/${activeConfiguration.publicPackagesBucketName}'
@@ -339,6 +364,11 @@ void main() {
339364
testWithProfile(
340365
'analysis results are cleared',
341366
processJobsWithFakeRunners: true,
367+
expectedLogMessages: [
368+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.0.0.tar.gz".',
369+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.2.0.tar.gz".',
370+
'SHOUT Deleting object from public bucket: "packages/oxygen-2.0.0-dev.tar.gz".',
371+
],
342372
fn: () async {
343373
final score1 =
344374
await scoreCardBackend.getScoreCardData('oxygen', '1.2.0');
@@ -386,7 +416,10 @@ void main() {
386416

387417
testWithProfile(
388418
'cleanup deletes datastore entities and canonical archive file',
389-
fn: () async {
419+
expectedLogMessages: [
420+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.2.0.tar.gz".',
421+
'SHOUT Deleting object from public bucket: "packages/oxygen-2.0.0-dev.tar.gz".',
422+
], fn: () async {
390423
// delete old version
391424
await accountBackend.withBearerToken(siteAdminToken, () async {
392425
await adminBackend.removePackageVersion('oxygen', '1.0.0');

app/test/admin/moderate_package_version_test.dart

+44-12
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@ void main() {
6464
);
6565
}
6666

67-
testWithProfile('update state', fn: () async {
67+
testWithProfile('update state', expectedLogMessages: [
68+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.0.0.tar.gz".',
69+
], fn: () async {
6870
final mc = await _report('oxygen', '1.0.0');
6971
final r1 = await _moderate('oxygen', '1.0.0');
7072
expect(r1.output, {
@@ -109,7 +111,9 @@ void main() {
109111
expect(mc2!.getActionLog().entries, hasLength(1));
110112
});
111113

112-
testWithProfile('clear moderation flag', fn: () async {
114+
testWithProfile('clear moderation flag', expectedLogMessages: [
115+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.0.0.tar.gz".',
116+
], fn: () async {
113117
final r1 = await _moderate('oxygen', '1.0.0', state: true);
114118
expect(r1.output, {
115119
'package': 'oxygen',
@@ -143,7 +147,11 @@ void main() {
143147
expect(optionsUpdates.isRetracted, true);
144148
});
145149

146-
testWithProfile('cannot moderate last visible version', fn: () async {
150+
testWithProfile('cannot moderate last visible version',
151+
expectedLogMessages: [
152+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.2.0.tar.gz".',
153+
'SHOUT Deleting object from public bucket: "packages/oxygen-2.0.0-dev.tar.gz".',
154+
], fn: () async {
147155
await _moderate('oxygen', '1.2.0', state: true);
148156
final p1 = await packageBackend.lookupPackage('oxygen');
149157
expect(p1!.latestVersion, '1.0.0');
@@ -164,7 +172,9 @@ void main() {
164172
);
165173
});
166174

167-
testWithProfile('can publish new version', fn: () async {
175+
testWithProfile('can publish new version', expectedLogMessages: [
176+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.0.0.tar.gz".',
177+
], fn: () async {
168178
await _moderate('oxygen', '1.0.0', state: true);
169179

170180
final pubspecContent = generatePubspecYaml('oxygen', '3.0.0');
@@ -174,7 +184,10 @@ void main() {
174184
expect(message.success.message, contains('Successfully uploaded'));
175185
});
176186

177-
testWithProfile('cannot re-publish moderated version', fn: () async {
187+
testWithProfile('cannot re-publish moderated version',
188+
expectedLogMessages: [
189+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.0.0.tar.gz".',
190+
], fn: () async {
178191
await _moderate('oxygen', '1.0.0', state: true);
179192

180193
final pubspecContent = generatePubspecYaml('oxygen', '1.0.0');
@@ -189,7 +202,9 @@ void main() {
189202
});
190203

191204
testWithProfile('archive file is removed from public buckets',
192-
fn: () async {
205+
expectedLogMessages: [
206+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.0.0.tar.gz".',
207+
], fn: () async {
193208
Future<Uint8List?> expectStatusCode(int statusCode,
194209
{String version = '1.0.0'}) async {
195210
final publicUrls = [
@@ -232,7 +247,9 @@ void main() {
232247
});
233248

234249
testWithProfile('versions file is updated in exported bucket',
235-
fn: () async {
250+
expectedLogMessages: [
251+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.0.0.tar.gz".',
252+
], fn: () async {
236253
Future<void> expectIncluded(String version, bool isIncluded) async {
237254
final prefixes = ['latest', runtimeVersion];
238255
for (final prefix in prefixes) {
@@ -257,7 +274,9 @@ void main() {
257274
await expectIncluded('1.0.0', true);
258275
});
259276

260-
testWithProfile('search is updated with new version', fn: () async {
277+
testWithProfile('search is updated with new version', expectedLogMessages: [
278+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.2.0.tar.gz".',
279+
], fn: () async {
261280
await searchBackend.doCreateAndUpdateSnapshot(
262281
FakeGlobalLockClaim(clock.now().add(Duration(seconds: 3))),
263282
concurrency: 2,
@@ -298,7 +317,10 @@ void main() {
298317

299318
testWithProfile(
300319
'moderated version is not visible in API (other version is)',
301-
fn: () async {
320+
expectedLogMessages: [
321+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.0.0.tar.gz".',
322+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.2.0.tar.gz".',
323+
], fn: () async {
302324
await _moderate('oxygen', '1.0.0', state: true);
303325
final rs1 = await packageBackend.listVersionsCached('oxygen');
304326
expect(rs1.latest.version, '1.2.0');
@@ -325,7 +347,9 @@ void main() {
325347
});
326348

327349
testWithProfile('moderated versions are not displayed on versions tab',
328-
fn: () async {
350+
expectedLogMessages: [
351+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.2.0.tar.gz".',
352+
], fn: () async {
329353
await _moderate('oxygen', '1.2.0', state: true);
330354
await expectHtmlResponse(
331355
await issueGet('/packages/oxygen/versions'),
@@ -339,7 +363,10 @@ void main() {
339363
);
340364
});
341365

342-
testWithProfile('moderated version pages are not displayed', fn: () async {
366+
testWithProfile('moderated version pages are not displayed',
367+
expectedLogMessages: [
368+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.2.0.tar.gz".',
369+
], fn: () async {
343370
List<String> pagePaths(String version) {
344371
return [
345372
'/packages/oxygen/versions/$version',
@@ -415,6 +442,9 @@ void main() {
415442
testWithProfile(
416443
'moderated version trigger new analysis',
417444
processJobsWithFakeRunners: true,
445+
expectedLogMessages: [
446+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.2.0.tar.gz".',
447+
],
418448
fn: () async {
419449
final score1 =
420450
await scoreCardBackend.getScoreCardData('oxygen', '1.2.0');
@@ -468,7 +498,9 @@ void main() {
468498

469499
testWithProfile(
470500
'cleanup deletes datastore entities and canonical archive file',
471-
fn: () async {
501+
expectedLogMessages: [
502+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.0.0.tar.gz".',
503+
], fn: () async {
472504
// canonical file is present
473505
expect(
474506
await packageBackend.tarballStorage

app/test/admin/moderation_case_resolve_test.dart

+20-4
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,11 @@ void main() {
7676
expect(await _close(mc.caseId), 'no-action');
7777
});
7878

79-
testWithProfile('notification: apply moderation', fn: () async {
79+
testWithProfile('notification: apply moderation', expectedLogMessages: [
80+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.0.0.tar.gz".',
81+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.2.0.tar.gz".',
82+
'SHOUT Deleting object from public bucket: "packages/oxygen-2.0.0-dev.tar.gz".',
83+
], fn: () async {
8084
final mc = await _prepare(apply: true);
8185
expect(
8286
await _close(
@@ -87,7 +91,11 @@ void main() {
8791
);
8892
});
8993

90-
testWithProfile('appeal no action: revert', fn: () async {
94+
testWithProfile('appeal no action: revert', expectedLogMessages: [
95+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.0.0.tar.gz".',
96+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.2.0.tar.gz".',
97+
'SHOUT Deleting object from public bucket: "packages/oxygen-2.0.0-dev.tar.gz".',
98+
], fn: () async {
9199
final mc1 = await _prepare(apply: null);
92100
await _close(mc1.caseId);
93101

@@ -108,7 +116,11 @@ void main() {
108116
expect(await _close(mc.caseId), 'no-action-upheld');
109117
});
110118

111-
testWithProfile('appeal moderation: revert', fn: () async {
119+
testWithProfile('appeal moderation: revert', expectedLogMessages: [
120+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.0.0.tar.gz".',
121+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.2.0.tar.gz".',
122+
'SHOUT Deleting object from public bucket: "packages/oxygen-2.0.0-dev.tar.gz".',
123+
], fn: () async {
112124
final mc1 = await _prepare(apply: true);
113125
await _close(
114126
mc1.caseId,
@@ -119,7 +131,11 @@ void main() {
119131
expect(await _close(mc.caseId), 'moderation-reverted');
120132
});
121133

122-
testWithProfile('appeal moderation: upheld', fn: () async {
134+
testWithProfile('appeal moderation: upheld', expectedLogMessages: [
135+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.0.0.tar.gz".',
136+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.2.0.tar.gz".',
137+
'SHOUT Deleting object from public bucket: "packages/oxygen-2.0.0-dev.tar.gz".',
138+
], fn: () async {
123139
final mc1 = await _prepare(apply: true);
124140
await _close(
125141
mc1.caseId,

app/test/admin/moderation_transparency_metrics_test.dart

+10-2
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,11 @@ void main() {
125125
expect(text, contains('Total number of actions taken,0\r\n'));
126126
});
127127

128-
testWithProfile('moderated package', fn: () async {
128+
testWithProfile('moderated package', expectedLogMessages: [
129+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.0.0.tar.gz".',
130+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.2.0.tar.gz".',
131+
'SHOUT Deleting object from public bucket: "packages/oxygen-2.0.0-dev.tar.gz".',
132+
], fn: () async {
129133
final mc = await _report('oxygen');
130134
await _moderatePkg('oxygen', caseId: mc.caseId, state: true);
131135
await _resolve(
@@ -222,7 +226,11 @@ void main() {
222226
]));
223227
});
224228

225-
testWithProfile('appeal', fn: () async {
229+
testWithProfile('appeal', expectedLogMessages: [
230+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.0.0.tar.gz".',
231+
'SHOUT Deleting object from public bucket: "packages/oxygen-1.2.0.tar.gz".',
232+
'SHOUT Deleting object from public bucket: "packages/oxygen-2.0.0-dev.tar.gz".',
233+
], fn: () async {
226234
final mc = await _report('oxygen');
227235
await _moderatePkg('oxygen', caseId: mc.caseId, state: true);
228236
await _resolve(

app/test/package/api_export/api_exporter_test.dart

+10-2
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,12 @@ final _testProfile = TestProfile(
4343
);
4444

4545
void main() {
46-
testWithFakeTime('synchronizeExportedApi()', testProfile: _testProfile,
47-
(fakeTime) async {
46+
testWithFakeTime('synchronizeExportedApi()',
47+
testProfile: _testProfile,
48+
expectedLogMessages: [
49+
'SHOUT Deleting object from public bucket: "packages/bar-2.0.0.tar.gz".',
50+
'SHOUT Deleting object from public bucket: "packages/bar-3.0.0.tar.gz".',
51+
], (fakeTime) async {
4852
await storageService.createBucket('bucket');
4953
final bucket = storageService.bucket('bucket');
5054
final apiExporter =
@@ -59,6 +63,10 @@ void main() {
5963

6064
testWithFakeTime(
6165
'apiExporter.start()',
66+
expectedLogMessages: [
67+
'SHOUT Deleting object from public bucket: "packages/bar-2.0.0.tar.gz".',
68+
'SHOUT Deleting object from public bucket: "packages/bar-3.0.0.tar.gz".',
69+
],
6270
testProfile: _testProfile,
6371
(fakeTime) async {
6472
await storageService.createBucket('bucket');

0 commit comments

Comments
 (0)