/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠHERE ĠEurope ĠB . V . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ġ* ĠLicense - Filename : ĠLICENSE Ċ Ġ*/ Ċ Ċ package Ġorg . oss review toolkit . model . config Ċ Ċ import Ġio . kot est . core . spec . style . Word Spec Ċ import Ġio . kot est . matchers . shouldBe Ċ Ċ import Ġorg . oss review toolkit . model . Artifact Provenance Ċ import Ġorg . oss review toolkit . model . Identifier Ċ import Ġorg . oss review toolkit . model . Remote Artifact Ċ import Ġorg . oss review toolkit . model . Repository Provenance Ċ import Ġorg . oss review toolkit . model . V cs Info Ċ import Ġorg . oss review toolkit . model . V cs Type Ċ Ċ private Ġfun Ġv cs Package Config ( name : ĠString , Ġrevision : ĠString , Ġurl : ĠString ) Ġ= ĊĠĠĠ ĠPackage Configuration ( ĊĠĠĠĠĠĠĠ Ġid Ġ= ĠIdentifier . EMPTY . copy ( name Ġ= Ġname ), ĊĠĠĠĠĠĠĠ Ġv cs Ġ= ĠV cs Matcher ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠV cs Type . GIT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġurl , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrevision Ġ= Ġrevision ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ċ Ċ private Ġfun Ġsource Artifact Config ( name : ĠString , Ġurl : ĠString ) Ġ= ĊĠĠĠ ĠPackage Configuration ( ĊĠĠĠĠĠĠĠ Ġid Ġ= ĠIdentifier . EMPTY . copy ( name Ġ= Ġname ), ĊĠĠĠĠĠĠĠ Ġsource Artifact Url Ġ= Ġurl ĊĠĠĠ Ġ) Ċ Ċ class ĠPackage Configuration Test Ġ: ĠWord Spec ({ ĊĠĠĠ Ġ" matches " Ġshould Ġ{ ĊĠĠĠĠĠĠĠ Ġ" return Ġtrue Ġif Ġv cs Ġinfo Ġand Ġidentifier Ġare Ġequal " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġv cs Package Config ( name Ġ= Ġ" some - name ", Ġrevision Ġ= Ġ" 1 2 3 4 5 6 7 8 ", Ġurl Ġ= Ġ" ssh :// git @ host / repo . git ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . matches ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRepository Provenance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv cs Info Ġ= ĠV cs Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠV cs Type . GIT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġ" ssh :// git @ host / repo . git ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrevision Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolved Revision Ġ= Ġ" 1 2 3 4 5 6 7 8 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" return Ġfalse Ġif Ġonly Ġidentifiers Ġare Ġnot Ġequal " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġv cs Package Config ( name Ġ= Ġ" some - name ", Ġrevision Ġ= Ġ" 1 2 3 4 5 6 7 8 ", Ġurl Ġ= Ġ" ssh :// git @ host / repo . git ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . matches ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIdentifier . EMPTY . copy ( name Ġ= Ġ" some - other - name "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRepository Provenance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv cs Info Ġ= ĠV cs Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠV cs Type . GIT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġ" ssh :// git @ host / repo . git ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrevision Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolved Revision Ġ= Ġ" 1 2 3 4 5 6 7 8 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" return Ġtrue Ġif Ġonly Ġthe ĠV CS ĠURL Ġcredentials Ġdiffer " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġv cs Package Config ( name Ġ= Ġ" some - id ", Ġrevision Ġ= Ġ" 1 2 3 4 5 6 7 8 ", Ġurl Ġ= Ġ" ssh :// git @ host / repo . git ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . matches ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRepository Provenance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv cs Info Ġ= ĠV cs Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠV cs Type . GIT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġ" ssh :// host / repo . git ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrevision Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolved Revision Ġ= Ġ" 1 2 3 4 5 6 7 8 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" return Ġfalse Ġif Ġonly Ġresolved Ġrevision Ġis Ġnot Ġequal Ġto Ġthe Ġmatcher 's Ġrevision " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġv cs Package Config ( name Ġ= Ġ" some - name ", Ġrevision Ġ= Ġ" 1 2 3 4 5 6 7 8 ", Ġurl Ġ= Ġ" ssh :// git @ host / repo . git ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . matches ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRepository Provenance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv cs Info Ġ= ĠV cs Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠV cs Type . GIT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġ" ssh :// git @ host / repo . git ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrevision Ġ= Ġ" 1 2 3 4 5 6 7 8 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolved Revision Ġ= Ġ" 1 2 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" return Ġtrue Ġif Ġsource Ġartifact ĠURL Ġand Ġidentifier Ġare Ġequal " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġsource Artifact Config ( name Ġ= Ġ" some - name ", Ġurl Ġ= Ġ" https :// host / path / file . zip ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . matches ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArtifact Provenance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Artifact Ġ= ĠRemote Artifact . EMPTY . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġ" https :// host / path / file . zip " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" return Ġfalse Ġif Ġonly Ġthe Ġsource Ġartifact ĠURL Ġis Ġnot Ġequal " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġsource Artifact Config ( name Ġ= Ġ" some - name ", Ġurl Ġ= Ġ" https :// host / path / some - file . zip ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . matches ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArtifact Provenance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Artifact Ġ= ĠRemote Artifact . EMPTY . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġ" https :// host / path / some - other - file . zip " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ