/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.apache.wicket.security.components;
import junit.framework.TestCase;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.Page;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.security.components.markup.html.form.SecureTextField;
import org.apache.wicket.util.tester.WicketTester;
/**
* Tests for {@link SecureComponentHelper}.
*
* @author marrink
*/
public class SecureComponentHelperTest extends TestCase
{
private WicketTester mock;
/**
*
* @see junit.framework.TestCase#setUp()
*/
@Override
protected void setUp()
{
// a wicket application is required to use the page
mock = new WicketTester();
}
/**
*
* @see junit.framework.TestCase#tearDown()
*/
@Override
protected void tearDown()
{
mock.destroy();
}
/**
* Test {@link SecureComponentHelper#containerAlias(MarkupContainer)}.
*/
public void testContainerAlias()
{
TestPage page = new TestPage();
String path = SecureComponentHelper.containerAlias(page);
assertEquals(TestPage.class.getName(), path);
// Fomcomponents are markupcontainers too
path = SecureComponentHelper.containerAlias((MarkupContainer) page.get("txt1"));
assertEquals(TestPage.class.getName() + SecureComponentHelper.PATH_SEPARATOR
+ SecureTextField.class.getName(), path);
path = SecureComponentHelper.containerAlias((MarkupContainer) page.get("lvl2"));
assertEquals(TestPage.class.getName() + SecureComponentHelper.PATH_SEPARATOR
+ TestPanel.class.getName(), path);
path = SecureComponentHelper.containerAlias((MarkupContainer) page.get("lvl2:txt2"));
assertEquals(TestPage.class.getName() + SecureComponentHelper.PATH_SEPARATOR
+ TestPanel.class.getName() + SecureComponentHelper.PATH_SEPARATOR
+ SecureTextField.class.getName(), path);
path = SecureComponentHelper.containerAlias((MarkupContainer) page.get("lvl2:lvl3"));
assertEquals(TestPage.class.getName() + SecureComponentHelper.PATH_SEPARATOR
+ TestPanel.class.getName() + SecureComponentHelper.PATH_SEPARATOR
+ WebMarkupContainer.class.getName(), path);
path = SecureComponentHelper.containerAlias((MarkupContainer) page.get("lvl2:lvl3:txt3"));
assertEquals(TestPage.class.getName() + SecureComponentHelper.PATH_SEPARATOR
+ TestPanel.class.getName() + SecureComponentHelper.PATH_SEPARATOR
+ WebMarkupContainer.class.getName() + SecureComponentHelper.PATH_SEPARATOR
+ SecureTextField.class.getName(), path);
}
/**
* Test {@link SecureComponentHelper#containerAliasses(org.apache.wicket.Component)} .
*/
public void testContainerAliasses()
{
TestPage page = new TestPage();
String[] alias = SecureComponentHelper.containerAliasses(page);
assertEquals(1, alias.length);
assertEquals(TestPage.class.getName(), alias[0]);
alias = SecureComponentHelper.containerAliasses(page.get("txt1"));
assertEquals(3, alias.length);
assertEquals(TestPage.class.getName() + SecureComponentHelper.PATH_SEPARATOR
+ SecureTextField.class.getName(), alias[0]);
assertEquals(TestPage.class.getName(), alias[1]);
assertEquals(SecureTextField.class.getName(), alias[2]);
alias = SecureComponentHelper.containerAliasses(page.get("lvl2"));
assertEquals(3, alias.length);
assertEquals(TestPage.class.getName() + SecureComponentHelper.PATH_SEPARATOR
+ TestPanel.class.getName(), alias[0]);
assertEquals(TestPage.class.getName(), alias[1]);
assertEquals(TestPanel.class.getName(), alias[2]);
alias = SecureComponentHelper.containerAliasses(page.get("lvl2:txt2"));
assertEquals(5, alias.length);
assertEquals(TestPage.class.getName() + SecureComponentHelper.PATH_SEPARATOR
+ TestPanel.class.getName() + SecureComponentHelper.PATH_SEPARATOR
+ SecureTextField.class.getName(), alias[0]);
assertEquals(TestPage.class.getName(), alias[1]);
assertEquals(TestPanel.class.getName() + SecureComponentHelper.PATH_SEPARATOR
+ SecureTextField.class.getName(), alias[2]);
assertEquals(TestPanel.class.getName(), alias[3]);
assertEquals(SecureTextField.class.getName(), alias[4]);
alias = SecureComponentHelper.containerAliasses(page.get("lvl2:lvl3"));
assertEquals(5, alias.length);
assertEquals(TestPage.class.getName() + SecureComponentHelper.PATH_SEPARATOR
+ TestPanel.class.getName() + SecureComponentHelper.PATH_SEPARATOR
+ WebMarkupContainer.class.getName(), alias[0]);
assertEquals(TestPage.class.getName(), alias[1]);
assertEquals(TestPanel.class.getName() + SecureComponentHelper.PATH_SEPARATOR
+ WebMarkupContainer.class.getName(), alias[2]);
assertEquals(TestPanel.class.getName(), alias[3]);
assertEquals(WebMarkupContainer.class.getName(), alias[4]);
alias = SecureComponentHelper.containerAliasses(page.get("lvl2:lvl3:txt3"));
assertEquals(7, alias.length);
assertEquals(TestPage.class.getName() + SecureComponentHelper.PATH_SEPARATOR
+ TestPanel.class.getName() + SecureComponentHelper.PATH_SEPARATOR
+ WebMarkupContainer.class.getName() + SecureComponentHelper.PATH_SEPARATOR
+ SecureTextField.class.getName(), alias[0]);
assertEquals(TestPage.class.getName(), alias[1]);
assertEquals(TestPanel.class.getName() + SecureComponentHelper.PATH_SEPARATOR
+ WebMarkupContainer.class.getName() + SecureComponentHelper.PATH_SEPARATOR
+ SecureTextField.class.getName(), alias[2]);
assertEquals(TestPanel.class.getName(), alias[3]);
assertEquals(WebMarkupContainer.class.getName() + SecureComponentHelper.PATH_SEPARATOR
+ SecureTextField.class.getName(), alias[4]);
assertEquals(WebMarkupContainer.class.getName(), alias[5]);
assertEquals(SecureTextField.class.getName(), alias[6]);
// TestPanel:WebMarkupContainer is also a valid alias
}
/**
* Test {@link SecureComponentHelper#alias(org.apache.wicket.Component)}.
*/
public void testAlias()
{
TestPage page = new TestPage();
String alias = SecureComponentHelper.alias(page);
assertEquals(TestPage.class.getName(), alias);
alias = SecureComponentHelper.alias(page.get("txt1"));
assertEquals(TestPage.class.getName() + ":txt1", alias);
alias = SecureComponentHelper.alias(page.get("lvl2"));
assertEquals(TestPage.class.getName() + ":lvl2", alias);
alias = SecureComponentHelper.alias(page.get("lvl2:txt2"));
assertEquals(TestPage.class.getName() + ":lvl2:txt2", alias);
alias = SecureComponentHelper.alias(page.get("lvl2:lvl3"));
assertEquals(TestPage.class.getName() + ":lvl2:lvl3", alias);
alias = SecureComponentHelper.alias(page.get("lvl2:lvl3:txt3"));
assertEquals(TestPage.class.getName() + ":lvl2:lvl3:txt3", alias);
}
private static final class TestPage extends Page
{
private static final long serialVersionUID = 1L;
/**
* Construct.
*/
public TestPage()
{
super();
add(new SecureTextField<String>("txt1"));
add(new TestPanel("lvl2"));
}
}
private static final class TestPanel extends Panel
{
private static final long serialVersionUID = 1L;
/**
* Construct.
*
* @param id
*/
public TestPanel(String id)
{
super(id);
add(new SecureTextField<String>("txt2"));
add(new WebMarkupContainer("lvl3").add(new SecureTextField<String>("txt3")));
}
}
}