/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package Sirius.server.localserver.user; import de.cismet.remotetesthelper.RemoteTestHelperService; import de.cismet.remotetesthelper.ws.rest.RemoteTestHelperClient; import Sirius.server.newuser.User; import Sirius.server.newuser.UserGroup; import Sirius.server.property.ServerProperties; import Sirius.server.sql.DBConnectionPool; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Properties; import de.cismet.tools.ScriptRunner; import static org.junit.Assert.*; /** * DOCUMENT ME! * * @author mscholl * @version $Revision$, $Date$ */ public class UserStoreTest { //~ Static fields/initializers --------------------------------------------- private static final transient Logger LOG = Logger.getLogger( UserStoreTest.class); private static final String TEST = "TEST "; private static final String TEST_DB_NAME = "user_store_test_db"; private static final RemoteTestHelperService service = new RemoteTestHelperClient(); private static ServerProperties props; private static DBConnectionPool pool; //~ Methods ---------------------------------------------------------------- /** * DOCUMENT ME! * * @throws Throwable DOCUMENT ME! */ @BeforeClass public static void setUpClass() throws Throwable { final Properties p = new Properties(); p.put("log4j.appender.Remote", "org.apache.log4j.net.SocketAppender"); // NOI18N p.put("log4j.appender.Remote.remoteHost", "localhost"); // NOI18N p.put("log4j.appender.Remote.port", "4445"); // NOI18N p.put("log4j.appender.Remote.locationInfo", "true"); // NOI18N p.put("log4j.rootLogger", "ALL,Remote"); // NOI18N PropertyConfigurator.configure(p); if (!Boolean.valueOf(service.initCidsSystem(TEST_DB_NAME))) { throw new IllegalStateException("cannot initilise test db"); } props = new ServerProperties(UserStoreTest.class.getResourceAsStream( "/Sirius/server/localserver/user/runtime.properties")); // NOI18N pool = new DBConnectionPool(props); final ScriptRunner runner = new ScriptRunner(pool.getDBConnection().getConnection(), true, false); final InputStream schemaStream = UserStoreTest.class.getResourceAsStream( "/Sirius/server/sql/cs_config_attr_schema.sql"); // NOI18N final InputStream scriptStream = UserStoreTest.class.getResourceAsStream( "/Sirius/server/localserver/user/configAttrTestData.sql"); // NOI18N final BufferedReader schemaReader = new BufferedReader(new InputStreamReader(schemaStream)); final BufferedReader scriptReader = new BufferedReader(new InputStreamReader(scriptStream)); try { runner.runScript(schemaReader); runner.runScript(scriptReader); } finally { schemaReader.close(); scriptReader.close(); } } /** * DOCUMENT ME! * * @throws Throwable Exception DOCUMENT ME! */ @AfterClass public static void tearDownClass() throws Throwable { pool.shutdown(); if (!Boolean.valueOf(service.dropDatabase(TEST_DB_NAME))) { throw new IllegalStateException("could not drop test db"); } } /** * DOCUMENT ME! */ @Before public void setUp() { } /** * DOCUMENT ME! */ @After public void tearDown() { } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ private String getCurrentMethodName() { return new Throwable().getStackTrace()[1].getMethodName(); } /** * DOCUMENT ME! */ @Ignore @Test public void testGetUsers() { } /** * DOCUMENT ME! */ @Ignore @Test public void testGetUserGroups() { } /** * DOCUMENT ME! */ @Ignore @Test public void testGetMemberships() { } /** * DOCUMENT ME! * * @throws Exception DOCUMENT ME! */ @Ignore @Test public void testChangePassword() throws Exception { } /** * DOCUMENT ME! */ @Ignore @Test public void testValidateUser() { } /** * DOCUMENT ME! * * @throws Throwable DOCUMENT ME! */ @Test public void testValidateUserPassword_OK() throws Throwable { if (LOG.isInfoEnabled()) { LOG.info(TEST + getCurrentMethodName()); } final UserStore us = new UserStore(pool, props); assertTrue("invalid user + password", us.validateUserPassword(new User(-1, "admin", null), "cismet")); } /** * DOCUMENT ME! * * @throws Throwable DOCUMENT ME! */ @Test public void testValidateUserPassword_invalidPW() throws Throwable { if (LOG.isInfoEnabled()) { LOG.info(TEST + getCurrentMethodName()); } final UserStore us = new UserStore(pool, props); assertFalse("valid user + password", us.validateUserPassword(new User(-1, "admin", null), "s")); } /** * DOCUMENT ME! * * @throws Throwable DOCUMENT ME! */ @Test public void testValidateUserPassword_invalidUser() throws Throwable { if (LOG.isInfoEnabled()) { LOG.info(TEST + getCurrentMethodName()); } final UserStore us = new UserStore(pool, props); assertFalse("valid user + password", us.validateUserPassword(new User(-1, "invalid", null), "s")); } /** * DOCUMENT ME! * * @throws Exception DOCUMENT ME! */ @Test public void testGetConfigAttr() throws Exception { if (LOG.isInfoEnabled()) { LOG.info(TEST + getCurrentMethodName()); } final UserStore us = new UserStore(pool, props); final UserGroup adminGroup = new UserGroup(1, "Administratoren", "LOCAL"); final User admin = new User(1, "admin", "LOCAL", adminGroup); String result = us.getConfigAttr(admin, "abc"); assertEquals("alphabeth3", result); result = us.getConfigAttr(admin, "cba"); assertNull(result); final User group = new User(-1, "admin", "LOCAL", adminGroup); result = us.getConfigAttr(group, "abc"); assertEquals("alphabeth2", result); final UserGroup domainGroup = new UserGroup(-1, "", "LOCAL"); final User domain = new User(-1, "", "", domainGroup); result = us.getConfigAttr(domain, "abc"); assertEquals("alphabeth", result); result = us.getConfigAttr(null, "abc"); assertNull(result); result = us.getConfigAttr(domain, null); assertNull(result); result = us.getConfigAttr(domain, "abcd"); assertNull(result); } }