Skip to content

Commit

Permalink
Include advisoriesUpdated timestamp in listVersions result (dart-lang…
Browse files Browse the repository at this point in the history
  • Loading branch information
szakarias authored Nov 15, 2023
1 parent cd758d1 commit 9398ad7
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 1 deletion.
1 change: 1 addition & 0 deletions app/lib/package/backend.dart
Original file line number Diff line number Diff line change
Expand Up @@ -758,6 +758,7 @@ class PackageBackend {
replacedBy: pkg.replacedBy,
latest: latest.toApiVersionInfo(),
versions: packageVersions.map((pv) => pv.toApiVersionInfo()).toList(),
advisoriesUpdated: pkg.latestAdvisory,
);
}

Expand Down
34 changes: 34 additions & 0 deletions app/test/service/security_advisory/security_advisory_test.dart
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
import 'dart:convert';
import 'dart:io';

import 'package:_pub_shared/data/advisories_api.dart';
import 'package:_pub_shared/data/package_api.dart';
import 'package:clock/clock.dart';
import 'package:path/path.dart' as path;
import 'package:pub_dev/fake/backend/fake_auth_provider.dart';
import 'package:pub_dev/package/backend.dart';
import 'package:pub_dev/service/security_advisories/backend.dart';
import 'package:pub_dev/shared/utils.dart';
import 'package:test/test.dart';

import '../../shared/test_models.dart';
import '../../shared/test_services.dart';

void main() {
Expand Down Expand Up @@ -301,4 +306,33 @@ void main() {
expect(errors.first, contains('OSV too large'));
});
});

testWithProfile('listVersions contains advisoriesUpdated', fn: () async {
var pkg = await packageBackend.lookupPackage('oxygen');
expect(pkg!.latestAdvisory, isNull);

final firstTime = DateTime(2022).toIso8601String();
final affectedOxygen = Affected(
package: Package(ecosystem: 'pub', name: 'oxygen'),
versions: ['1'],
);
final osv = OSV(
schemaVersion: '1.2.3',
id: '123',
modified: firstTime,
published: firstTime,
affected: [affectedOxygen],
);
final syncTime = clock.now();

await securityAdvisoryBackend.ingestSecurityAdvisory(osv, syncTime);
pkg = await packageBackend.lookupPackage('oxygen');
expect(pkg!.latestAdvisory, syncTime);

final client = await createFakeAuthPubApiClient(email: adminAtPubDevEmail);
final oxygenPkgInfo = PackageData.fromJson(
json.decode(utf8.decode(await client.listVersions('oxygen')))
as Map<String, dynamic>);
expect(oxygenPkgInfo.advisoriesUpdated, syncTime);
});
}
2 changes: 1 addition & 1 deletion pkg/_pub_shared/lib/data/package_api.dart
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ class PackageData {
final List<VersionInfo> versions;

/// The latest point the /advisories endpoint was updated.
DateTime? advisoriesUpdated;
final DateTime? advisoriesUpdated;

PackageData({
required this.name,
Expand Down

0 comments on commit 9398ad7

Please sign in to comment.