forked from Archives/Athou_commafeed
Added a couple of unit tests for UserService login
This commit is contained in:
108
src/test/java/com/commafeed/backend/service/UserServiceTest.java
Normal file
108
src/test/java/com/commafeed/backend/service/UserServiceTest.java
Normal file
@@ -0,0 +1,108 @@
|
||||
package com.commafeed.backend.service;
|
||||
|
||||
import static org.mockito.Matchers.any;
|
||||
import static org.mockito.Matchers.anyString;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.commafeed.backend.dao.UserDAO;
|
||||
import com.commafeed.backend.model.User;
|
||||
import com.google.common.base.Optional;
|
||||
|
||||
|
||||
public class UserServiceTest {
|
||||
|
||||
@Test public void
|
||||
calling_login_should_not_return_user_object_when_given_null_nameOrEmail() {
|
||||
UserService service = new UserService(null, null, null, null, null, null);
|
||||
|
||||
Optional<User> user = service.login(null, "password");
|
||||
|
||||
Assert.assertFalse(user.isPresent());
|
||||
}
|
||||
|
||||
@Test public void
|
||||
calling_login_should_not_return_user_object_when_given_null_password() {
|
||||
UserService service = new UserService(null, null, null, null, null, null);
|
||||
|
||||
Optional<User> user = service.login("testusername", null);
|
||||
|
||||
Assert.assertFalse(user.isPresent());
|
||||
}
|
||||
|
||||
@Test public void
|
||||
calling_login_should_lookup_user_by_name() {
|
||||
UserDAO dao = mock(UserDAO.class);
|
||||
|
||||
UserService service = new UserService(null, dao, null, null, null, null);
|
||||
service.login("test", "password");
|
||||
|
||||
verify(dao).findByName("test");
|
||||
}
|
||||
|
||||
@Test public void
|
||||
calling_login_should_lookup_user_by_email_if_lookup_by_name_failed() {
|
||||
UserDAO dao = mock(UserDAO.class);
|
||||
when(dao.findByName("test@test.com")).thenReturn(null);
|
||||
|
||||
UserService service = new UserService(null, dao, null, null, null, null);
|
||||
service.login("test@test.com", "password");
|
||||
|
||||
verify(dao).findByEmail("test@test.com");
|
||||
}
|
||||
|
||||
@Test public void
|
||||
calling_login_should_not_return_user_object_if_user_is_disabled() {
|
||||
// Make a disabled user
|
||||
User disabledUser = new User();
|
||||
disabledUser.setDisabled(true);
|
||||
|
||||
// Mock DAO to return the disabled user
|
||||
UserDAO dao = mock(UserDAO.class);
|
||||
when(dao.findByName("test")).thenReturn(disabledUser);
|
||||
|
||||
// Create service with mocked DAO
|
||||
UserService service = new UserService(null, dao, null, null, null, null);
|
||||
|
||||
// Try to login as the disabled user
|
||||
Optional<User> user = service.login("test", "password");
|
||||
|
||||
Assert.assertFalse(user.isPresent());
|
||||
}
|
||||
|
||||
@Test public void
|
||||
calling_login_should_try_to_authenticate_user_who_is_not_disabled() {
|
||||
// Make a user who is not disabled
|
||||
User user = new User();
|
||||
user.setDisabled(false);
|
||||
|
||||
// Set the encryptedPassword on the user
|
||||
byte[] encryptedPassword = new byte[]{5,6,7};
|
||||
user.setPassword(encryptedPassword);
|
||||
|
||||
// Set a salt for this user
|
||||
byte[] salt = new byte[]{1,2,3};
|
||||
user.setSalt(salt);
|
||||
|
||||
// Mock DAO to return the user
|
||||
UserDAO dao = mock(UserDAO.class);
|
||||
when(dao.findByName("test")).thenReturn(user);
|
||||
|
||||
// Mock PasswordEncryptionService
|
||||
PasswordEncryptionService encryptionService = mock(PasswordEncryptionService.class);
|
||||
when(encryptionService.authenticate(anyString(), any(byte[].class), any(byte[].class))).thenReturn(false);
|
||||
|
||||
// Create service with mocks
|
||||
UserService service = new UserService(null, dao, null, null, encryptionService, null);
|
||||
|
||||
// Try to login as the user
|
||||
service.login("test", "password");
|
||||
|
||||
verify(encryptionService).authenticate("password", encryptedPassword, salt);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user