/** * Copyright (c) 2009 - 2012 Red Hat, Inc. * * This software is licensed to you under the GNU General Public License, * version 2 (GPLv2). There is NO WARRANTY for this software, express or * implied, including the implied warranties of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 * along with this software; if not, see * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. * * Red Hat trademarks are not licensed under GPLv2. No permission is * granted to use or replicate Red Hat trademarks that are incorporated * in this software or its documentation. */ package org.candlepin.common.jackson; import static org.junit.Assert.*; import static org.mockito.Mockito.*; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; import java.util.Arrays; /** * DynamicFilterDataTest */ @RunWith(MockitoJUnitRunner.class) public class DynamicFilterDataTest { @Test public void testSimpleWhitelistFiltering() { DynamicFilterData filterData = new DynamicFilterData(true); filterData.includeAttribute("bacon"); assertTrue(filterData.isAttributeExcluded("spinach")); assertTrue(filterData.isAttributeExcluded(Arrays.asList("spinach"))); assertFalse(filterData.isAttributeExcluded("bacon")); assertFalse(filterData.isAttributeExcluded(Arrays.asList("bacon"))); } @Test public void testMultiLevelWhitelistFiltering() { DynamicFilterData filterData = new DynamicFilterData(true); filterData.includeAttribute("bacon.egg"); assertTrue(filterData.isAttributeExcluded("spinach")); assertTrue(filterData.isAttributeExcluded(Arrays.asList("spinach"))); assertFalse(filterData.isAttributeExcluded("bacon")); assertFalse(filterData.isAttributeExcluded(Arrays.asList("bacon"))); assertTrue(filterData.isAttributeExcluded("bacon.spinach")); assertTrue(filterData.isAttributeExcluded(Arrays.asList("bacon", "spinach"))); assertTrue(filterData.isAttributeExcluded("spinach.bacon")); assertTrue(filterData.isAttributeExcluded(Arrays.asList("spinach", "bacon"))); assertFalse(filterData.isAttributeExcluded("bacon.egg")); assertFalse(filterData.isAttributeExcluded(Arrays.asList("bacon", "egg"))); assertTrue(filterData.isAttributeExcluded("spinach.bacon.egg.cheese")); assertTrue(filterData.isAttributeExcluded(Arrays.asList("spinach", "bacon", "egg", "cheese"))); assertFalse(filterData.isAttributeExcluded("bacon.egg.cheese")); assertFalse(filterData.isAttributeExcluded(Arrays.asList("bacon", "egg", "cheese"))); } @Test public void testSimpleBlacklistFiltering() { DynamicFilterData filterData = new DynamicFilterData(false); filterData.excludeAttribute("bacon"); assertFalse(filterData.isAttributeExcluded("spinach")); assertFalse(filterData.isAttributeExcluded(Arrays.asList("spinach"))); assertTrue(filterData.isAttributeExcluded("bacon")); assertTrue(filterData.isAttributeExcluded(Arrays.asList("bacon"))); } @Test public void testMultiLevelBlacklistFiltering() { DynamicFilterData filterData = new DynamicFilterData(false); filterData.excludeAttribute("bacon.egg"); assertFalse(filterData.isAttributeExcluded("spinach")); assertFalse(filterData.isAttributeExcluded(Arrays.asList("spinach"))); assertFalse(filterData.isAttributeExcluded("bacon")); assertFalse(filterData.isAttributeExcluded(Arrays.asList("bacon"))); assertFalse(filterData.isAttributeExcluded("bacon.spinach")); assertFalse(filterData.isAttributeExcluded(Arrays.asList("bacon", "spinach"))); assertFalse(filterData.isAttributeExcluded("spinach.bacon")); assertFalse(filterData.isAttributeExcluded(Arrays.asList("spinach", "bacon"))); assertTrue(filterData.isAttributeExcluded("bacon.egg")); assertTrue(filterData.isAttributeExcluded(Arrays.asList("bacon", "egg"))); assertFalse(filterData.isAttributeExcluded("spinach.bacon.egg.cheese")); assertFalse(filterData.isAttributeExcluded(Arrays.asList("spinach", "bacon", "egg", "cheese"))); assertTrue(filterData.isAttributeExcluded("bacon.egg.cheese")); assertTrue(filterData.isAttributeExcluded(Arrays.asList("bacon", "egg", "cheese"))); } @Test public void testMultiLevelDualFiltering() { DynamicFilterData filterData = new DynamicFilterData(false); filterData.includeAttribute("a.b1"); filterData.includeAttribute("a.b2.d2"); filterData.excludeAttribute("a.b1.c2"); filterData.excludeAttribute("a.b2"); // a: { b1: { c1, c2, c3 }, b2: { d1, d2, d3 } } assertFalse(filterData.isAttributeExcluded("a")); assertFalse(filterData.isAttributeExcluded("a.b1")); assertFalse(filterData.isAttributeExcluded("a.b1.c1")); assertTrue(filterData.isAttributeExcluded("a.b1.c2")); assertFalse(filterData.isAttributeExcluded("a.b1.c3")); assertFalse(filterData.isAttributeExcluded("a.b2")); assertTrue(filterData.isAttributeExcluded("a.b2.d1")); assertFalse(filterData.isAttributeExcluded("a.b2.d2")); assertTrue(filterData.isAttributeExcluded("a.b2.d3")); assertFalse(filterData.isAttributeExcluded(Arrays.asList("a"))); assertFalse(filterData.isAttributeExcluded(Arrays.asList("a", "b1"))); assertFalse(filterData.isAttributeExcluded(Arrays.asList("a", "b1", "c1"))); assertTrue(filterData.isAttributeExcluded(Arrays.asList("a", "b1", "c2"))); assertFalse(filterData.isAttributeExcluded(Arrays.asList("a", "b1", "c3"))); assertFalse(filterData.isAttributeExcluded(Arrays.asList("a", "b2"))); assertTrue(filterData.isAttributeExcluded(Arrays.asList("a", "b2", "d1"))); assertFalse(filterData.isAttributeExcluded(Arrays.asList("a", "b2", "d2"))); assertTrue(filterData.isAttributeExcluded(Arrays.asList("a", "b2", "d3"))); } }