package com.walters.sms;
import com.walters.sms.domain.User;
import org.junit.*;
import static org.junit.Assert.*;
public class AuthenticationServiceTest
{
private static final String USERNAME = "username";
private static final String PASSWORD = "password";
private static IUserService userService;
private IUserAuthenticationService objectUnderTest;
@BeforeClass
public static void setUpClass() throws Exception
{
final User user = UserDataHelper.createUser(USERNAME, PASSWORD);
userService = getServiceLocator().getService(IUserService.class);
userService.saveUser(user);
}
@AfterClass
public static void tearDownClass() throws Exception
{
userService.deleteAll();
userService = null;
}
@Before
public void executeBeforeEachTest()
{
objectUnderTest = getServiceLocator().getService(IUserAuthenticationService.class);
}
@After
public void executeAfterEachTest() throws Exception
{
if (objectUnderTest.isUserAuthenticated())
{
objectUnderTest.logoutUser();
}
objectUnderTest = null;
}
@Test
public void testAuthenticate() throws Exception
{
System.out.println("testAuthenticate()");
assertNull(objectUnderTest.getCurrentUser());
assertFalse(objectUnderTest.isUserAuthenticated());
assertTrue(objectUnderTest.authenticateUser(USERNAME, PASSWORD));
assertTrue(objectUnderTest.isUserAuthenticated());
final User authenticatedUser = objectUnderTest.getCurrentUser();
assertEquals(USERNAME, authenticatedUser.getUsername());
assertEquals(PASSWORD, authenticatedUser.getPassword());
assertFalse(objectUnderTest.authenticateUser(USERNAME, "wrongPassword"));
assertFalse(objectUnderTest.authenticateUser("wrongUsername", PASSWORD));
assertFalse(objectUnderTest.authenticateUser("wrongUsername", "wrongPassword"));
}
@Test
public void testLogout() throws Exception
{
System.out.println("testLogout()");
assertNull(objectUnderTest.getCurrentUser());
assertFalse(objectUnderTest.isUserAuthenticated());
objectUnderTest.authenticateUser(USERNAME, PASSWORD);
assertTrue(objectUnderTest.isUserAuthenticated());
final User currentUser = objectUnderTest.logoutUser();
assertNull("Current user must be null.", currentUser);
assertFalse(objectUnderTest.isUserAuthenticated());
}
private static IServiceLocator getServiceLocator()
{
return ServiceLocator.getInstance();
}
}