| /* |
| * Copyright 2005-2008 Jeremy Haile |
| * |
| * 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.jsecurity.authz.permission; |
| |
| import static org.junit.Assert.assertFalse; |
| import static org.junit.Assert.assertTrue; |
| import org.junit.Test; |
| |
| /** |
| * @author Jeremy Haile |
| * @since 0.9 |
| */ |
| public class WildcardPermissionTest { |
| |
| @Test(expected=IllegalArgumentException.class) |
| public void testNull() { |
| new WildcardPermission( null ); |
| } |
| |
| @Test(expected=IllegalArgumentException.class) |
| public void testEmpty() { |
| new WildcardPermission( "" ); |
| } |
| |
| @Test(expected=IllegalArgumentException.class) |
| public void testBlank() { |
| new WildcardPermission( " " ); |
| } |
| |
| @Test(expected=IllegalArgumentException.class) |
| public void testOnlyDelimiters() { |
| new WildcardPermission( "::,,::,:" ); |
| } |
| |
| @Test |
| public void testNamed() { |
| WildcardPermission p1, p2; |
| |
| // Case insensitive, same |
| p1 = new WildcardPermission( "something" ); |
| p2 = new WildcardPermission( "something" ); |
| assertTrue( p1.implies( p2 ) ); |
| assertTrue( p2.implies( p1 ) ); |
| |
| // Case insensitive, different case |
| p1 = new WildcardPermission( "something" ); |
| p2 = new WildcardPermission( "SOMETHING" ); |
| assertTrue( p1.implies( p2 ) ); |
| assertTrue( p2.implies( p1 ) ); |
| |
| // Case insensitive, different word |
| p1 = new WildcardPermission( "something" ); |
| p2 = new WildcardPermission( "else" ); |
| assertFalse( p1.implies( p2 ) ); |
| assertFalse( p2.implies( p1 ) ); |
| |
| // Case sensitive same |
| p1 = new WildcardPermission( "BLAHBLAH", false ); |
| p2 = new WildcardPermission( "BLAHBLAH", false ); |
| assertTrue( p1.implies( p2 ) ); |
| assertTrue( p2.implies( p1 ) ); |
| |
| // Case sensitive, different case |
| p1 = new WildcardPermission( "BLAHBLAH", false ); |
| p2 = new WildcardPermission( "bLAHBLAH", false ); |
| assertTrue( p1.implies( p2 ) ); |
| assertTrue( p2.implies( p1 ) ); |
| |
| // Case sensitive, different word |
| p1 = new WildcardPermission( "BLAHBLAH", false ); |
| p2 = new WildcardPermission( "whatwhat", false ); |
| assertFalse( p1.implies( p2 ) ); |
| assertFalse( p2.implies( p1 ) ); |
| |
| } |
| |
| @Test |
| public void testLists() { |
| WildcardPermission p1, p2, p3; |
| |
| p1 = new WildcardPermission( "one,two" ); |
| p2 = new WildcardPermission( "one" ); |
| assertTrue( p1.implies( p2 ) ); |
| assertFalse( p2.implies( p1 ) ); |
| |
| p1 = new WildcardPermission( "one,two,three" ); |
| p2 = new WildcardPermission( "one,three" ); |
| assertTrue( p1.implies( p2 ) ); |
| assertFalse( p2.implies( p1 ) ); |
| |
| p1 = new WildcardPermission( "one,two:one,two,three" ); |
| p2 = new WildcardPermission( "one:three" ); |
| p3 = new WildcardPermission( "one:two,three" ); |
| assertTrue( p1.implies( p2 ) ); |
| assertFalse( p2.implies( p1 ) ); |
| assertTrue( p1.implies( p3 ) ); |
| assertFalse( p2.implies( p3 ) ); |
| assertTrue( p3.implies( p2 ) ); |
| |
| p1 = new WildcardPermission( "one,two,three:one,two,three:one,two" ); |
| p2 = new WildcardPermission( "one:three:two" ); |
| assertTrue( p1.implies( p2 ) ); |
| assertFalse( p2.implies( p1 ) ); |
| |
| p1 = new WildcardPermission( "one" ); |
| p2 = new WildcardPermission( "one:two,three,four" ); |
| p3 = new WildcardPermission( "one:two,three,four:five:six:seven" ); |
| assertTrue( p1.implies( p2 ) ); |
| assertTrue( p1.implies( p3 ) ); |
| assertFalse( p2.implies( p1 ) ); |
| assertFalse( p3.implies( p1 ) ); |
| assertTrue( p2.implies( p3 ) ); |
| |
| } |
| |
| @Test |
| public void testWildcards() { |
| WildcardPermission p1, p2, p3, p4, p5,p6,p7, p8; |
| |
| p1 = new WildcardPermission( "*" ); |
| p2 = new WildcardPermission( "one" ); |
| p3 = new WildcardPermission( "one:two" ); |
| p4 = new WildcardPermission( "one,two:three,four" ); |
| p5 = new WildcardPermission( "one,two:three,four,five:six:seven,eight" ); |
| assertTrue( p1.implies( p2 ) ); |
| assertTrue( p1.implies( p3 ) ); |
| assertTrue( p1.implies( p4 ) ); |
| assertTrue( p1.implies( p5 ) ); |
| |
| p1 = new WildcardPermission( "newsletter:*" ); |
| p2 = new WildcardPermission( "newsletter:read" ); |
| p3 = new WildcardPermission( "newsletter:read,write" ); |
| p4 = new WildcardPermission( "newsletter:*" ); |
| p5 = new WildcardPermission( "newsletter:*:*" ); |
| p6 = new WildcardPermission( "newsletter:*:read" ); |
| p7 = new WildcardPermission( "newsletter:write:*" ); |
| p8 = new WildcardPermission( "newsletter:read,write:*" ); |
| assertTrue( p1.implies( p2 ) ); |
| assertTrue( p1.implies( p3 ) ); |
| assertTrue( p1.implies( p4 ) ); |
| assertTrue( p1.implies( p5 ) ); |
| assertTrue( p1.implies( p6 ) ); |
| assertTrue( p1.implies( p7 ) ); |
| assertTrue( p1.implies( p8 ) ); |
| |
| |
| p1 = new WildcardPermission( "newsletter:*:*" ); |
| assertTrue( p1.implies( p2 ) ); |
| assertTrue( p1.implies( p3 ) ); |
| assertTrue( p1.implies( p4 ) ); |
| assertTrue( p1.implies( p5 ) ); |
| assertTrue( p1.implies( p6 ) ); |
| assertTrue( p1.implies( p7 ) ); |
| assertTrue( p1.implies( p8 ) ); |
| |
| p1 = new WildcardPermission( "newsletter:*:*:*" ); |
| assertTrue( p1.implies( p2 ) ); |
| assertTrue( p1.implies( p3 ) ); |
| assertTrue( p1.implies( p4 ) ); |
| assertTrue( p1.implies( p5 ) ); |
| assertTrue( p1.implies( p6 ) ); |
| assertTrue( p1.implies( p7 ) ); |
| assertTrue( p1.implies( p8 ) ); |
| |
| p1 = new WildcardPermission( "newsletter:*:read" ); |
| p2 = new WildcardPermission( "newsletter:123:read" ); |
| p3 = new WildcardPermission( "newsletter:123,456:read,write" ); |
| p4 = new WildcardPermission( "newsletter:read" ); |
| p5 = new WildcardPermission( "newsletter:read,write" ); |
| p6 = new WildcardPermission( "newsletter:123:read:write" ); |
| assertTrue( p1.implies( p2 ) ); |
| assertFalse( p1.implies( p3 ) ); |
| assertFalse( p1.implies( p4 ) ); |
| assertFalse( p1.implies( p5 ) ); |
| assertTrue( p1.implies( p6 ) ); |
| |
| p1 = new WildcardPermission( "newsletter:*:read:*" ); |
| assertTrue( p1.implies( p2 ) ); |
| assertTrue( p1.implies( p6 ) ); |
| |
| } |
| |
| |
| |
| } |