/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.security.userstore.connector.config; import java.util.Map; import java.util.Properties; import org.junit.Test; import com.enonic.cms.core.config.ConfigProperties; import com.enonic.cms.core.security.userstore.config.InvalidUserStoreConfigException; import static org.junit.Assert.*; public class UserStoreConnectorConfigLoaderTest { @Test public void user_policy_all() { ConfigProperties properties = new ConfigProperties(); properties.setProperty( "cms.userstore.connector.myConnector.userPolicy", "all" ); UserStoreConnectorConfigLoader loader = new UserStoreConnectorConfigLoader(); loader.setProperties( properties ); UserStoreConnectorConfig config = loader.getUserStoreConnectorConfig( "myConnector" ); assertEquals( true, config.canCreateUser() ); assertEquals( true, config.canUpdateUser() ); assertEquals( true, config.canUpdateUserPassword() ); assertEquals( true, config.canDeleteUser() ); } @Test public void user_policy_blank() { ConfigProperties properties = new ConfigProperties(); properties.setProperty( "cms.userstore.connector.myConnector.userPolicy", "" ); UserStoreConnectorConfigLoader loader = new UserStoreConnectorConfigLoader(); loader.setProperties( properties ); UserStoreConnectorConfig config = loader.getUserStoreConnectorConfig( "myConnector" ); assertEquals( false, config.canCreateUser() ); assertEquals( false, config.canUpdateUser() ); assertEquals( false, config.canUpdateUserPassword() ); assertEquals( false, config.canDeleteUser() ); } @Test public void user_policy_create() { ConfigProperties properties = new ConfigProperties(); properties.setProperty( "cms.userstore.connector.myConnector.userPolicy", "create" ); UserStoreConnectorConfigLoader loader = new UserStoreConnectorConfigLoader(); loader.setProperties( properties ); UserStoreConnectorConfig config = loader.getUserStoreConnectorConfig( "myConnector" ); assertEquals( true, config.canCreateUser() ); assertEquals( false, config.canUpdateUser() ); assertEquals( false, config.canUpdateUserPassword() ); assertEquals( false, config.canDeleteUser() ); } @Test public void user_policy_update() { ConfigProperties properties = new ConfigProperties(); properties.setProperty( "cms.userstore.connector.myConnector.userPolicy", "update" ); UserStoreConnectorConfigLoader loader = new UserStoreConnectorConfigLoader(); loader.setProperties( properties ); UserStoreConnectorConfig config = loader.getUserStoreConnectorConfig( "myConnector" ); assertEquals( false, config.canCreateUser() ); assertEquals( true, config.canUpdateUser() ); assertEquals( false, config.canUpdateUserPassword() ); assertEquals( false, config.canDeleteUser() ); } @Test public void user_policy_delete() { ConfigProperties properties = new ConfigProperties(); properties.setProperty( "cms.userstore.connector.myConnector.userPolicy", "delete" ); UserStoreConnectorConfigLoader loader = new UserStoreConnectorConfigLoader(); loader.setProperties( properties ); UserStoreConnectorConfig config = loader.getUserStoreConnectorConfig( "myConnector" ); assertEquals( false, config.canCreateUser() ); assertEquals( false, config.canUpdateUser() ); assertEquals( false, config.canUpdateUserPassword() ); assertEquals( true, config.canDeleteUser() ); } @Test public void user_policy_all_explicit() { ConfigProperties properties = new ConfigProperties(); properties.setProperty( "cms.userstore.connector.myConnector.userPolicy", "create,update,delete,updatePassword" ); UserStoreConnectorConfigLoader loader = new UserStoreConnectorConfigLoader(); loader.setProperties( properties ); UserStoreConnectorConfig config = loader.getUserStoreConnectorConfig( "myConnector" ); assertEquals( true, config.canCreateUser() ); assertEquals( true, config.canUpdateUser() ); assertEquals( true, config.canUpdateUserPassword() ); assertEquals( true, config.canDeleteUser() ); } @Test public void group_policy_none() { ConfigProperties properties = new ConfigProperties(); properties.setProperty( "cms.userstore.connector.myConnector.groupPolicy", "none" ); UserStoreConnectorConfigLoader loader = new UserStoreConnectorConfigLoader(); loader.setProperties( properties ); UserStoreConnectorConfig config = loader.getUserStoreConnectorConfig( "myConnector" ); assertEquals( false, config.canReadGroup() ); assertEquals( false, config.canCreateGroup() ); assertEquals( false, config.canUpdateGroup() ); assertEquals( false, config.canDeleteGroup() ); assertEquals( false, config.groupsStoredLocal() ); } @Test public void group_policy_local() { ConfigProperties properties = new ConfigProperties(); properties.setProperty( "cms.userstore.connector.myConnector.groupPolicy", "local" ); UserStoreConnectorConfigLoader loader = new UserStoreConnectorConfigLoader(); loader.setProperties( properties ); UserStoreConnectorConfig config = loader.getUserStoreConnectorConfig( "myConnector" ); assertEquals( false, config.canReadGroup() ); assertEquals( true, config.canCreateGroup() ); assertEquals( true, config.canUpdateGroup() ); assertEquals( true, config.canDeleteGroup() ); assertEquals( true, config.groupsStoredLocal() ); } @Test public void group_policy_all_explicit() { ConfigProperties properties = new ConfigProperties(); properties.setProperty( "cms.userstore.connector.myConnector.groupPolicy", "read,create,update,delete" ); UserStoreConnectorConfigLoader loader = new UserStoreConnectorConfigLoader(); loader.setProperties( properties ); UserStoreConnectorConfig config = loader.getUserStoreConnectorConfig( "myConnector" ); assertEquals( true, config.canReadGroup() ); assertEquals( true, config.canCreateGroup() ); assertEquals( true, config.canUpdateGroup() ); assertEquals( true, config.canDeleteGroup() ); } @Test public void group_policy_all() { ConfigProperties properties = new ConfigProperties(); properties.setProperty( "cms.userstore.connector.myConnector.groupPolicy", "all" ); UserStoreConnectorConfigLoader loader = new UserStoreConnectorConfigLoader(); loader.setProperties( properties ); UserStoreConnectorConfig config = loader.getUserStoreConnectorConfig( "myConnector" ); assertEquals( true, config.canReadGroup() ); assertEquals( true, config.canCreateGroup() ); assertEquals( true, config.canUpdateGroup() ); assertEquals( true, config.canDeleteGroup() ); } @Test public void resurrect_deleted_users() { ConfigProperties properties = new ConfigProperties(); properties.setProperty( "cms.userstore.connector.myConnector.userPolicy", "all" ); properties.setProperty( "cms.userstore.connector.myConnector.groupPolicy", "local" ); properties.setProperty( "cms.userstore.connector.myConnector.resurrectDeletedUsers", "true" ); UserStoreConnectorConfigLoader loader = new UserStoreConnectorConfigLoader(); loader.setProperties( properties ); UserStoreConnectorConfig config = loader.getUserStoreConnectorConfig( "myConnector" ); assertEquals( "myConnector", config.getName() ); assertEquals( true, config.resurrectDeletedUsers() ); } @Test public void plugin_type() { ConfigProperties properties = new ConfigProperties(); properties.setProperty( "cms.userstore.connector.myConnector.userPolicy", "all" ); properties.setProperty( "cms.userstore.connector.myConnector.groupPolicy", "local" ); properties.setProperty( "cms.userstore.connector.myConnector.plugin", "generic" ); UserStoreConnectorConfigLoader loader = new UserStoreConnectorConfigLoader(); loader.setProperties( properties ); UserStoreConnectorConfig config = loader.getUserStoreConnectorConfig( "myConnector" ); assertEquals( "myConnector", config.getName() ); assertEquals( "generic", config.getPluginType() ); } @Test public void plugin_properties() { ConfigProperties properties = new ConfigProperties(); properties.setProperty( "cms.userstore.connector.myConnector.userPolicy", "all" ); properties.setProperty( "cms.userstore.connector.myConnector.groupPolicy", "local" ); properties.setProperty( "cms.userstore.connector.myConnector.plugin", "generic" ); properties.setProperty( "cms.userstore.connector.myConnector.plugin.dialect", "oracle" ); properties.setProperty( "cms.userstore.connector.myConnector.plugin.url", "ldap://localhost:389" ); properties.setProperty( "cms.userstore.connector.myConnector.plugin.authDn", "cn=Directory Manager" ); properties.setProperty( "cms.userstore.connector.myConnector.plugin.authPassword", "pass" ); properties.setProperty( "cms.userstore.connector.myConnector.plugin.userBaseDn", "dc=example,dc=com" ); UserStoreConnectorConfigLoader loader = new UserStoreConnectorConfigLoader(); loader.setProperties( properties ); UserStoreConnectorConfig config = loader.getUserStoreConnectorConfig( "myConnector" ); assertEquals( "myConnector", config.getName() ); Properties pluginProperties = config.getPluginProperties(); assertEquals( "oracle", pluginProperties.getProperty( "dialect" ) ); assertEquals( "ldap://localhost:389", pluginProperties.getProperty( "url" ) ); assertEquals( "cn=Directory Manager", pluginProperties.getProperty( "authDn" ) ); assertEquals( "pass", pluginProperties.getProperty( "authPassword" ) ); assertEquals( "dc=example,dc=com", pluginProperties.getProperty( "userBaseDn" ) ); } @Test public void getAllUserStoreConnectorConfigs() { ConfigProperties properties = new ConfigProperties(); properties.setProperty( "cms.userstore.connector.myConnector.userPolicy", "all" ); properties.setProperty( "cms.userstore.connector.myOtherConnector.userPolicy", "all" ); UserStoreConnectorConfigLoader loader = new UserStoreConnectorConfigLoader(); loader.setProperties( properties ); Map<String, UserStoreConnectorConfig> configMap = loader.getAllUserStoreConnectorConfigs(); assertEquals( 2, configMap.size() ); } @Test(expected = InvalidUserStoreConfigException.class) public void getUserStoreConnectorConfig_throws_exception_when_connector_does_not_exist() { ConfigProperties properties = new ConfigProperties(); properties.setProperty( "cms.userstore.connector.myConnector.userPolicy", "all" ); properties.setProperty( "cms.userstore.connector.myOtherConnector.userPolicy", "all" ); UserStoreConnectorConfigLoader loader = new UserStoreConnectorConfigLoader(); loader.setProperties( properties ); loader.getUserStoreConnectorConfig( "noEntry" ); } }