FeatureAdminData data = new FeatureAdminData(); if (featuresJson.has(FEATURES_NAMES)) { JSONArray features = featuresJson.getJSONArray(FEATURES_NAMES); for (int i = 0; i < features.length(); i++) { data.addFeature(features.getString(i)); data.setType(Type.WHITELIST); if (!data.getFeatures().contains(CORE_FEATURE)) { data.addFeature(CORE_FEATURE); data.setType(Type.BLACKLIST); data.removeFeature(CORE_FEATURE);
/** * Adds an feature for a gadget. * * @param toAdd * the feature to add. */ public void addFeature(String toAdd) { Set<String> features = createSingleFeatureSet(toAdd); addFeatures(features); }
@Test public void testEquals() { assertTrue(whitelistData.equals(new FeatureAdminData(whitelist, Type.WHITELIST))); assertFalse(whitelistData.equals(new FeatureAdminData(whitelist,Type.BLACKLIST))); assertFalse(whitelistData.equals(new FeatureAdminData(new HashSet<String>(), Type.WHITELIST))); assertFalse(whitelistData.equals(new FeatureAdminData(Sets.newHashSet(EE), Type.WHITELIST))); assertFalse(whitelistData.equals(null)); assertTrue(blacklistData.equals(new FeatureAdminData(blacklist, Type.BLACKLIST))); assertTrue(nullData.equals(defaultData)); assertFalse(nullData.equals(whitelistData)); }
/** * Removes an feature for a gadget. * * @param toRemove * the feature to remove. */ public void removeFeature(String toRemove) { Set<String> features = createSingleFeatureSet(toRemove); removeFeatures(features, this.features); }
@Override public boolean equals(Object obj) { if (obj instanceof FeatureAdminData) { FeatureAdminData test = (FeatureAdminData) obj; return this.getFeatures().equals(test.getFeatures()) && this.getType().equals(test.getType()); } return false; }
/** * Sets the feature admin data. * * @param featureAdminData * the feature admin data to set. */ public void setFeatureAdminData(FeatureAdminData featureAdminData) { if(featureAdminData == null) { featureAdminData = new FeatureAdminData(); } this.featureAdminData = featureAdminData; }
@Test public void testAddFeature() { validateDefaultFeatures(); whitelistData.addFeature("foo"); blacklistData.addFeature("foo"); nullData.addFeature("foo"); defaultData.addFeature("foo"); defaultData.addFeature(null); whitelist.add("foo"); blacklist.add("foo"); assertEquals(whitelist, whitelistData.getFeatures()); assertEquals(blacklist, blacklistData.getFeatures()); assertEquals(Sets.newHashSet("foo"), nullData.getFeatures()); assertEquals(Sets.newHashSet("foo"), defaultData.getFeatures()); }
@Test public void testRemoveFeature() { validateDefaultFeatures(); whitelistData.removeFeature(TABS); blacklistData.removeFeature(SELECTION); nullData.removeFeature(TABS); defaultData.removeFeature(TABS); assertEquals(Sets.newHashSet(SETPREFS, VIEWS), whitelistData.getFeatures()); assertEquals(Sets.newHashSet(EE), blacklistData.getFeatures()); assertEquals(Sets.newHashSet(), nullData.getFeatures()); assertEquals(Sets.newHashSet(), defaultData.getFeatures()); }
@Test public void testRemoveFeatures() { validateDefaultFeatures(); Set<String> toRemoveWhitelist = Sets.newHashSet(TABS, VIEWS); Set<String> toRemoveBlacklist = Sets.newHashSet(EE); whitelistData.removeFeatures(toRemoveWhitelist); blacklistData.removeFeatures(toRemoveBlacklist); nullData.removeFeatures(toRemoveWhitelist); defaultData.removeFeatures(toRemoveWhitelist); assertEquals(Sets.newHashSet(SETPREFS), whitelistData.getFeatures()); assertEquals(Sets.newHashSet(SELECTION), blacklistData.getFeatures()); assertEquals(Sets.newHashSet(), nullData.getFeatures()); assertEquals(Sets.newHashSet(), defaultData.getFeatures()); }
@Test public void testSetPriority() { whitelistData.setType(Type.BLACKLIST); blacklistData.setType(Type.WHITELIST); nullData.setType(Type.BLACKLIST); defaultData.setType(Type.BLACKLIST); assertEquals(Type.BLACKLIST, whitelistData.getType()); assertEquals(Type.BLACKLIST, nullData.getType()); assertEquals(Type.BLACKLIST, defaultData.getType()); assertEquals(Type.WHITELIST, blacklistData.getType()); nullData.setType(null); assertEquals(Type.WHITELIST, nullData.getType()); }
@Test public void testAddFeatures() { validateDefaultFeatures(); Set<String> toAdd = Sets.newHashSet("foo", "bar", null); whitelistData.addFeatures(toAdd); blacklistData.addFeatures(toAdd); nullData.addFeatures(toAdd); defaultData.addFeatures(toAdd); Set<String> actuallyAdded = Sets.newHashSet("foo", "bar"); whitelist.addAll(actuallyAdded); blacklist.addAll(actuallyAdded); assertEquals(whitelist, whitelistData.getFeatures()); assertEquals(blacklist, blacklistData.getFeatures()); assertEquals(actuallyAdded, nullData.getFeatures()); assertEquals(actuallyAdded, defaultData.getFeatures()); }
@Test public void testClearFeatures() { validateDefaultFeatures(); whitelistData.clearFeatures(); blacklistData.clearFeatures(); nullData.clearFeatures(); defaultData.clearFeatures(); assertEquals(Sets.newHashSet(), whitelistData.getFeatures()); assertEquals(Sets.newHashSet(), blacklistData.getFeatures()); assertEquals(Sets.newHashSet(), nullData.getFeatures()); assertEquals(Sets.newHashSet(), defaultData.getFeatures()); }
/** * Checks the features for a gadget to see if they are allowed. * * @param featuresForGadget * a set of features that the admin has either whitelist or blacklisted. * @param gadgetFeatures * a list of features required by the gadget. * @param featureAdminData * the feature admin data for the gadget. * @return true if all the features for the gadget are allowed, false otherwise. */ private boolean areAllFeaturesAllowed(Set<String> featuresForGadget, List<String> gadgetFeatures, FeatureAdminData featureAdminData) { switch (featureAdminData.getType()) { case BLACKLIST: for (String feature : gadgetFeatures) { if (featuresForGadget.contains(feature)) { return false; } } break; case WHITELIST: default: return featuresForGadget.containsAll(gadgetFeatures); } return true; }
private void validateDefaultFeatures() { assertEquals(whitelist, whitelistData.getFeatures()); assertEquals(blacklist, blacklistData.getFeatures()); assertEquals(Sets.newHashSet(), nullData.getFeatures()); assertEquals(Sets.newHashSet(), defaultData.getFeatures()); }
/** * Adds features for this gadget. * * @param toAdd * the features for this gadget. */ public void addFeatures(Set<String> toAdd) { addFeatures(toAdd, this.features); }
/** * Removes the list of features for a gadget. * * @param toRemove * the features to remove. */ public void removeFeatures(Set<String> toRemove) { removeFeatures(toRemove, this.features); }
@Override public boolean equals(Object obj) { if (obj instanceof GadgetAdminData) { GadgetAdminData test = (GadgetAdminData) obj; return this.getFeatureAdminData().equals(test.getFeatureAdminData()) && this.getRpcAdminData().equals(test.getRpcAdminData()); } return false; }
/** * Constructor */ public GadgetAdminData() { this.featureAdminData = new FeatureAdminData(); this.rpcAdminData = new RpcAdminData(); }
@Test public void testAddFeature() { validateDefaultFeatures(); whitelistData.addFeature("foo"); blacklistData.addFeature("foo"); nullData.addFeature("foo"); defaultData.addFeature("foo"); defaultData.addFeature(null); whitelist.add("foo"); blacklist.add("foo"); assertEquals(whitelist, whitelistData.getFeatures()); assertEquals(blacklist, blacklistData.getFeatures()); assertEquals(Sets.newHashSet("foo"), nullData.getFeatures()); assertEquals(Sets.newHashSet("foo"), defaultData.getFeatures()); }
public boolean isAllowedFeature(Feature feature, Gadget gadget) { String container = getSafeContainerFromGadget(gadget); String gadgetUrl = getSafeGadgetUrlFromGadget(gadget); if (container == null || gadgetUrl == null) { return false; } if (!isFeatureAdminEnabled(container)) { return true; } if (!hasGadgetAdminData(container, gadgetUrl)) { // If feature administration is not enabled assume the feature is allowed return false; } GadgetAdminData gadgetAdminData = getGadgetAdminData(container, gadgetUrl); FeatureAdminData featureAdminData = gadgetAdminData.getFeatureAdminData(); String featureName = feature.getName(); switch (featureAdminData.getType()) { case BLACKLIST: return !featureAdminData.getFeatures().contains(featureName); case WHITELIST: default: return featureAdminData.getFeatures().contains(featureName); } }