Merge pull request #645 from rationalrevolt/userservice-tests

Added a couple of unit tests on login method of UserService
This commit is contained in:
Athou
2014-10-08 06:50:03 +02:00
2 changed files with 125 additions and 0 deletions

17
pom.xml
View File

@@ -23,6 +23,17 @@
<url>https://github.com/Athou/commafeed</url>
</scm>
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>jcenter</id>
<name>Bintray's jcenter Repository</name>
<url>http://jcenter.bintray.com</url>
</repository>
</repositories>
<build>
<finalName>commafeed</finalName>
<resources>
@@ -322,5 +333,11 @@
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>1.10.0</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

View 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);
}
}