@@ -316,3 +316,93 @@ func assertNoIPFSLimitRate(t *testing.T, name string, limit ratelimit.IPFSLimitR
316316 }
317317 }
318318}
319+
320+ func TestParseBinaryPackagesOldFormat (t * testing.T ) {
321+ pkgs := parseBinaryPackages ("['postgresql-11', 'libpq5']" )
322+ if len (pkgs ) != 2 || pkgs [0 ] != "postgresql-11" || pkgs [1 ] != "libpq5" {
323+ t .Fatalf ("expected [postgresql-11 libpq5], got %v" , pkgs )
324+ }
325+ }
326+
327+ func TestParseBinaryPackagesJSONArray (t * testing.T ) {
328+ pkgs := parseBinaryPackages (`[{"name":"linux-libc-dev","version":"5.10.168-1"},{"name":"libtiff5","version":"4.1.0"}]` )
329+ if len (pkgs ) != 2 || pkgs [0 ] != "linux-libc-dev" || pkgs [1 ] != "libtiff5" {
330+ t .Fatalf ("expected [linux-libc-dev libtiff5], got %v" , pkgs )
331+ }
332+ }
333+
334+ func TestParseBinaryPackagesStringEncodedJSON (t * testing.T ) {
335+ pkgs := parseBinaryPackages (`"[{\"name\":\"libtiff5\",\"version\":\"4.1.0\"}]"` )
336+ if len (pkgs ) != 1 || pkgs [0 ] != "libtiff5" {
337+ t .Fatalf ("expected [libtiff5], got %v" , pkgs )
338+ }
339+ }
340+
341+ func TestParseBinaryPackagesNone (t * testing.T ) {
342+ pkgs := parseBinaryPackages ("None" )
343+ if len (pkgs ) != 0 {
344+ t .Fatalf ("expected empty, got %v" , pkgs )
345+ }
346+ }
347+
348+ func TestParseBinaryPackagesEmpty (t * testing.T ) {
349+ pkgs := parseBinaryPackages ("" )
350+ if len (pkgs ) != 0 {
351+ t .Fatalf ("expected empty, got %v" , pkgs )
352+ }
353+ }
354+
355+ func TestGetCVEUpdateLogsIncludesNewFormatCVEs (t * testing.T ) {
356+ CVEs = make (map [string ]CEVInfo )
357+ manager := & UpdatePlatformManager {cvePkgs : make (map [string ][]string )}
358+ cves := []CEVInfo {
359+ {SyncTime : "2026-05-02T12:04:25+08:00" , CveId : "CVE-2026-31431" , Binary : `[{"name":"linux-libc-dev","version":"5.10"}]` },
360+ {SyncTime : "2025-05-02T12:04:25+08:00" , CveId : "CVE-2025-32728" , Binary : `[{"name":"openssh-client","version":"8.2"}]` },
361+ {SyncTime : "2024-05-02T12:04:25+08:00" , CveId : "CVE-2021-3677" , Binary : "['libpq5']" },
362+ }
363+ for _ , cve := range cves {
364+ CVEs [cve .CveId ] = cve
365+ for _ , binary := range parseBinaryPackages (cve .Binary ) {
366+ manager .cvePkgs [binary ] = append (manager .cvePkgs [binary ], cve .CveId )
367+ }
368+ }
369+
370+ logs := manager .GetCVEUpdateLogs ([]string {"linux-libc-dev" , "openssh-client" , "libpq5" })
371+
372+ if len (logs ) != 3 {
373+ t .Fatalf ("expected 3 CVE logs, got %d" , len (logs ))
374+ }
375+ if _ , ok := logs ["CVE-2026-31431" ]; ! ok {
376+ t .Fatal ("expected CVE-2026-31431 in results" )
377+ }
378+ if _ , ok := logs ["CVE-2025-32728" ]; ! ok {
379+ t .Fatal ("expected CVE-2025-32728 in results" )
380+ }
381+ if _ , ok := logs ["CVE-2021-3677" ]; ! ok {
382+ t .Fatal ("expected CVE-2021-3677 in results" )
383+ }
384+ }
385+
386+ func TestGetCVEUpdateLogsStringEncodedJSON (t * testing.T ) {
387+ CVEs = make (map [string ]CEVInfo )
388+ manager := & UpdatePlatformManager {cvePkgs : make (map [string ][]string )}
389+ cves := []CEVInfo {
390+ {SyncTime : "2026-05-02T12:04:25+08:00" , CveId : "CVE-2024-7006" , Binary : `"[{\"name\":\"libtiff5\",\"version\":\"4.1.0\"}]"` },
391+ {SyncTime : "2024-05-02T12:04:25+08:00" , CveId : "CVE-2020-19143" , Binary : "['libtiff5']" },
392+ }
393+ for _ , cve := range cves {
394+ CVEs [cve .CveId ] = cve
395+ for _ , binary := range parseBinaryPackages (cve .Binary ) {
396+ manager .cvePkgs [binary ] = append (manager .cvePkgs [binary ], cve .CveId )
397+ }
398+ }
399+
400+ logs := manager .GetCVEUpdateLogs ([]string {"libtiff5" })
401+
402+ if len (logs ) != 2 {
403+ t .Fatalf ("expected 2 CVE logs, got %d" , len (logs ))
404+ }
405+ if _ , ok := logs ["CVE-2024-7006" ]; ! ok {
406+ t .Fatal ("expected CVE-2024-7006 in results" )
407+ }
408+ }
0 commit comments