Tracker['use_third_party_id_cookie'] = $instanceWideSettingValue; if ($siteSpecificSettingValue !== null) { Config::getInstance()->Tracker_1['use_third_party_id_cookie'] = $siteSpecificSettingValue; } $this->assertEquals($expectedValue, ThirdPartyCookies::getInstance()->getValue()); } /** * @return iterable */ public function dataGetValueNoIdSite(): iterable { yield 'instance wide set to 0, site specific set to 0' => [ false, false, false, ]; yield 'instance wide set to 1, site specific set to 0' => [ true, false, true, ]; yield 'instance wide set to 0, site specific set to 1' => [ false, true, false, ]; yield 'instance wide set to 1, site specific set to 1' => [ true, true, true, ]; yield 'instance wide set to 1, site specific set to null' => [ true, null, true, ]; } /** * @dataProvider dataGetValueIdSite */ public function testGetValueReturnsCorrectValueWhenIdSiteProvided( int $idSite, bool $instanceWideSettingValue, ?bool $siteSpecificSettingValue, bool $expectedValue ): void { Config::getInstance()->Tracker['use_third_party_id_cookie'] = $instanceWideSettingValue; Config::getInstance()->Tracker_1['use_third_party_id_cookie'] = $siteSpecificSettingValue; $this->assertEquals($expectedValue, ThirdPartyCookies::getInstance($idSite)->getValue()); } /** * @return iterable */ public function dataGetValueIdSite(): iterable { yield 'instance wide set to 1, site specific set to 0' => [ 1, true, false, false, ]; yield 'instance wide set to 1, site specific set to 1' => [ 1, true, true, true, ]; yield 'instance wide set to 0, site specific set to null' => [ 1, false, null, false, ]; yield 'instance wide set to 0, site specific set to 1' => [ 1, false, true, true, ]; yield 'instance wide set to 0, site specific set to 1, different site selected' => [ 2, false, true, false, ]; } /** * @dataProvider dataIsCompliant */ public function testIsCompliant( string $policy, bool $thirdPartyCookieSetting, bool $expected ): void { Config::getInstance()->Tracker['use_third_party_id_cookie'] = $thirdPartyCookieSetting; $this->assertEquals($expected, ThirdPartyCookies::isCompliant($policy)); } /** * @return iterable */ public function dataIsCompliant(): iterable { yield 'CNIL, third party cookie on' => [ CnilPolicy::class, true, false, ]; yield 'CNIL, third party cookie off' => [ CnilPolicy::class, false, true, ]; } }