user.setPerson(new Person()); PersonName pn = new PersonName(e.getAttribute("first_name"), "", e.getAttribute("last_name")); user.addName(pn);
/** * Change user associations for notPreferred to preferred person. * * @param preferred * @param notPreferred * @param mergedData a patient merge audit data object to update * @see PatientServiceImpl#mergePatients(Patient, Patient) */ private void changeUserAssociations(Patient preferred, Person notPreferred, PersonMergeLogData mergedData) { UserService userService = Context.getUserService(); List<User> users = userService.getUsersByPerson(notPreferred, true); for (User user : users) { user.setPerson(preferred); User persisted = userService.saveUser(user); if (mergedData != null) { mergedData.addMovedUser(persisted.getUuid()); } } }
user.setPerson(new Person()); PersonName pn = new PersonName(userFirstName, "", userLastName); user.addName(pn);
person.setBirthdate(calendar.getTime()); person.setGender("M"); user.setPerson(person); when(userContext.getAuthenticatedUser()).thenReturn(user); when(userContext.isAuthenticated()).thenReturn(true);
public void authenticateMockUser() { User user = new User(); user.setUuid("1010d442-e134-11de-babe-001e378eb67e"); user.setUserId(1); user.setUsername("admin"); user.addRole(new Role(RoleConstants.SUPERUSER)); Person person = new Person(); person.setUuid("6adb7c42-cfd2-4301-b53b-ff17c5654ff7"); person.setId(1); person.addName(new PersonName("Bob", "", "Smith")); Calendar calendar = Calendar.getInstance(); calendar.set(1980, 01, 01); person.setBirthdate(calendar.getTime()); person.setGender("M"); user.setPerson(person); when(userContext.getAuthenticatedUser()).thenReturn(user); when(userContext.isAuthenticated()).thenReturn(true); }
/** * Run this before each unit test in this class. The "@Before" method in * {@link BaseContextSensitiveTest} is run right before this method. * * @throws Exception */ @Before public void runBeforeEachTest() { PersonName name = new PersonName("Joe", "J", "Doe"); name.setDateCreated(new Date()); Person person = new Person(); person.setDateCreated(new Date()); person.setPersonDateCreated(person.getDateCreated()); person.setGender("M"); userJoe = new User(); userJoe.setSystemId("100-30"); userJoe.setPerson(person); userJoe.addName(name); userJoe.setUsername("juser"); userJoe.setDateCreated(new Date()); if (dao == null) { // fetch the dao from the spring application context // this bean name matches the name in /metadata/spring/applicationContext-service.xml dao = (UserDAO) applicationContext.getBean("userDAO"); } dao.saveUser(userJoe, null); }
@Test public void getUsers_shouldEscapeSqlWildcardsInSearchPhrase() { User u = new User(); u.setPerson(new Person()); u.getPerson().setGender("M"); String wildcards[] = new String[] { "_" }; // we used to also test %, but UserValidator actually doesn't allow that in usernames. TODO: remove the loop //for each of the wildcards in the array, insert a user with a username or names //with the wildcards and carry out a search for that user for (String wildcard : wildcards) { PersonName name = new PersonName(wildcard + "cats", wildcard + "and", wildcard + "dogs"); name.setDateCreated(new Date()); u.addName(name); u.setUsername(wildcard + "test" + wildcard); Context.getUserService().createUser(u, "Openmr5xy"); //we expect only one matching name or or systemId to be returned int size = dao.getUsers(wildcard + "ca", null, false, null, null).size(); assertEquals(1, size); //if actually the search returned the matching name or system id String userName = (dao.getUsers(wildcard + "ca", null, false, null, null).get(0).getUsername()); assertEquals("Test failed since no user containing the character " + wildcard + " was found, ", wildcard + "test" + wildcard, userName); } }
@Test public void getUserByActivationKey_shouldGetUserByActivationKey(){ User u = new User(); u.setPerson(new Person()); u.addName(new PersonName("Benjamin", "A", "Wolfe")); u.setUsername("bwolfe"); u.getPerson().setGender("M"); User createdUser = userService.createUser(u, "Openmr5xy"); String key="h4ph0fpNzQCIPSw8plJI"; int validTime = 10*60*1000; //equivalent to 10 minutes for token to be valid Long tokenTime = System.currentTimeMillis() + validTime; LoginCredential credentials = dao.getLoginCredential(createdUser); credentials.setActivationKey("b071c88d6d877922e35af2e6a90dd57d37ac61143a03bb986c5f353566f3972a86ce9b2604c31a22dfa467922dcfd54fa7d18b0a7c7648d94ca3d97a88ea2fd0:"+tokenTime); dao.updateLoginCredential(credentials); assertEquals(createdUser, userService.getUserByActivationKey(key)); }
@Test public void getUserByActivationKey_shouldReturnNullIfTokenTimeExpired(){ User u = new User(); u.setPerson(new Person()); u.addName(new PersonName("Benjamin", "A", "Wolfe")); u.setUsername("bwolfe"); u.getPerson().setGender("M"); User createdUser = userService.createUser(u, "Openmr5xy"); String key="h4ph0fpNzQCIPSw8plJI"; int validTime = 10*60*1000; //equivalent to 10 minutes for token to be valid Long tokenTime = System.currentTimeMillis() - validTime; LoginCredential credentials = dao.getLoginCredential(createdUser); credentials.setActivationKey("b071c88d6d877922e35af2e6a90dd57d37ac61143a03bb986c5f353566f3972a86ce9b2604c31a22dfa467922dcfd54fa7d18b0a7c7648d94ca3d97a88ea2fd0:"+tokenTime); dao.updateLoginCredential(credentials); assertNull(userService.getUserByActivationKey(key)); }
/** * @see AuditableInterceptor#onSave(Object,Serializable,Object[],String[],Type[]) */ @Test public void onSave_shouldBeCalledWhenSavingOpenmrsObject() { User u = new User(); u.setSystemId("user"); u.setPerson(Context.getPersonService().getPerson(1)); Context.getUserService().createUser(u, "Admin123"); Assert.assertSame(Context.getAuthenticatedUser(), u.getCreator()); Assert.assertNotNull(u.getDateCreated()); }
@Test public void saveUser_shouldFailToCreateTheUserWithAWeakPassword() { assertTrue("The context needs to be correctly authenticated to by a user", Context.isAuthenticated()); UserService us = userService; User u = new User(); u.setPerson(new Person()); u.addName(new PersonName("Benjamin", "A", "Wolfe")); u.setUsername("bwolfe"); u.getPerson().setGender("M"); expectedException.expect(PasswordException.class); us.createUser(u, "short"); }
/** * @see PatientService#mergePatients(Patient,Patient) */ @Test public void mergePatients_shouldAuditMovedUsers() throws Exception { //retrieve patients Patient preferred = patientService.getPatient(999); Patient notPreferred = patientService.getPatient(7); voidOrders(Collections.singleton(notPreferred)); User user = Context.getUserService().getUser(501); user.setPerson(notPreferred); Context.getUserService().saveUser(user); //merge the two patients and retrieve the audit object PersonMergeLog audit = mergeAndRetrieveAudit(preferred, notPreferred); Assert.assertTrue("user association change not audited", isValueInList(Context.getUserService().getUser(501).getUuid(), audit.getPersonMergeLogData().getMovedUsers())); }
@Test public void changePasswordUsingActivationKey_shouldUpdatePasswordIfActivationKeyIsCorrect() { User u = new User(); u.setPerson(new Person()); u.addName(new PersonName("Benjamin", "A", "Wolfe")); u.setUsername("bwolfe"); u.getPerson().setGender("M"); User createdUser = userService.createUser(u, "Openmr5xy"); String key = "h4ph0fpNzQCIPSw8plJI"; int validTime = 10 * 60 * 1000; //equivalent to 10 minutes for token to be valid Long tokenTime = System.currentTimeMillis() + validTime; LoginCredential credentials = dao.getLoginCredential(createdUser); credentials.setActivationKey( "b071c88d6d877922e35af2e6a90dd57d37ac61143a03bb986c5f353566f3972a86ce9b2604c31a22dfa467922dcfd54fa7d18b0a7c7648d94ca3d97a88ea2fd0:" + tokenTime); dao.updateLoginCredential(credentials); final String PASSWORD = "Admin123"; Context.authenticate(createdUser.getUsername(), "Openmr5xy"); userService.changePasswordUsingActivationKey(key, PASSWORD); Context.authenticate(createdUser.getUsername(), PASSWORD); }
@Test public void changePasswordUsingActivationKey_shouldNotUpdatePasswordIfActivationKeyIsIncorrect() { User u = new User(); u.setPerson(new Person()); u.addName(new PersonName("Benjamin", "A", "Wolfe")); u.setUsername("bwolfe"); u.getPerson().setGender("M"); User createdUser = userService.createUser(u, "Openmr5xy"); String key = "wrongactivationkeyin"; Context.authenticate(createdUser.getUsername(), "Openmr5xy"); expectedException.expect(InvalidActivationKeyException.class); expectedException.expectMessage(messages.getMessage("activation.key.not.correct")); userService.changePasswordUsingActivationKey(key, "Pa55w0rd"); }
@Test public void changePasswordUsingActivationKey_shouldNotUpdatePasswordIfActivationKeyExpired() { User u = new User(); u.setPerson(new Person()); u.addName(new PersonName("Benjamin", "A", "Wolfe")); u.setUsername("bwolfe"); u.getPerson().setGender("M"); User createdUser = userService.createUser(u, "Openmr5xy"); String key = "h4ph0fpNzQCIPSw8plJI"; int validTime = 10 * 60 * 1000; //equivalent to 10 minutes for token to be valid Long tokenTime = System.currentTimeMillis() - validTime; LoginCredential credentials = dao.getLoginCredential(createdUser); credentials.setActivationKey( "b071c88d6d877922e35af2e6a90dd57d37ac61143a03bb986c5f353566f3972a86ce9b2604c31a22dfa467922dcfd54fa7d18b0a7c7648d94ca3d97a88ea2fd0:" + tokenTime); dao.updateLoginCredential(credentials); Context.authenticate(createdUser.getUsername(), "Openmr5xy"); expectedException.expect(InvalidActivationKeyException.class); expectedException.expectMessage(messages.getMessage("activation.key.not.correct")); userService.changePasswordUsingActivationKey(key, "Pa55w0rd"); } }
/** * @see UserValidator#validate(Object,Errors) */ @Test public void validate_shouldPassValidationIfAllRequiredFieldsHaveProperValues() { User user = new User(); user.setUsername("test"); user.setRetired(true); user.setRetireReason("for the lulz"); user.setPerson(new Person(999)); user.getPerson().addName(new PersonName("Users", "Need", "People")); user.getPerson().setGender("F"); Errors errors = new BindException(user, "user"); validator.validate(user, errors); Assert.assertFalse(errors.hasErrors()); }
/** * @see UserValidator#validate(Object,Errors) */ @Test public void validate_shouldPassValidationIfFieldLengthsAreCorrect() { User user = new User(); user.setUsername("test"); user.setSystemId("systemId"); user.setRetireReason("retireReason"); user.setPerson(new Person(999)); user.getPerson().addName(new PersonName("Users", "Need", "People")); user.getPerson().setGender("F"); Errors errors = new BindException(user, "user"); validator.validate(user, errors); Assert.assertFalse(errors.hasErrors()); }
@Test public void createUser_shouldCreateNewUserWithBasicElements() { assertTrue("The context needs to be correctly authenticated to by a user", Context.isAuthenticated()); User u = new User(); u.setPerson(new Person()); u.addName(new PersonName("Benjamin", "A", "Wolfe")); u.setUsername("bwolfe"); u.getPerson().setGender("M"); User createdUser = userService.createUser(u, "Openmr5xy"); // if we're returning the object from create methods, check validity assertTrue("The user returned by the create user method should equal the passed in user", createdUser.equals(u)); createdUser = userService.getUserByUsername("bwolfe"); assertTrue("The created user should equal the passed in user", createdUser.equals(u)); }
@Ignore("TRUNK-5425") @Test public void setUserActivationKey_shouldCreateUserActivationKey() throws MessageException { User u = new User(); u.setPerson(new Person()); u.addName(new PersonName("Benjamin", "A", "Wolfe")); u.setUsername("bwolfe"); u.getPerson().setGender("M"); Context.getAdministrationService().setGlobalProperty(OpenmrsConstants.GP_HOST_URL, "http://localhost:8080/openmrs/admin/users/changePassword.form/{activationKey}"); User createdUser = userService.createUser(u, "Openmr5xy"); assertNull(dao.getLoginCredential(createdUser).getActivationKey()); assertEquals(createdUser, userService.setUserActivationKey(createdUser)); assertNotNull(dao.getLoginCredential(createdUser).getActivationKey()); }
/** * @see UserValidator#validate(Object,Errors) */ @Test public void validate_shouldFailValidationIfFieldLengthsAreNotCorrect() { User user = new User(); user.setUsername(STRING_WITH_LENGTH_GREATER_THAN_50); user.setSystemId(STRING_WITH_LENGTH_GREATER_THAN_50); user.setRetireReason(STRING_WITH_LENGTH_GREATER_THAN_50); user.setPerson(new Person(999)); user.getPerson().addName(new PersonName(STRING_WITH_LENGTH_GREATER_THAN_50, STRING_WITH_LENGTH_GREATER_THAN_50, STRING_WITH_LENGTH_GREATER_THAN_50)); user.getPerson().setGender(STRING_WITH_LENGTH_GREATER_THAN_50); Errors errors = new BindException(user, "user"); validator.validate(user, errors); Assert.assertTrue(errors.hasFieldErrors("username")); Assert.assertTrue(errors.hasFieldErrors("systemId")); Assert.assertTrue(errors.hasFieldErrors("retireReason")); Assert.assertTrue(errors.hasFieldErrors("person.names[0].givenName")); Assert.assertTrue(errors.hasFieldErrors("person.names[0].middleName")); Assert.assertTrue(errors.hasFieldErrors("person.names[0].familyName")); Assert.assertTrue(errors.hasFieldErrors("person.gender")); }