blob: 3ed20318758246ebfd369fbb1ea24868d045c6b4 [file] [log] [blame]
/*
* $Id$
* $Revision$ $Date$
*
* ==============================================================================
* 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 wicket.authorization.strategies.role.annotations;
import java.io.Serializable;
import java.lang.reflect.InvocationTargetException;
import junit.framework.TestCase;
import wicket.Page;
import wicket.authorization.UnauthorizedInstantiationException;
import wicket.authorization.strategies.role.IRoleCheckingStrategy;
import wicket.authorization.strategies.role.RoleAuthorizationStrategy;
import wicket.authorization.strategies.role.Roles;
import wicket.util.tester.ITestPageSource;
import wicket.util.tester.WicketTester;
/**
* Test the annotations package of the auth-roles project.
*
* @author Eelco Hillenius
*/
public class AnnotationsRoleTest extends TestCase
{
/**
* Construct.
*/
public AnnotationsRoleTest()
{
super();
}
/**
* Construct.
*
* @param arg0
*/
public AnnotationsRoleTest(String arg0)
{
super(arg0);
}
/**
* @throws Exception
*/
public void testClear() throws Exception
{
WicketTester tester = new WicketTester();
tester.getSecuritySettings().setAuthorizationStrategy(
new RoleAuthorizationStrategy(new UserRolesAuthorizer("FOO")));
tester.startPage(new ITestPageSource()
{
public Page getTestPage()
{
return new NormalPage();
}
});
tester.assertRenderedPage(NormalPage.class);
}
/**
* @throws Exception
*/
public void testAuthorized() throws Exception
{
WicketTester tester = new WicketTester();
tester.getSecuritySettings().setAuthorizationStrategy(
new RoleAuthorizationStrategy(new UserRolesAuthorizer("ADMIN")));
tester.startPage(new ITestPageSource()
{
public Page getTestPage()
{
return new AdminPage();
}
});
tester.assertRenderedPage(AdminPage.class);
}
/**
* @throws Exception
*/
public void testNotAuthorized() throws Exception
{
WicketTester tester = new WicketTester();
tester.getSecuritySettings().setAuthorizationStrategy(
new RoleAuthorizationStrategy(new UserRolesAuthorizer("USER")));
try
{
tester.startPage(new ITestPageSource()
{
public Page getTestPage()
{
return new AdminPage();
}
});
fail("an authorization exception should have been thrown");
}
catch (Exception e)
{
if (!(e.getCause() instanceof InvocationTargetException && ((InvocationTargetException)e
.getCause()).getTargetException() instanceof UnauthorizedInstantiationException))
{
throw e;
}
}
}
/**
* Authorizer class that uses the TS user and it's defined string[] roles.
*/
private static final class UserRolesAuthorizer implements IRoleCheckingStrategy, Serializable
{
private static final long serialVersionUID = 1L;
private final Roles roles;
/**
* Construct.
*
* @param roles
*/
public UserRolesAuthorizer(String roles)
{
this.roles = new Roles(roles);
}
/**
* @see wicket.authorization.strategies.role.IRoleCheckingStrategy#hasAnyRole(Roles)
*/
public boolean hasAnyRole(Roles roles)
{
return this.roles.hasAnyRole(roles);
}
}
}