@@ -205,6 +205,76 @@ func TestOSV_IsAffected_AffectsWithEcosystem_DifferentEcosystem(t *testing.T) {
205205 }
206206}
207207
208+ func TestOSV_IsAffected_AffectsWithEcosystem_DifferentEcosystemSuffixes (t * testing.T ) {
209+ t .Parallel ()
210+
211+ var osv database.OSV
212+ var isAffected bool
213+
214+ // suffix is considered when present on both advisory and package
215+ osv = buildOSVWithAffected (
216+ database.Affected {
217+ Package : database.Package {Ecosystem : "Packagist:https://packages.drupal.org/7" , Name : "my-package" },
218+ Ranges : []database.AffectsRange {
219+ buildEcosystemAffectsRange (database.RangeEvent {Introduced : "0" }),
220+ },
221+ },
222+ )
223+
224+ isAffected = osv .IsAffected (internal.PackageDetails {
225+ Name : "my-package" ,
226+ Version : "1.0.0" ,
227+ Ecosystem : "Packagist:https://packages.drupal.org/8" ,
228+ CompareAs : "Packagist" ,
229+ })
230+
231+ if isAffected {
232+ t .Errorf ("Package should not be affected" )
233+ }
234+
235+ // suffix is only considered if present on both advisory and package
236+ osv = buildOSVWithAffected (
237+ database.Affected {
238+ Package : database.Package {Ecosystem : "Packagist" , Name : "my-package" },
239+ Ranges : []database.AffectsRange {
240+ buildEcosystemAffectsRange (database.RangeEvent {Introduced : "0" }),
241+ },
242+ },
243+ )
244+
245+ isAffected = osv .IsAffected (internal.PackageDetails {
246+ Name : "my-package" ,
247+ Version : "1.0.0" ,
248+ Ecosystem : "Packagist:https://packages.drupal.org/8" ,
249+ CompareAs : "Packagist" ,
250+ })
251+
252+ if ! isAffected {
253+ t .Errorf ("Package should be affected" )
254+ }
255+
256+ // suffix is only considered if present on both advisory and package
257+ osv = buildOSVWithAffected (
258+ database.Affected {
259+ Package : database.Package {Ecosystem : "Packagist:https://packages.drupal.org/8" , Name : "my-package" },
260+ Ranges : []database.AffectsRange {
261+ buildEcosystemAffectsRange (database.RangeEvent {Introduced : "0" }),
262+ },
263+ },
264+ )
265+
266+ isAffected = osv .IsAffected (internal.PackageDetails {
267+ Name : "my-package" ,
268+ Version : "1.0.0" ,
269+ Ecosystem : "Packagist" ,
270+ CompareAs : "Packagist" ,
271+ })
272+
273+ if ! isAffected {
274+ t .Errorf ("Package should be affected" )
275+ }
276+ }
277+
208278func TestOSV_IsAffected_AffectsWithEcosystem_SingleAffected (t * testing.T ) {
209279 t .Parallel ()
210280
0 commit comments