/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠD uck Duck Go Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// 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 . Ċ Ġ*/ Ċ Ċ package Ġcom . duck duck go . privacy . config . impl . features . tracker allow list Ċ Ċ import Ġcom . duck duck go . app . File Utilities Ċ import Ġcom . duck duck go . privacy . config . store . Privacy Feature Toggle s Ċ import Ġcom . duck duck go . privacy . config . store . Privacy Feature Toggle s Repository Ċ import Ġcom . duck duck go . privacy . config . store . Tracker Allow list Entity Ċ import Ġcom . duck duck go . privacy . config . store . features . tracker allow list . Tracker Allow list Repository Ċ import Ġorg . mockito . kotlin . argument Captor Ċ import Ġorg . mockito . kotlin . mock Ċ import Ġorg . mockito . kotlin . verify Ċ import Ġorg . junit . Assert .* Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ Ċ class ĠTracker Allow list Plugin Test Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġtest ee : ĠTracker Allow list Plugin ĊĊĠĠĠ Ġprivate Ġval Ġmock Feature Toggle s Repository : ĠPrivacy Feature Toggle s Repository Ġ= Ġmock () ĊĠĠĠ Ġprivate Ġval Ġmock Allow list Repository : ĠTracker Allow list Repository Ġ= Ġmock () ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġbefore () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest ee Ġ= ĠTracker Allow list Plugin ( mock Allow list Repository , Ġmock Feature Toggle s Repository ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen Feature Name DoesNot Match Tracker Allow list Then Return False () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertFalse ( test ee . store (" test ", ĠEMPTY _ JSON _ STRING )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen Feature Name Matches Tracker Allow list Then Return True () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( test ee . store ( FEATURE _ NAME , ĠEMPTY _ JSON _ STRING )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen Feature Name Matches Tracker Allow list And IsEnabled Then Store Feature Enabled () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson String Ġ= ĠFile Utilities . load Text ( java Class . class Loader !! , Ġ" json / tracker _ allow list . json ") ĊĊĠĠĠĠĠĠĠ Ġtest ee . store ( FEATURE _ NAME , Ġjson String ) ĊĊĠĠĠĠĠĠĠ Ġverify ( mock Feature Toggle s Repository ). insert ( Privacy Feature Toggle s ( FEATURE _ NAME , Ġtrue )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen Feature Name Matches Tracker Allow list And IsNot Enabled Then Store Feature Disabled () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson String Ġ= ĠFile Utilities . load Text ( java Class . class Loader !! , Ġ" json / tracker _ allow list _ disabled . json ") ĊĊĠĠĠĠĠĠĠ Ġtest ee . store ( FEATURE _ NAME , Ġjson String ) ĊĊĠĠĠĠĠĠĠ Ġverify ( mock Feature Toggle s Repository ). insert ( Privacy Feature Toggle s ( FEATURE _ NAME , Ġfalse )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen Feature Name Matches Tracker Allow list Then Update All Existing Exceptions () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson String Ġ= ĠFile Utilities . load Text ( java Class . class Loader !! , Ġ" json / tracker _ allow list . json ") ĊĊĠĠĠĠĠĠĠ Ġtest ee . store ( FEATURE _ NAME , Ġjson String ) ĊĊĠĠĠĠĠĠĠ Ġargument Captor < List < Tracker Allow list Entity >> (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( mock Allow list Repository ). update All ( capture ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtracker Allow list Entity Ġ= Ġthis . first Value . first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrules Ġ= Ġtracker Allow list Entity . rules ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġthis . all Values . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" allow list - tracker - 1 . com ", Ġtracker Allow list Entity . domain ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" allow list - tracker - 1 . com / videos . js ", Ġrules . first (). rule ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" test site . com ", Ġrules . first (). domains . first ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" match Ġsingle Ġresource Ġon Ġsingle Ġsite ", Ġrules . first (). reason ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFEATURE _ NAME Ġ= Ġ" tracker Allow list " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠEMPTY _ JSON _ STRING Ġ= Ġ"{} " ĊĠĠĠ Ġ} Ċ } Ċ