Java tutorial
/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.itest.client; import java.io.IOException; import org.apache.commons.codec.digest.DigestUtils; import org.jdom.JDOMException; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.mock.web.MockHttpServletRequest; import com.enonic.cms.api.client.model.ChangeUserPasswordParams; import com.enonic.cms.api.plugin.ext.userstore.UserStoreConfigField; import com.enonic.cms.core.client.InternalClient; import com.enonic.cms.core.security.PortalSecurityHolder; import com.enonic.cms.core.security.user.StoreNewUserCommand; import com.enonic.cms.core.security.user.UserEntity; import com.enonic.cms.core.security.user.UserKey; import com.enonic.cms.core.security.user.UserType; import com.enonic.cms.core.security.userstore.StoreNewUserStoreCommand; import com.enonic.cms.core.security.userstore.UserStoreKey; import com.enonic.cms.core.security.userstore.UserStoreService; import com.enonic.cms.api.plugin.ext.userstore.UserStoreConfig; import com.enonic.cms.core.servlet.ServletRequestAccessor; import com.enonic.cms.api.plugin.ext.userstore.UserFieldType; import com.enonic.cms.api.plugin.ext.userstore.UserFields; import com.enonic.cms.itest.AbstractSpringTest; import com.enonic.cms.itest.util.DomainFixture; import static junit.framework.Assert.assertEquals; public class InternalClientImpl_changeUserPasswordTest extends AbstractSpringTest { @Autowired private DomainFixture fixture; @Autowired private UserStoreService userStoreService; @Autowired @Qualifier("localClient") private InternalClient internalClient; @Before public void before() throws IOException, JDOMException { fixture.initSystemData(); MockHttpServletRequest request = new MockHttpServletRequest(); request.setRemoteAddr("127.0.0.1"); ServletRequestAccessor.setRequest(request); PortalSecurityHolder.setAnonUser(fixture.findUserByName("anonymous").getKey()); } @After public void after() { PortalSecurityHolder.setLoggedInUser(null); } @Test public void change_password() { UserStoreConfig userStoreConfig = new UserStoreConfig(); userStoreConfig.addUserFieldConfig(createUserStoreUserFieldConfig(UserFieldType.FIRST_NAME, "required")); userStoreConfig.addUserFieldConfig(createUserStoreUserFieldConfig(UserFieldType.LAST_NAME, "required")); userStoreConfig.addUserFieldConfig(createUserStoreUserFieldConfig(UserFieldType.INITIALS, "required")); createLocalUserStore("myLocalStore", true, userStoreConfig); fixture.flushAndClearHibernateSession(); UserFields userFields = new UserFields(); userFields.setFirstName("First name"); userFields.setLastName("Last name"); userFields.setInitials("INI"); createNormalUser("testuser", "myLocalStore", userFields); // verify UserEntity resultUser = fixture.findUserByName("testuser"); assertEquals("INI", resultUser.getUserFields().getInitials()); assertEquals(DigestUtils.shaHex("password"), resultUser.getPassword()); loginPortalUser("testuser"); // exercise ChangeUserPasswordParams params = new ChangeUserPasswordParams(); params.userstore = "myLocalStore"; params.username = "testuser"; params.password = "changed"; internalClient.changeUserPassword(params); // verify resultUser = fixture.findUserByName("testuser"); assertEquals(DigestUtils.shaHex("changed"), resultUser.getPassword()); } private UserStoreConfigField createUserStoreUserFieldConfig(UserFieldType type, String properties) { UserStoreConfigField fieldConfig = new UserStoreConfigField(type); fieldConfig.setRemote(properties.contains("remote")); fieldConfig.setReadOnly(properties.contains("read-only")); fieldConfig.setRequired(properties.contains("required")); fieldConfig.setIso(properties.contains("iso")); return fieldConfig; } private void loginPortalUser(String userName) { PortalSecurityHolder.setImpersonatedUser(fixture.findUserByName(userName).getKey()); PortalSecurityHolder.setLoggedInUser(fixture.findUserByName(userName).getKey()); } private UserStoreKey createLocalUserStore(String name, boolean defaultStore, UserStoreConfig config) { StoreNewUserStoreCommand command = new StoreNewUserStoreCommand(); command.setStorer(fixture.findUserByName("admin").getKey()); command.setName(name); command.setDefaultStore(defaultStore); command.setConfig(config); return userStoreService.storeNewUserStore(command); } private UserKey createNormalUser(String userName, String userStoreName, UserFields userFields) { StoreNewUserCommand command = new StoreNewUserCommand(); command.setStorer(fixture.findUserByName("admin").getKey()); command.setUsername(userName); command.setUserStoreKey(fixture.findUserStoreByName(userStoreName).getKey()); command.setAllowAnyUserAccess(true); command.setEmail(userName + "@example.com"); command.setPassword("password"); command.setType(UserType.NORMAL); command.setDisplayName(userName); command.setUserFields(userFields); return userStoreService.storeNewUser(command); } }