/* * PatientView * * Copyright (c) Worth Solutions Limited 2004-2013 * * This file is part of PatientView. * * PatientView is free software: you can redistribute it and/or modify it under the terms of the * GNU General Public License as published by the Free Software Foundation, either version 3 of the License, * or (at your option) any later version. * PatientView is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License along with PatientView in a file * titled COPYING. If not, see <http://www.gnu.org/licenses/>. * * @package PatientView * @link http://www.patientview.org * @author PatientView <info@patientview.org> * @copyright Copyright (c) 2004-2013, Worth Solutions Limited * @license http://www.gnu.org/licenses/gpl-3.0.html The GNU General Public License V3.0 */ package org.patientview.test.service; import org.patientview.patientview.logon.UnitAdmin; import org.patientview.model.Specialty; import org.patientview.patientview.model.SpecialtyUserRole; import org.patientview.model.Unit; import org.patientview.patientview.model.User; import org.patientview.patientview.model.UserMapping; import org.patientview.service.UnitManager; import org.patientview.service.UserManager; import org.patientview.test.helpers.SecurityHelpers; import org.patientview.test.helpers.ServiceHelpers; import org.junit.Before; import org.junit.Test; import javax.inject.Inject; import java.util.List; import static org.junit.Assert.*; import static org.junit.Assert.assertEquals; /** * These tests require an admin adminUser to be logged into a specialty */ public class UserManagerTest extends BaseServiceTest { @Inject private ServiceHelpers serviceHelpers; @Inject private SecurityHelpers securityHelpers; @Inject private UnitManager unitManager; @Inject private UserManager userManager; private Unit unitRm301; private Specialty specialty1; private UnitAdmin unitAdmin; @Before public void setupSystem() { // create an admin adminUser and specialty and log them in User adminUser = serviceHelpers.createUser("Username", "username@test.com", "pass", "Test User"); specialty1 = serviceHelpers.createSpecialty("Specialty 1", "Specialty1", "Test description"); serviceHelpers.createSpecialtyUserRole(specialty1, adminUser, "unitadmin"); securityHelpers.loginAsUser(adminUser.getUsername(), specialty1); unitRm301 = new Unit(); unitRm301.setUnitcode("RM301"); unitRm301.setName("RM301: RUNNING MAN TEST UNIT"); unitRm301.setShortname("RM301"); unitRm301.setRenaladminemail("renaladmin@mailinator.com"); unitRm301.setSpecialty(specialty1); unitManager.save(unitRm301); // a new unit staff user to create unitAdmin = new UnitAdmin("unitstaff-username1", "pass", "Unit Staff Name", "unitstaff-username1@patientview.org", false, "unitstaff", true); unitAdmin.setIsrecipient(false); unitAdmin.setIsclinician(true); } @Test public void testSaveUserFromUnitAdmin() { // create a new unit staff and their roles User newUser = userManager.saveUserFromUnitAdmin(unitAdmin, unitRm301.getUnitcode()); assertTrue("Invalid id", newUser.getId() > 0); // check new User's specialty etc List<SpecialtyUserRole> specialtyUserRoles = userManager.getSpecialtyUserRoles(newUser); assertEquals("Incorrect number of roles", 1, specialtyUserRoles.size()); assertEquals("Incorrect specialty", specialty1, specialtyUserRoles.get(0).getSpecialty()); assertEquals("Incorrect specialty role", "unitstaff", specialtyUserRoles.get(0).getRole()); // check user has some user mappings List<UserMapping> userMappings = userManager.getUserMappings(newUser.getUsername()); assertTrue("Incorrect user mappings created", userMappings != null && userMappings.size() == 1); assertTrue("User does not exist in Radar", userManager.userExistsInRadar(newUser.getId())); assertTrue("Incorrect user mappings created", userMappings != null && userMappings.size() == 1); assertFalse("Incorrect isRecipient created", newUser.isIsrecipient()); assertTrue("Incorrect isClinician created", newUser.isIsclinician()); } @Test public void testSaveUpdateUserFromUnitAdmin() { User newUser = userManager.saveUserFromUnitAdmin(unitAdmin, unitRm301.getUnitcode()); // update and save unitAdmin.setName("Updated name"); User updatedUser = userManager.saveUserFromUnitAdmin(unitAdmin, unitRm301.getUnitcode()); // check the update has been made assertEquals("Incorrect updated name", "Updated name", updatedUser.getName()); // check new User's specialty etc still is OK List<SpecialtyUserRole> specialtyUserRoles = userManager.getSpecialtyUserRoles(updatedUser); assertEquals("Incorrect number of roles", 1, specialtyUserRoles.size()); assertEquals("Incorrect specialty", specialty1, specialtyUserRoles.get(0).getSpecialty()); assertEquals("Incorrect specialty role", "unitstaff", specialtyUserRoles.get(0).getRole()); assertFalse("Incorrect isRecipient created", newUser.isIsrecipient()); assertTrue("Incorrect isClinician created", newUser.isIsclinician()); } @Test public void testDeleteUserFromUnitAdmin() { // create a new unit staff and their roles User newUser = userManager.saveUserFromUnitAdmin(unitAdmin, unitRm301.getUnitcode()); assertTrue("User does not exist in Radar", userManager.userExistsInRadar(newUser.getId())); userManager.delete(newUser.getUsername(), unitRm301.getUnitcode()); User checkUser = userManager.get(newUser.getUsername()); assertNull("User still found", checkUser); List<UserMapping> userMappings = userManager.getUserMappings(newUser.getUsername()); assertTrue("User still has patientview mappings", userMappings != null && userMappings.size() == 0); List<SpecialtyUserRole> specialtyUserRoles = userManager.getSpecialtyUserRoles(newUser); assertTrue("User still has specialtyUserRoles", specialtyUserRoles != null && specialtyUserRoles.size() == 0); assertFalse("User still exists in Radar", userManager.userExistsInRadar(newUser.getId())); } }