2727import static org .mockito .ArgumentMatchers .any ;
2828import static org .mockito .ArgumentMatchers .anyBoolean ;
2929import static org .mockito .BDDMockito .given ;
30+ import static org .mockito .Mockito .times ;
3031import static org .mockito .Mockito .verify ;
3132
3233public class PurposeEightStrategyTest {
@@ -222,20 +223,20 @@ public void processTypePurposeStrategyShouldPassEmptyListWithFullEnforcementsWhe
222223 vendorPermissionsWithGvl , false );
223224
224225 // then
225- final VendorPermission vendorPermission1Changed = VendorPermission .of (1 , "b1" , allowAllPurpose ());
226- final VendorPermission vendorPermission2Changed = VendorPermission .of (2 , "b2" , allowAllPurpose ());
227- final VendorPermission vendorPermission3Changed = VendorPermission .of (3 , "b3" , allowAllPurpose ());
226+ final VendorPermission vendorPermission1Changed = VendorPermission .of (1 , "b1" , allowPurposeAndNaturally ());
227+ final VendorPermission vendorPermission2Changed = VendorPermission .of (2 , "b2" , allowPurposeAndNaturally ());
228+ final VendorPermission vendorPermission3Changed = VendorPermission .of (3 , "b3" , allowPurposeAndNaturally ());
228229 assertThat (result ).usingFieldByFieldElementComparator ().isEqualTo (
229230 Arrays .asList (vendorPermission1Changed , vendorPermission2Changed , vendorPermission3Changed ));
230231
231- verify (fullEnforcePurposeStrategy ).allowedByTypeStrategy (PURPOSE , tcString , emptyList (),
232+ verify (fullEnforcePurposeStrategy , times ( 2 ) ).allowedByTypeStrategy (PURPOSE , tcString , emptyList (),
232233 vendorPermissionsWithGvl , true );
233234 }
234235
235236 @ Test
236- public void processTypePurposeStrategyShouldAllowOnlyPurposeWhenThereAreNoNaturalAllowance () {
237+ public void processTypePurposeStrategyShouldAllowPurposeAndNaturallyVendorExceptions () {
237238 // given
238- final Purpose purpose = Purpose .of (EnforcePurpose .full , null , Arrays .asList ("b1" , "b2" , "b3" , "b5" , "b7" ));
239+ final Purpose purpose = Purpose .of (EnforcePurpose .full , null , Arrays .asList ("b1" , "b2" ));
239240 final VendorPermission vendorPermission1 = VendorPermission .of (1 , "b1" , PrivacyEnforcementAction .restrictAll ());
240241 final VendorPermission vendorPermission2 = VendorPermission .of (2 , "b2" , PrivacyEnforcementAction .restrictAll ());
241242 final VendorPermission vendorPermission3 = VendorPermission .of (3 , "b3" , PrivacyEnforcementAction .restrictAll ());
@@ -247,34 +248,37 @@ public void processTypePurposeStrategyShouldAllowOnlyPurposeWhenThereAreNoNatura
247248 VendorV2 .empty (3 ));
248249 final List <VendorPermission > vendorPermissions = Arrays .asList (vendorPermission1 , vendorPermission2 ,
249250 vendorPermission3 );
250- final List <VendorPermissionWithGvl > vendorPermissionsWithGvl = Arrays .asList (vendorPermissionWitGvl1 ,
251- vendorPermissionWitGvl2 , vendorPermissionWitGvl3 );
251+ final List <VendorPermission > excludedVendorPermissions = Arrays .asList (vendorPermission1 , vendorPermission2 );
252252
253253 given (fullEnforcePurposeStrategy .allowedByTypeStrategy (any (), any (), any (), any (), anyBoolean ()))
254254 .willReturn (vendorPermissions )
255- .willReturn (emptyList ());
255+ .willReturn (excludedVendorPermissions );
256+
257+ final List <VendorPermissionWithGvl > vendorPermissionsWithGvl = Arrays .asList (vendorPermissionWitGvl1 ,
258+ vendorPermissionWitGvl2 , vendorPermissionWitGvl3 );
256259
257260 // when
258261 final Collection <VendorPermission > result = target .processTypePurposeStrategy (tcString , purpose ,
259262 vendorPermissionsWithGvl , false );
260263
261264 // then
262- final VendorPermission vendorPermission1Changed = VendorPermission .of (1 , "b1" , allowPurpose ());
263- final VendorPermission vendorPermission2Changed = VendorPermission .of (2 , "b2" , allowPurpose ());
265+ final List <VendorPermissionWithGvl > excludedVendorPermissionsWithGvl = Arrays .asList (vendorPermissionWitGvl1 ,
266+ vendorPermissionWitGvl2 );
267+
268+ final VendorPermission vendorPermission1Changed = VendorPermission .of (1 , "b1" , allowPurposeAndNaturally ());
269+ final VendorPermission vendorPermission2Changed = VendorPermission .of (2 , "b2" , allowPurposeAndNaturally ());
264270 final VendorPermission vendorPermission3Changed = VendorPermission .of (3 , "b3" , allowPurpose ());
265271 assertThat (result ).usingFieldByFieldElementComparator ().isEqualTo (
266272 Arrays .asList (vendorPermission1Changed , vendorPermission2Changed , vendorPermission3Changed ));
267273
268- verify (fullEnforcePurposeStrategy ).allowedByTypeStrategy (PURPOSE , tcString , emptyList (),
269- vendorPermissionsWithGvl , true );
270- verify (fullEnforcePurposeStrategy ).allowedByTypeStrategy (PURPOSE , tcString , vendorPermissionsWithGvl ,
271- emptyList (), true );
274+ verify (fullEnforcePurposeStrategy , times (2 )).allowedByTypeStrategy (PURPOSE , tcString ,
275+ singletonList (vendorPermissionWitGvl3 ), excludedVendorPermissionsWithGvl , true );
272276 }
273277
274278 @ Test
275- public void processTypePurposeStrategyShouldAllowOnlyPurposeWhenThereAreNoNaturalAllowanceForDowngraded () {
279+ public void processTypePurposeStrategyShouldAllowPurposeAndNaturallyWhenVendorPermissionsReturnedForDowngraded () {
276280 // given
277- final Purpose purpose = Purpose .of (EnforcePurpose .no , null , Arrays .asList ("b1" , "b2" , "b3" , "b5" , "b7" ));
281+ final Purpose purpose = Purpose .of (EnforcePurpose .no , null , Arrays .asList ("b1" , "b2" ));
278282 final VendorPermission vendorPermission1 = VendorPermission .of (1 , "b1" , PrivacyEnforcementAction .restrictAll ());
279283 final VendorPermission vendorPermission2 = VendorPermission .of (2 , "b2" , PrivacyEnforcementAction .restrictAll ());
280284 final VendorPermission vendorPermission3 = VendorPermission .of (3 , "b3" , PrivacyEnforcementAction .restrictAll ());
@@ -286,44 +290,50 @@ public void processTypePurposeStrategyShouldAllowOnlyPurposeWhenThereAreNoNatura
286290 VendorV2 .empty (3 ));
287291 final List <VendorPermission > vendorPermissions = Arrays .asList (vendorPermission1 , vendorPermission2 ,
288292 vendorPermission3 );
289- final List < VendorPermissionWithGvl > vendorPermissionsWithGvl = Arrays . asList ( vendorPermissionWitGvl1 ,
290- vendorPermissionWitGvl2 , vendorPermissionWitGvl3 );
293+
294+ final List < VendorPermission > excludedVendorPermissions = Arrays . asList ( vendorPermission1 , vendorPermission2 );
291295
292296 given (noEnforcePurposeStrategy .allowedByTypeStrategy (any (), any (), any (), any (), anyBoolean ()))
293297 .willReturn (vendorPermissions );
294298 given (basicEnforcePurposeStrategy .allowedByTypeStrategy (any (), any (), any (), any (), anyBoolean ()))
295- .willReturn (emptyList ());
299+ .willReturn (excludedVendorPermissions );
300+
301+ final List <VendorPermissionWithGvl > vendorPermissionsWithGvl = Arrays .asList (vendorPermissionWitGvl1 ,
302+ vendorPermissionWitGvl2 , vendorPermissionWitGvl3 );
296303
297304 // when
298305 final Collection <VendorPermission > result = target .processTypePurposeStrategy (tcString , purpose ,
299306 vendorPermissionsWithGvl , true );
300307
301308 // then
302- final VendorPermission vendorPermission1Changed = VendorPermission .of (1 , "b1" , allowPurpose ());
303- final VendorPermission vendorPermission2Changed = VendorPermission .of (2 , "b2" , allowPurpose ());
309+ final List <VendorPermissionWithGvl > excludedVendorPermissionsWithGvl = Arrays .asList (vendorPermissionWitGvl1 ,
310+ vendorPermissionWitGvl2 );
311+
312+ final VendorPermission vendorPermission1Changed = VendorPermission .of (1 , "b1" , allowPurposeAndNaturally ());
313+ final VendorPermission vendorPermission2Changed = VendorPermission .of (2 , "b2" , allowPurposeAndNaturally ());
304314 final VendorPermission vendorPermission3Changed = VendorPermission .of (3 , "b3" , allowPurpose ());
305315 assertThat (result ).usingFieldByFieldElementComparator ().isEqualTo (
306316 Arrays .asList (vendorPermission1Changed , vendorPermission2Changed , vendorPermission3Changed ));
307317
308- verify (noEnforcePurposeStrategy ).allowedByTypeStrategy (PURPOSE , tcString , emptyList (),
309- vendorPermissionsWithGvl , true );
310- verify (basicEnforcePurposeStrategy ).allowedByTypeStrategy (PURPOSE , tcString , vendorPermissionsWithGvl ,
311- emptyList () , true );
318+ verify (noEnforcePurposeStrategy ).allowedByTypeStrategy (PURPOSE , tcString ,
319+ singletonList ( vendorPermissionWitGvl3 ), excludedVendorPermissionsWithGvl , true );
320+ verify (basicEnforcePurposeStrategy ).allowedByTypeStrategy (PURPOSE , tcString ,
321+ singletonList ( vendorPermissionWitGvl3 ), excludedVendorPermissionsWithGvl , true );
312322 }
313323
314- private static PrivacyEnforcementAction allowAllPurpose () {
315- final PrivacyEnforcementAction privacyEnforcementAction = PrivacyEnforcementAction .restrictAll ();
316- privacyEnforcementAction .setRemoveUserIds (false );
317- privacyEnforcementAction .setMaskDeviceInfo (false );
318- return privacyEnforcementAction ;
324+ private static PrivacyEnforcementAction allowPurposeAndNaturally () {
325+ return allowNatural (allowPurpose ());
319326 }
320327
321328 private static PrivacyEnforcementAction allowPurpose () {
322329 return PrivacyEnforcementAction .restrictAll ();
323330 }
324331
325332 private static PrivacyEnforcementAction allowNatural () {
326- final PrivacyEnforcementAction privacyEnforcementAction = PrivacyEnforcementAction .restrictAll ();
333+ return allowNatural (PrivacyEnforcementAction .restrictAll ());
334+ }
335+
336+ private static PrivacyEnforcementAction allowNatural (PrivacyEnforcementAction privacyEnforcementAction ) {
327337 privacyEnforcementAction .setRemoveUserIds (false );
328338 privacyEnforcementAction .setMaskDeviceInfo (false );
329339 return privacyEnforcementAction ;
0 commit comments