/** * Copyright 2012 Comcast Corporation * * Licensed 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 com.comcast.cmb.test.unit; import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.List; import com.comcast.cmb.common.controller.CMBControllerServlet; import com.comcast.cmb.common.model.User; import com.comcast.cmb.common.persistence.IUserPersistence; import com.comcast.cmb.common.persistence.PersistenceFactory; import com.comcast.cmb.common.persistence.UserCassandraPersistence; import com.comcast.cmb.common.util.PersistenceException; import com.comcast.cmb.common.util.Util; import org.apache.log4j.Logger; import org.junit.* ; import static org.junit.Assert.*; public class UserPersistenceTest { protected static Logger logger = Logger.getLogger(UserPersistenceTest.class); @Before public void setup() throws Exception { Util.initLog4jTest(); CMBControllerServlet.valueAccumulator.initializeAllCounters(); PersistenceFactory.reset(); } @Test public void testCreateDeleteUser() { try { IUserPersistence persistence = new UserCassandraPersistence(); User user = createUser(persistence, "vvenkatraman1234", "venu1234"); persistence.deleteUser(user.getUserName()); verifyUserCleanup((new ArrayList<User>(Arrays.asList(user))), persistence); logger.info("testCreateDeleteUser succeeded"); } catch (Exception ex) { logger.error("test failed", ex); fail("Test failed: " + ex.toString()); } } @Test public void testGetAllUsers() { try { IUserPersistence persistence = new UserCassandraPersistence(); List<User> users = new LinkedList<User>(); User user = createUser(persistence, "vvenkatraman1234", "venu1234"); users.add(user); user = createUser(persistence, "bcheng1234", "baosen1234"); users.add(user); user = createUser(persistence, "mchiang1234", "mchiang1234"); users.add(user); List<User> userList = persistence.getAllUsers(); assertTrue(userList != null && userList.size() >= 3); for (User user1 : users) { persistence.deleteUser(user1.getUserName()); } userList = persistence.getAllUsers(); verifyUserCleanup(users, persistence); logger.info("testGetAllUsers succeeded"); } catch (Exception ex) { logger.error("test failed", ex); fail("Test failed: " + ex.toString()); } } public User createUser(IUserPersistence persistence, String userName, String password) throws PersistenceException, InterruptedException { User user = persistence.getUserByName(userName); if (user != null) { persistence.deleteUser(userName); } user = persistence.createUser(userName, password); assertUser(userName, user); Thread.sleep(10); return user; } @Test public void testCreateAdmin(){ try{ String ADMIN_NAME = "cns_admin"; String ADMIN_PASSWORD = "cns_admin"; IUserPersistence persistence = new UserCassandraPersistence(); User user = persistence.getUserByName(ADMIN_NAME); if (user != null) { persistence.deleteUser(ADMIN_NAME); } user = persistence.createUser(ADMIN_NAME, ADMIN_PASSWORD, true); assertAdmin(ADMIN_NAME, user); persistence.deleteUser(ADMIN_NAME); }catch(Exception ex){ logger.error("test failed", ex); fail("Test failed: " + ex.toString()); } } private void assertUser(String userName, User user) { assertNotNull(user); assertTrue(user.getUserName().equals(userName)); assertNotNull(user.getAccessKey()); assertNotNull(user.getAccessSecret()); assertNotNull(user.getHashPassword()); assertNotNull(user.getUserId()); } private void assertAdmin(String userName, User user) { assertUser(userName, user); assertTrue(user.getIsAdmin()); } private void verifyUserCleanup(List<User> users, IUserPersistence persistence) throws PersistenceException { List<User> userList = persistence.getAllUsers(); for (User user1 : users) { if (checkIfUserExists(userList, user1)) { fail("Test failed: User with user name " + user1.getUserName() + " still exists in the system"); } } } private boolean checkIfUserExists(List<User> userList, User user1) { for (User userListUser : userList) { if (user1.getUserName().equals(userListUser.getUserName())) { // match found return true; } } return false; } @Test public void testgetUserByIdNameAndKey() throws Exception { IUserPersistence persistence = new UserCassandraPersistence(); User user; try { List<User> users = new LinkedList<User>(); user = createUser(persistence, "vvenkatraman1234", "venu1234"); users.add(user); user = createUser(persistence, "bcheng1234", "boasen1234"); users.add(user); String accessKey = user.getAccessKey(); user = persistence.createUser("mchiang1234", "mchiang1234"); users.add(user); String userId = user.getUserId(); String userName = "vvenkatraman1234"; user = persistence.getUserByName(userName); assertUser(userName, user); user = persistence.getUserById(userId); assertUser("mchiang1234", user); assertTrue(user.getUserId().equals(userId)); user = persistence.getUserByAccessKey(accessKey); assertUser("bcheng1234", user); assertTrue(user.getAccessKey().equals(accessKey)); for (User u : users) { persistence.deleteUser(u.getUserName()); } verifyUserCleanup(users, persistence); logger.info("testgetUserByIdNameAndKey succeeded"); } catch (PersistenceException ex) { logger.error("test failed", ex); fail("Test failed: " + ex.toString()); } } @After public void tearDown() { CMBControllerServlet.valueAccumulator.deleteAllCounters(); } }