[KARAF-1772] Use wicket test utils to cleanup integration tests
Signed-off-by: Andreas Pieber <anpieber@gmail.com>
git-svn-id: https://svn.apache.org/repos/asf/karaf/webconsole/trunk@1378076 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/core/pom.xml b/core/pom.xml
index f6f07bc..01129c1 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -46,7 +46,6 @@
<artifactId>org.ops4j.pax.wicket.service</artifactId>
<version>${ops4j.paxwicket.version}</version>
</dependency>
-
<dependency>
<groupId>org.apache.karaf.jaas</groupId>
<artifactId>org.apache.karaf.jaas.modules</artifactId>
@@ -67,6 +66,11 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.ops4j.pax.wicket</groupId>
+ <artifactId>org.ops4j.pax.wicket.test</artifactId>
+ <version>${ops4j.paxwicket.version}</version>
+ </dependency>
+ <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
diff --git a/core/src/test/java/org/apache/karaf/webconsole/core/BasePageTest.java b/core/src/test/java/org/apache/karaf/webconsole/core/BasePageTest.java
index 065afb7..9c657cb 100644
--- a/core/src/test/java/org/apache/karaf/webconsole/core/BasePageTest.java
+++ b/core/src/test/java/org/apache/karaf/webconsole/core/BasePageTest.java
@@ -60,12 +60,8 @@
replay(brandProvider);
- Map<String, Object> values = new HashMap<String, Object>();
- values.put("brandProvider", brandProvider);
+ injector.registerBean("brandProvider", brandProvider);
- injector.setValues(values);
-
- WicketTester tester = new WicketTester(application);
tester.startPage(BasePage.class);
tester.assertVisible("topPanel:" + imageId);
diff --git a/core/src/test/java/org/apache/karaf/webconsole/core/LoginTest.java b/core/src/test/java/org/apache/karaf/webconsole/core/LoginTest.java
index 9815ce1..12dc168 100644
--- a/core/src/test/java/org/apache/karaf/webconsole/core/LoginTest.java
+++ b/core/src/test/java/org/apache/karaf/webconsole/core/LoginTest.java
@@ -36,11 +36,10 @@
@Test
public void testSuccessLogin() throws Exception {
- injector.getValues().put("widgets", new ArrayList<WidgetProvider>());
+ injector.registerBean("widgets", new ArrayList<WidgetProvider>());
- WicketTester tester = new WicketTester(application);
tester.startPage(LoginPage.class);
- //tester.debugComponentTrees();
+
FormTester form = tester.newFormTester("signIn:signInForm");
form.setValue("username", "rootadmin");
@@ -53,7 +52,6 @@
@Test(expected = UnauthorizedInstantiationException.class)
public void testWrongRoleLogin() throws Exception {
- WicketTester tester = new WicketTester(application);
tester.startPage(LoginPage.class);
FormTester form = tester.newFormTester("signIn:signInForm");
diff --git a/core/src/test/java/org/apache/karaf/webconsole/core/TestInjector.java b/core/src/test/java/org/apache/karaf/webconsole/core/TestInjector.java
deleted file mode 100644
index 9d49d6a..0000000
--- a/core/src/test/java/org/apache/karaf/webconsole/core/TestInjector.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * 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.karaf.webconsole.core;
-
-import java.lang.reflect.Field;
-import java.util.Map;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.application.IComponentInstantiationListener;
-import org.ops4j.pax.wicket.api.PaxWicketBean;
-import org.ops4j.pax.wicket.internal.injection.AbstractPaxWicketInjector;
-import org.ops4j.pax.wicket.util.proxy.LazyInitProxyFactory;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * {@link IComponentInstantiationListener} which injects given values to fields
- * annotated with {@link PaxWicketBean}.
- */
-public class TestInjector extends AbstractPaxWicketInjector implements IComponentInstantiationListener {
-
- /**
- * Logger.
- */
- private Logger logger = LoggerFactory.getLogger(TestInjector.class);
-
- /**
- * Values to inject.
- */
- private Map<String, Object> values;
-
- public TestInjector(Map<String, Object> values) {
- this.values = values;
- }
-
- /**
- * Set values to be injected.
- */
- public void setValues(Map<String, Object> values) {
- this.values = values;
- }
-
- /**
- * Gets values to inject.
- *
- * @return Injection values
- */
- public Map<String, Object> getValues() {
- return values;
- }
-
- /**
- * {@inheritDoc}
- */
- public void onInstantiation(Component component) {
- for (Field field : getFields(component.getClass())) {
- // iterate over fields and check if there is values to inject
- String name = field.getName();
- Class<?> type = field.getType();
-
- PaxWicketBean wicketBean = field.getAnnotation(PaxWicketBean.class);
- if (wicketBean != null) {
- name = wicketBean.name();
- }
-
- if (values.containsKey(name)) {
- // we have value..
- final Object value = values.get(name);
-
- // create instance proxy, just like pax-wicket does
- if (type.isAssignableFrom(value.getClass())){
- logger.debug("Setting value {} for field {}.{}", new Object[] {value, field.getDeclaringClass().getName(), name});
- Object createProxy = LazyInitProxyFactory.createProxy(field.getType(), new TestTargetLocator(value));
- setField(component, field, createProxy);
- } else {
- logger.error("Type mismath for field {}.{}. Expected {} but {} given", new Object[] {
- field.getDeclaringClass().getName(), name, field.getType().getName(), value.getClass().getName()
- });
- }
- } else {
- logger.warn("No value provided for field {}.{}", field.getDeclaringClass().getName(), name);
- }
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public void inject(Object toInject, Class<?> toHandle) {
- throw new UnsupportedOperationException("inject operation should never be executed");
- }
-
-}
\ No newline at end of file
diff --git a/core/src/test/java/org/apache/karaf/webconsole/core/TestTargetLocator.java b/core/src/test/java/org/apache/karaf/webconsole/core/TestTargetLocator.java
deleted file mode 100644
index d478342..0000000
--- a/core/src/test/java/org/apache/karaf/webconsole/core/TestTargetLocator.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.karaf.webconsole.core;
-
-import org.ops4j.pax.wicket.util.proxy.IProxyTargetLocator;
-
-/**
- * Test target locator for test injections.
- */
-@SuppressWarnings("serial")
-public class TestTargetLocator implements IProxyTargetLocator {
-
- private Object value;
-
- public TestTargetLocator(Object value) {
- this.value = value;
- }
-
- public Object locateProxyTarget() {
- return value;
- }
-
-}
\ No newline at end of file
diff --git a/core/src/test/java/org/apache/karaf/webconsole/core/WebConsoleTest.java b/core/src/test/java/org/apache/karaf/webconsole/core/WebConsoleTest.java
index 97147b2..e8db02a 100644
--- a/core/src/test/java/org/apache/karaf/webconsole/core/WebConsoleTest.java
+++ b/core/src/test/java/org/apache/karaf/webconsole/core/WebConsoleTest.java
@@ -17,11 +17,9 @@
package org.apache.karaf.webconsole.core;
import static org.easymock.EasyMock.anyObject;
+import static org.ops4j.pax.wicket.test.spring.SimplifiedPaxWicketInjector.registerBeanInjector;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import org.apache.karaf.webconsole.core.brand.DefaultBrandProvider;
import org.apache.karaf.webconsole.core.internal.WebConsoleApplication;
@@ -29,24 +27,22 @@
import org.apache.karaf.webconsole.core.security.KarafJaasWebSession;
import org.apache.wicket.Page;
import org.apache.wicket.authroles.authentication.AuthenticatedWebSession;
+import org.apache.wicket.extensions.markup.html.tabs.ITab;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.util.tester.WicketTester;
import org.junit.Before;
+import org.ops4j.pax.wicket.internal.PaxWicketApplicationFactory;
+import org.ops4j.pax.wicket.test.spring.SimplifiedPaxWicketInjector;
/**
* Base class for webconsole tests.
*/
public class WebConsoleTest {
- /**
- * Application instance.
- */
protected WebApplication application;
-
- /**
- * Test injector.
- */
- protected TestInjector injector;
+ protected WicketTester tester;
+ protected SimplifiedPaxWicketInjector injector;
public WebConsoleTest() {
super();
@@ -60,13 +56,12 @@
}
};
- // default configurations values.
- Map<String, Object> values = new HashMap<String, Object>();
- values.put("brandProvider", new DefaultBrandProvider());
- values.put("preferencesService", new JdkPreferencesService());
+ tester = new WicketTester(application);
- injector = new TestInjector(values);
- application.getComponentInstantiationListeners().add(injector);
+ injector = registerBeanInjector(tester);
+ injector.registerBean("brandProvider", new DefaultBrandProvider());
+ injector.registerBean("preferencesService", new JdkPreferencesService());
+ injector.registerBean("tabs", new ArrayList<ITab>());
}
protected Class<? extends AuthenticatedWebSession> getWebSessionClass() {
diff --git a/core/src/test/java/org/apache/karaf/webconsole/core/dashboard/DashboardPageTest.java b/core/src/test/java/org/apache/karaf/webconsole/core/dashboard/DashboardPageTest.java
index c6c1540..9bddc09 100644
--- a/core/src/test/java/org/apache/karaf/webconsole/core/dashboard/DashboardPageTest.java
+++ b/core/src/test/java/org/apache/karaf/webconsole/core/dashboard/DashboardPageTest.java
@@ -55,13 +55,10 @@
ArrayList<WidgetProvider> providers = new ArrayList<WidgetProvider>();
providers.add(new TestWidgetProvider());
- values.put("widgets", providers);
- values.put("brandProvider", new DefaultBrandProvider());
- values.put("preferencesService", new JdkPreferencesService());
+ injector.registerBean("widgets", providers);
+ injector.registerBean("brandProvider", new DefaultBrandProvider());
+ injector.registerBean("preferencesService", new JdkPreferencesService());
- injector.setValues(values);
-
- WicketTester tester = new WicketTester(application);
tester.startPage(DashboardPage.class);
tester.assertRenderedPage(DashboardPage.class);
diff --git a/core/src/test/java/org/apache/karaf/webconsole/core/page/SecuredPageTest.java b/core/src/test/java/org/apache/karaf/webconsole/core/page/SecuredPageTest.java
index 6afd917..076df23 100644
--- a/core/src/test/java/org/apache/karaf/webconsole/core/page/SecuredPageTest.java
+++ b/core/src/test/java/org/apache/karaf/webconsole/core/page/SecuredPageTest.java
@@ -35,8 +35,6 @@
*/
@Test
public void shouldRenderLogoutLink() {
- WicketTester tester = new WicketTester(application);
-
tester.startPage(SinglePage.class);
tester.debugComponentTrees();
tester.clickLink("topPanel:logoutLink");
diff --git a/core/src/test/java/org/apache/karaf/webconsole/core/page/SidebarPageTest.java b/core/src/test/java/org/apache/karaf/webconsole/core/page/SidebarPageTest.java
index 963a500..fb7bd8d 100644
--- a/core/src/test/java/org/apache/karaf/webconsole/core/page/SidebarPageTest.java
+++ b/core/src/test/java/org/apache/karaf/webconsole/core/page/SidebarPageTest.java
@@ -45,8 +45,6 @@
@Test
public void testSidebarWithoutSubItems() {
- WicketTester tester = new WicketTester(application);
-
SidebarProvider provider = createMock(SidebarProvider.class);
expect(provider.getMasterPageLink(anyString(), anyString())).andAnswer(new LinkAnswer("Test link", DashboardPage.class));
expect(provider.getItems(anyString(), anyString())).andReturn(emptyLinkList());
@@ -64,8 +62,6 @@
@Test(expected = MarkupException.class)
public void testNoSidebarProvider() {
- WicketTester tester = new WicketTester(application);
-
tester.startPage(SidebarPage.class);
}
diff --git a/core/src/test/java/org/apache/karaf/webconsole/core/page/SinglePageTest.java b/core/src/test/java/org/apache/karaf/webconsole/core/page/SinglePageTest.java
index b0158fd..53c8340 100644
--- a/core/src/test/java/org/apache/karaf/webconsole/core/page/SinglePageTest.java
+++ b/core/src/test/java/org/apache/karaf/webconsole/core/page/SinglePageTest.java
@@ -71,19 +71,17 @@
expect(mock.getItems(anyString(), anyString())).andReturn(emptyLinkList());
tabs.add(mock);
- values.put("tabs", tabs);
- injector.setValues(values);
+ injector.registerBean("tabs", tabs);
replay(mock);
- WicketTester tester = new WicketTester(application);
tester.startPage(SinglePageExt.class);
tester.debugComponentTrees();
tester.clickLink("topPanel:tabs:0:moduleLink");
- assertTabs(tester, tabs);
- assertTabLink(tester, 0, "test", SinglePageExt.class);
+ assertTabs(tabs);
+ assertTabLink(0, "test", SinglePageExt.class);
verify(mock);
@@ -109,16 +107,14 @@
expect(mock.getModuleLink(anyString(), anyString())).andAnswer(new LinkAnswer("test", BasePage.class));
tabs.add(mock);
- values.put("tabs", tabs);
- injector.setValues(values);
+ injector.registerBean("tabs", tabs);
replay(mock);
- WicketTester tester = new WicketTester(application);
tester.startPage(SecuredPage.class);
- assertTabs(tester, tabs);
- assertTabLink(tester, 0, "test", BasePage.class, answer.getPageLinks());
+ assertTabs(tabs);
+ assertTabLink(0, "test", BasePage.class, answer.getPageLinks());
tester.assertLabel("topPanel:tabs:0:moduleLinks:0:link:label", "A1");
tester.assertLabel("topPanel:tabs:0:moduleLinks:1:link:label", "B1");
@@ -163,32 +159,30 @@
replay(mock);
tabs.add(mock);
- values.put("tabs", tabs);
- injector.setValues(values);
+ injector.registerBean("tabs", tabs);
- WicketTester tester = new WicketTester(application);
tester.startPage(SecuredPage.class);
- assertTabs(tester, tabs);
- assertTabLink(tester, 0, "test1", BasePage.class);
- assertTabLink(tester, 1, "test2", SecuredPage.class);
- assertTabLink(tester, 2, "test3", SinglePage.class);
- assertTabLink(tester, 3, "test4", SidebarPage.class);
+ assertTabs(tabs);
+ assertTabLink(0, "test1", BasePage.class);
+ assertTabLink(1, "test2", SecuredPage.class);
+ assertTabLink(2, "test3", SinglePage.class);
+ assertTabLink(3, "test4", SidebarPage.class);
verify(mock);
}
// additional asserts
- private void assertTabs(WicketTester tester, List<ConsoleTabProvider> tabs) {
+ private void assertTabs(List<ConsoleTabProvider> tabs) {
tester.assertListView("topPanel:tabs", tabs);
}
- private void assertTabLink(WicketTester tester, int position, String label, Class<? extends WebPage> page) {
- assertTabLink(tester, position, label, page, Collections.<Link<Page>>emptyList());
+ private void assertTabLink(int position, String label, Class<? extends WebPage> page) {
+ assertTabLink(position, label, page, Collections.<Link<Page>>emptyList());
}
- private void assertTabLink(WicketTester tester, int position, String label, Class<? extends WebPage> page, List<Link<Page>> children) {
+ private void assertTabLink(int position, String label, Class<? extends WebPage> page, List<Link<Page>> children) {
tester.assertLabel("topPanel:tabs:" + position + ":moduleLink:moduleLabel", label);
tester.assertBookmarkablePageLink("topPanel:tabs:" + position + ":moduleLink", page, new PageParameters());
if (!children.isEmpty()) {
@@ -203,8 +197,10 @@
// Marker interface for tests, normally serialization is controlled by paxwicket
// as ConsoleTabProviders are OSGi services.
- interface SerializableConsoleTabProvider extends Serializable, ConsoleTabProvider {}
+ interface SerializableConsoleTabProvider extends Serializable, ConsoleTabProvider {
+ }
@SuppressWarnings("serial")
- public static class SinglePageExt extends SinglePage {}
+ public static class SinglePageExt extends SinglePage {
+ }
}