/* * JBoss, Home of Professional Open Source. * Copyright 2016 Red Hat, Inc., and individual contributors * as indicated by the @author tags. * * 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 org.wildfly.security.permission; import static org.junit.Assert.*; import static org.wildfly.security.permission.PermissionActions.getCanonicalActionString; import java.util.EnumSet; import org.junit.Test; /** * @author <a href="mailto:david.lloyd@redhat.com">David M. Lloyd</a> */ @SuppressWarnings({"SpellCheckingInspection", "deprecation", "unused"}) public class TestPermissionActions { enum ActionSetOne { foo, bar, baz } enum ActionSetTwo { foobar, foobaz, foobazz, foobarz, foobazr, fooba } @Test public void testCanonicalActionString() { assertEquals("foo,bar,baz", getCanonicalActionString(EnumSet.allOf(ActionSetOne.class))); assertEquals("", getCanonicalActionString(EnumSet.noneOf(ActionSetOne.class))); assertEquals("foo", getCanonicalActionString(EnumSet.of(ActionSetOne.foo))); assertEquals("foo,baz", getCanonicalActionString(EnumSet.of(ActionSetOne.foo, ActionSetOne.baz))); } @Test public void testParseValidActionString() { EnumSet<ActionSetOne> set; // --- set = PermissionActions.parseActionStringToSet(ActionSetOne.class, ""); assertEquals(0, set.size()); // --- set = PermissionActions.parseActionStringToSet(ActionSetOne.class, "bar,foo"); assertEquals(2, set.size()); assertTrue(set.contains(ActionSetOne.bar)); assertTrue(set.contains(ActionSetOne.foo)); // --- set = PermissionActions.parseActionStringToSet(ActionSetOne.class, "bar,foo,bar,bar"); assertEquals(2, set.size()); assertTrue(set.contains(ActionSetOne.bar)); assertTrue(set.contains(ActionSetOne.foo)); // --- set = PermissionActions.parseActionStringToSet(ActionSetOne.class, ",,bar,foo,,"); assertEquals(2, set.size()); assertTrue(set.contains(ActionSetOne.bar)); assertTrue(set.contains(ActionSetOne.foo)); // --- set = PermissionActions.parseActionStringToSet(ActionSetOne.class, "bar,foo,baz"); assertEquals(3, set.size()); assertTrue(set.contains(ActionSetOne.bar)); assertTrue(set.contains(ActionSetOne.baz)); assertTrue(set.contains(ActionSetOne.foo)); // --- set = PermissionActions.parseActionStringToSet(ActionSetOne.class, "bar, foo ,baz"); assertEquals(3, set.size()); assertTrue(set.contains(ActionSetOne.bar)); assertTrue(set.contains(ActionSetOne.baz)); assertTrue(set.contains(ActionSetOne.foo)); // --- set = PermissionActions.parseActionStringToSet(ActionSetOne.class, " bar, foo ,baz "); assertEquals(3, set.size()); assertTrue(set.contains(ActionSetOne.bar)); assertTrue(set.contains(ActionSetOne.baz)); assertTrue(set.contains(ActionSetOne.foo)); // --- set = PermissionActions.parseActionStringToSet(ActionSetOne.class, "*"); assertEquals(3, set.size()); assertTrue(set.contains(ActionSetOne.bar)); assertTrue(set.contains(ActionSetOne.baz)); assertTrue(set.contains(ActionSetOne.foo)); // --- set = PermissionActions.parseActionStringToSet(ActionSetOne.class, "*,bar"); assertEquals(3, set.size()); assertTrue(set.contains(ActionSetOne.bar)); assertTrue(set.contains(ActionSetOne.baz)); assertTrue(set.contains(ActionSetOne.foo)); // --- set = PermissionActions.parseActionStringToSet(ActionSetOne.class, ",bar,*,bar"); assertEquals(3, set.size()); assertTrue(set.contains(ActionSetOne.bar)); assertTrue(set.contains(ActionSetOne.baz)); assertTrue(set.contains(ActionSetOne.foo)); // --- set = PermissionActions.parseActionStringToSet(ActionSetOne.class, "*,,,,,,baz"); assertEquals(3, set.size()); assertTrue(set.contains(ActionSetOne.bar)); assertTrue(set.contains(ActionSetOne.baz)); assertTrue(set.contains(ActionSetOne.foo)); } @Test public void testParseInvalidActionString() { // --- try { PermissionActions.parseActionStringToSet(ActionSetOne.class, "xxx"); } catch (IllegalArgumentException ignored) {} // --- try { PermissionActions.parseActionStringToSet(ActionSetOne.class, "barf,foo"); } catch (IllegalArgumentException ignored) {} // --- try { PermissionActions.parseActionStringToSet(ActionSetOne.class, ",barf,foo,foo,"); } catch (IllegalArgumentException ignored) {} // --- try { PermissionActions.parseActionStringToSet(ActionSetOne.class, "*,barf,foo"); } catch (IllegalArgumentException ignored) {} // --- try { PermissionActions.parseActionStringToSet(ActionSetOne.class, "*,bar f,foo"); } catch (IllegalArgumentException ignored) {} // --- try { PermissionActions.parseActionStringToSet(ActionSetOne.class, "*,bar foo,foo"); } catch (IllegalArgumentException ignored) {} // --- try { PermissionActions.parseActionStringToSet(ActionSetOne.class, "FOO,BAR"); } catch (IllegalArgumentException ignored) {} // --- } @Test public void testCommonPrefixActionString() { EnumSet<ActionSetTwo> set; // --- set = PermissionActions.parseActionStringToSet(ActionSetTwo.class, ""); assertEquals(0, set.size()); // --- set = PermissionActions.parseActionStringToSet(ActionSetTwo.class, "foobar,fooba"); assertEquals(2, set.size()); assertTrue(set.contains(ActionSetTwo.fooba)); assertTrue(set.contains(ActionSetTwo.foobar)); // --- set = PermissionActions.parseActionStringToSet(ActionSetTwo.class, "foobar,fooba,foobazz"); assertEquals(3, set.size()); assertTrue(set.contains(ActionSetTwo.fooba)); assertTrue(set.contains(ActionSetTwo.foobar)); assertTrue(set.contains(ActionSetTwo.foobazz)); // --- set = PermissionActions.parseActionStringToSet(ActionSetTwo.class, "foobar,fooba,foobazz,foobaz"); assertEquals(4, set.size()); assertTrue(set.contains(ActionSetTwo.fooba)); assertTrue(set.contains(ActionSetTwo.foobar)); assertTrue(set.contains(ActionSetTwo.foobaz)); assertTrue(set.contains(ActionSetTwo.foobazz)); } }