/* * 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.addthis.hydra.data.filter.value; import com.addthis.bundle.value.ValueFactory; import com.addthis.bundle.value.ValueMap; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import static com.addthis.codec.config.Configs.decodeObject; import static com.addthis.codec.config.Configs.newDefault; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; public class TestValueFilterMapSubset { private static final Logger log = LoggerFactory.getLogger(TestValueFilterMapSubset.class); @Test public void nullPassThrough() throws Exception { ValueFilterMapSubset mapSubsetFilter = newDefault(ValueFilterMapSubset.class); assertNull(mapSubsetFilter.filter(null)); } @Test public void toMap() throws Exception { ValueMap map = createMap("k1=v1", "k2=v2", "k3=v3"); ValueFilterMapSubset mapSubsetFilter = newDefault(ValueFilterMapSubset.class); assertEquals(map, mapSubsetFilter.filter(map)); } @Test public void whiteList() throws Exception { ValueMap map = createMap("k1=v1", "k2=v2", "k3=v3"); ValueMap result = createMap("k1=v1", "k2=v2"); ValueFilterMapSubset mapSubsetFilter = decodeObject(ValueFilterMapSubset.class, "whitelist = [k1, k2]"); assertEquals(result, mapSubsetFilter.filter(map)); } @Test public void blackList() throws Exception { ValueMap map = createMap("k1=v1", "k2=v2", "k3=v3"); ValueMap result = createMap("k1=v1", "k2=v2"); ValueFilterMapSubset mapSubsetFilter = decodeObject(ValueFilterMapSubset.class, "blacklist = k3"); assertEquals(result, mapSubsetFilter.filter(map)); } @Test public void whitelistAndBlacklist() throws Exception { ValueMap map = createMap("k1=v1", "k2=v2", "k3=v3"); ValueMap result = createMap("k1=v1"); ValueFilterMapSubset mapSubsetFilter = decodeObject(ValueFilterMapSubset.class, "whitelist = k1, blacklist = k3"); assertEquals(result, mapSubsetFilter.filter(map)); } @Test public void string() throws Exception { ValueMap map = createMap("k1=v1", "k2=v2", "k3=v3"); ValueFilterMapSubset mapSubsetFilter = decodeObject(ValueFilterMapSubset.class, "toString = true"); assertEquals("k1=v1,k2=v2,k3=v3", mapSubsetFilter.filter(map).toString()); } private static ValueMap createMap(String... kvPairs) { ValueMap valueMap = ValueFactory.createMap(); for (String kvPair : kvPairs) { String[] kv = kvPair.split("="); valueMap.put(kv[0], ValueFactory.create(kv[1])); } return valueMap; } }