/** * Licensed to the Austrian Association for Software Tool Integration (AASTI) * under one or more contributor license agreements. See the NOTICE file * distributed with this work for additional information regarding copyright * ownership. The AASTI 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.openengsb.ui.admin.userService; import static org.hamcrest.Matchers.hasItem; import static org.hamcrest.Matchers.not; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import java.util.List; import java.util.ResourceBundle; import org.apache.wicket.Component; import org.apache.wicket.markup.html.form.DropDownChoice; import org.apache.wicket.util.tester.FormTester; import org.junit.Before; import org.junit.Test; import org.openengsb.connector.wicketacl.WicketPermission; import org.openengsb.ui.admin.AbstractUITest; import org.openengsb.ui.admin.index.Index; import org.ops4j.pax.wicket.test.spring.PaxWicketSpringBeanComponentInjector; public class UserServiceTest extends AbstractUITest { protected String localization(Class<?> component, String resourceName) { ResourceBundle resources = ResourceBundle.getBundle(component.getName()); if (resources != null) { return resources.getString(resourceName); } else { return null; } } @Before public void setup() throws Exception { setupTesterWithSpringMockContext(); } @Test public void testLinkAppearsWithCaptionUserManagement() throws Exception { tester.startPage(Index.class); tester.assertContains("User Management"); } private void setupTesterWithSpringMockContext() { tester.getApplication().getComponentInstantiationListeners() .add(new PaxWicketSpringBeanComponentInjector(tester.getApplication(), context)); } @Test public void createUserPageWithUserParam_shouldDisableUsernameField() throws Exception { tester.startPage(UserListPage.class); tester.assertRenderedPage(UserListPage.class); tester.clickLink("lazy:userList:listContainer:form:list:0:item.update"); tester.executeAjaxEvent("lazy:userList:listContainer:form:list:0:item.update", "onclick"); Component usernameField = tester.getComponentFromLastRenderedPage("editModalWindow:content:userEditorContainer:userForm:username"); assertFalse(usernameField.isEnabled()); } @Test public void createUserLink_shouldCreateEmptyEditPage() throws Exception { tester.startPage(UserListPage.class); tester.assertRenderedPage(UserListPage.class); tester.clickLink("lazy:addUser"); tester.executeAjaxEvent("lazy:addUser", "onclick"); Component usernameField = tester.getComponentFromLastRenderedPage("editModalWindow:content:userEditorContainer:userForm:username"); assertTrue(usernameField.isEnabled()); } @Test public void testUserCreation_ShouldWork() { tester.startPage(UserListPage.class); tester.assertRenderedPage(UserListPage.class); tester.clickLink("lazy:addUser"); tester.executeAjaxEvent("lazy:addUser", "onclick"); FormTester formTester = tester.newFormTester("editModalWindow:content:userEditorContainer:userForm"); formTester.setValue("username", "user1"); formTester.setValue("password", "password"); formTester.setValue("passwordVerification", "password"); formTester.submit(); tester.assertNoErrorMessage(); assertThat(userManager.getUserList(), hasItem("user1")); } @Test @SuppressWarnings({ "rawtypes", "unchecked" }) public void testCreatePermission() { tester.startPage(UserListPage.class); tester.clickLink("lazy:addUser"); tester.executeAjaxEvent("lazy:addUser", "onclick"); tester.executeAjaxEvent( "editModalWindow:content:userEditorContainer:userForm:permissionListContainer:createPermission", "onclick"); DropDownChoice<Class> dropdown = (DropDownChoice<Class>) tester.getComponentFromLastRenderedPage( "editModalWindow:content:userEditorContainer:userForm:permissionListContainer:" + "createPermissionContainer:createPermissionContent:container:form:permissionTypeSelect"); List<Class> choices = (List<Class>) dropdown.getChoices(); assertThat(choices, hasItem((Class) WicketPermission.class)); FormTester permissionFormTester = tester.newFormTester( "editModalWindow:content:userEditorContainer:userForm:permissionListContainer:" + "createPermissionContainer:createPermissionContent:container:form"); permissionFormTester.select("permissionTypeSelect", 0); tester.debugComponentTrees(); } @Test public void deleteUser_shouldBeRemovedFromList() throws Exception { tester.startPage(UserListPage.class); tester.clickLink("lazy:userList:listContainer:form:list:0:item.delete"); tester.debugComponentTrees(); tester.executeAjaxEvent("lazy:userList:listContainer:form:list:0:confirm:yes", "onclick"); assertThat(userManager.getUserList(), not(hasItem("test"))); } @Test public void testErrorMessage_shouldReturnUserExists() throws Exception { tester.startPage(UserListPage.class); userManager.createUser("user1"); tester.clickLink("lazy:addUser"); tester.executeAjaxEvent("lazy:addUser", "onclick"); tester.debugComponentTrees(); FormTester formTester = tester.newFormTester("editModalWindow:content:userEditorContainer:userForm"); formTester.setValue("username", "user1"); formTester.setValue("password", "password"); formTester.setValue("passwordVerification", "password"); formTester.submit(); tester.assertErrorMessages(new String[]{ localization(UserListPage.class, "userExistError")}); } @Test public void testShowCreatedUser_ShouldShowAdmin() { tester.startPage(UserListPage.class); tester.assertContains("admin"); } @Test public void testErrorMessage_ShouldReturnWrongSecondPassword() throws Exception { userManager.createUser("user1"); tester.startPage(UserListPage.class); tester.assertRenderedPage(UserListPage.class); tester.clickLink("lazy:userList:listContainer:form:list:0:item.update"); tester.executeAjaxEvent("lazy:userList:listContainer:form:list:0:item.update", "onclick"); FormTester formTester = tester.newFormTester("editModalWindow:content:userEditorContainer:userForm"); formTester.setValue("username", "user1"); formTester.setValue("password", "password"); formTester.setValue("passwordVerification", "password2"); formTester.submit(); tester.assertErrorMessages(new String[]{ localization(UserListPage.class, "passwordError")}); } }