package com.kritsit.casetracker.client.domain.services;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.util.HashMap;
import java.util.Map;
import com.kritsit.casetracker.shared.domain.model.Staff;
import com.kritsit.casetracker.shared.domain.model.Permission;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
public class AdministratorTest extends TestCase {
public AdministratorTest(String name) {
super(name);
}
public static Test suite() {
return new TestSuite(AdministratorTest.class);
}
public void testGetUser() {
IConnectionService connection = mock(IConnectionService.class);
Staff user = mock(Staff.class);
Administrator administrator = new Administrator(user, connection);
assertNotNull(administrator.getUser());
}
public void testAddUser_Null() {
IConnectionService connection = mock(IConnectionService.class);
Staff user = mock(Staff.class);
IAdministratorService administrator = new Administrator(user, connection);
InputToModelParseResult result = administrator.addUser(null);
assertFalse(result.isSuccessful());
assertEquals("Required information missing", result.getReason());
}
public void testEditUser_Null() {
IConnectionService connection = mock(IConnectionService.class);
Staff user = mock(Staff.class);
IAdministratorService administrator = new Administrator(user, connection);
InputToModelParseResult result = administrator.editUser(null);
assertFalse(result.isSuccessful());
assertEquals("Required information missing", result.getReason());
}
public void testAddUser_NoData() {
Map<String, Object> inputMap = new HashMap<>();
IConnectionService connection = mock(IConnectionService.class);
Staff user = mock(Staff.class);
IAdministratorService administrator = new Administrator(user, connection);
InputToModelParseResult result = administrator.addUser(inputMap);
assertFalse(result.isSuccessful());
assertEquals("Required information missing", result.getReason());
}
public void testEditUser_NoData() {
Map<String, Object> inputMap = new HashMap<>();
IConnectionService connection = mock(IConnectionService.class);
Staff user = mock(Staff.class);
IAdministratorService administrator = new Administrator(user, connection);
InputToModelParseResult result = administrator.editUser(inputMap);
assertFalse(result.isSuccessful());
assertEquals("Required information missing", result.getReason());
}
public void testAddUser_usernameMissing() {
Map<String, Object> inputMap = new HashMap<>();
IConnectionService connection = mock(IConnectionService.class);
Staff user = mock(Staff.class);
IAdministratorService administrator = new Administrator(user, connection);
inputMap.put("username", "");
inputMap.put("firstname", "John");
inputMap.put("lastname", "Doe");
inputMap.put("department", "IT");
inputMap.put("position", "admin");
inputMap.put("permission", "ADMIN");
InputToModelParseResult result = administrator.addUser(inputMap);
assertFalse(result.isSuccessful());
assertEquals("username required", result.getReason());
}
public void testEditUser_usernameMissing() {
Map<String, Object> inputMap = new HashMap<>();
IConnectionService connection = mock(IConnectionService.class);
Staff user = mock(Staff.class);
IAdministratorService administrator = new Administrator(user, connection);
inputMap.put("username", "");
inputMap.put("firstname", "John");
inputMap.put("lastname", "Doe");
inputMap.put("department", "IT");
inputMap.put("position", "admin");
inputMap.put("permission", "ADMIN");
InputToModelParseResult result = administrator.editUser(inputMap);
assertFalse(result.isSuccessful());
assertEquals("username required", result.getReason());
}
public void testAddUser_lastnameMissing() {
Map<String, Object> inputMap = new HashMap<>();
IConnectionService connection = mock(IConnectionService.class);
Staff user = mock(Staff.class);
IAdministratorService administrator = new Administrator(user, connection);
inputMap.put("username", "johndoe");
inputMap.put("firstname", "John");
inputMap.put("lastname", "");
inputMap.put("department", "IT");
inputMap.put("position", "admin");
inputMap.put("permission", "ADMIN");
InputToModelParseResult result = administrator.addUser(inputMap);
assertFalse(result.isSuccessful());
assertEquals("lastname required", result.getReason());
}
public void testEditUser_lastnameMissing() {
Map<String, Object> inputMap = new HashMap<>();
IConnectionService connection = mock(IConnectionService.class);
Staff user = mock(Staff.class);
IAdministratorService administrator = new Administrator(user, connection);
inputMap.put("username", "johndoe");
inputMap.put("firstname", "John");
inputMap.put("lastname", "");
inputMap.put("department", "IT");
inputMap.put("position", "admin");
inputMap.put("permission", "ADMIN");
InputToModelParseResult result = administrator.editUser(inputMap);
assertFalse(result.isSuccessful());
assertEquals("lastname required", result.getReason());
}
public void testAddUser_permissionMissing() {
Map<String, Object> inputMap = new HashMap<>();
IConnectionService connection = mock(IConnectionService.class);
Staff user = mock(Staff.class);
IAdministratorService administrator = new Administrator(user, connection);
inputMap.put("username", "johndoe");
inputMap.put("firstname", "John");
inputMap.put("lastname", "Doe");
inputMap.put("position", "admin");
inputMap.put("department", "IT");
inputMap.put("permission", "");
InputToModelParseResult result = administrator.addUser(inputMap);
assertFalse(result.isSuccessful());
assertEquals("permission required", result.getReason());
}
public void testEituser_permissionMissing() {
Map<String, Object> inputMap = new HashMap<>();
IConnectionService connection = mock(IConnectionService.class);
Staff user = mock(Staff.class);
IAdministratorService administrator = new Administrator(user, connection);
inputMap.put("username", "johndoe");
inputMap.put("firstname", "John");
inputMap.put("lastname", "Doe");
inputMap.put("position", "admin");
inputMap.put("department", "IT");
inputMap.put("permission", "");
InputToModelParseResult result = administrator.editUser(inputMap);
assertFalse(result.isSuccessful());
assertEquals("permission required", result.getReason());
}
public void testAddUser_permissionAndLastnameMissing() {
Map<String, Object> inputMap = new HashMap<>();
IConnectionService connection = mock(IConnectionService.class);
Staff user = mock(Staff.class);
IAdministratorService administrator = new Administrator(user, connection);
inputMap.put("username", "johndoe");
inputMap.put("firstname", "John");
inputMap.put("lastname", "");
inputMap.put("position", "admin");
inputMap.put("department", "IT");
inputMap.put("permission", "");
InputToModelParseResult result = administrator.addUser(inputMap);
assertFalse(result.isSuccessful());
assertEquals("permission and lastname required", result.getReason());
}
public void testEditUser_permissionAndLastnameMissing() {
Map<String, Object> inputMap = new HashMap<>();
IConnectionService connection = mock(IConnectionService.class);
Staff user = mock(Staff.class);
IAdministratorService administrator = new Administrator(user, connection);
inputMap.put("username", "johndoe");
inputMap.put("firstname", "John");
inputMap.put("lastname", "");
inputMap.put("position", "admin");
inputMap.put("department", "IT");
inputMap.put("permission", "");
InputToModelParseResult result = administrator.editUser(inputMap);
assertFalse(result.isSuccessful());
assertEquals("permission and lastname required", result.getReason());
}
public void testAddUser_allFieldsFilled() {
Map<String, Object> inputMap = new HashMap<>();
IConnectionService connection = mock(IConnectionService.class);
Staff user = mock(Staff.class);
IAdministratorService administrator = new Administrator(user, connection);
String username = "johndoe";
String firstname = "John";
String lastname = "Doe";
String department = "IT";
String position = "admin";
String permission = "ADMIN";
Staff staff = new Staff(username, firstname, lastname, department, position, Permission.valueOf(permission));
inputMap.put("username", username);
inputMap.put("firstname", firstname);
inputMap.put("lastname", lastname);
inputMap.put("position", position);
inputMap.put("permission", permission);
when(connection.addUser(any())).thenReturn(true);
InputToModelParseResult result = administrator.addUser(inputMap);
assertTrue(result.isSuccessful());
verify(connection).addUser(any());
}
public void testEditUser_allFieldsFilled() {
Map<String, Object> inputMap = new HashMap<>();
IConnectionService connection = mock(IConnectionService.class);
Staff user = mock(Staff.class);
IAdministratorService administrator = new Administrator(user, connection);
String username = "johndoe";
String firstname = "John";
String lastname = "Doe";
String department = "IT";
String position = "admin";
String permission = "ADMIN";
Staff staff = new Staff(username, firstname, lastname, department, position, Permission.valueOf(permission));
inputMap.put("username", username);
inputMap.put("firstname", firstname);
inputMap.put("lastname", lastname);
inputMap.put("position", position);
inputMap.put("permission", permission);
when(connection.editUser(any())).thenReturn(true);
InputToModelParseResult result = administrator.editUser(inputMap);
assertTrue(result.isSuccessful());
verify(connection).editUser(any());
}
public void testGetStaff() {
IConnectionService connection = mock(IConnectionService.class);
Staff user = mock(Staff.class);
IAdministratorService administrator = new Administrator(user, connection);
administrator.getStaff();
verify(connection).getStaff();
}
public void testDeletUser_Null(){
IConnectionService connection = mock(IConnectionService.class);
Staff user = mock(Staff.class);
IAdministratorService administrator = new Administrator(user, connection);
assertTrue(administrator.deleteUser(null) == 400);
}
public void testDeletUser_NotFound(){
IConnectionService connection = mock(IConnectionService.class);
Staff user = mock(Staff.class);
IAdministratorService administrator = new Administrator(user, connection);
Map<String, Object> inputMap2 = new HashMap<>();
inputMap2.put("username", "other");
assertTrue(administrator.deleteUser(inputMap2) == 500);
}
public void testDeletUser(){
IConnectionService connection = mock(IConnectionService.class);
Staff user = mock(Staff.class);
IAdministratorService administrator = new Administrator(user, connection);
Map<String, Object> inputMap = new HashMap<>();
inputMap.put("username", "johndoe");
when(connection.deleteUser("johndoe")).thenReturn(true);
assertTrue(administrator.deleteUser(inputMap) == 200);
}
public void testResetPassword(){
IConnectionService connection = mock(IConnectionService.class);
Staff user = mock(Staff.class);
IAdministratorService administrator = new Administrator(user, connection);
when(connection.resetPassword("johndoe", 1234)).thenReturn(true);
assertTrue(administrator.resetPassword("johndoe", 1234) == 200);
assertTrue(administrator.resetPassword("johndoe", 4321) == 500);
}
}