package org.cloudfoundry.identity.uaa.user;
import org.cloudfoundry.identity.uaa.constants.OriginKeys;
import org.cloudfoundry.identity.uaa.zone.IdentityZoneHolder;
import org.junit.Before;
import org.junit.Test;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import java.util.Collections;
import java.util.Date;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
public class InMemoryUaaUserDatabaseTests {
UaaUser user = new UaaUser("test-id","username","password","email",UaaAuthority.USER_AUTHORITIES,"givenname","familyname", new Date(), new Date(), OriginKeys.UAA,"externalID", false, IdentityZoneHolder.get().getId(), "test-id", new Date());
InMemoryUaaUserDatabase db;
@Before
public void setUp() {
db = new InMemoryUaaUserDatabase(Collections.singleton(user));
}
@Test
public void testRetrieveUserByName() throws Exception {
assertSame(user, db.retrieveUserByName(user.getUsername(), user.getOrigin()));
}
@Test(expected = UsernameNotFoundException.class)
public void testRetrieveUserByNameInvalidOrigin() throws Exception {
db.retrieveUserByName(user.getUsername(), OriginKeys.LDAP);
}
@Test(expected = UsernameNotFoundException.class)
public void testRetrieveUserByNameInvalidUsername() throws Exception {
db.retrieveUserByName(user.getUsername() + "1", OriginKeys.UAA);
}
@Test
public void testRetrieveUserById() throws Exception {
assertSame(user, db.retrieveUserById(user.getId()));
}
@Test(expected = UsernameNotFoundException.class)
public void testRetrieveUserByInvalidId() throws Exception {
db.retrieveUserById(user.getId() + "1");
}
@Test
public void retrieveUserByEmail() throws Exception {
assertSame(user, db.retrieveUserByEmail(user.getEmail(), OriginKeys.UAA));
}
@Test
public void retrieveUserByEmail_with_invalidEmail() throws Exception {
assertNull(db.retrieveUserByEmail("invalid.email@wrong.no", OriginKeys.UAA));
}
@Test
public void testUpdateUser() throws Exception {
assertSame(user, db.retrieveUserById(user.getId()));
UaaUser newUser = new UaaUser(
user.getId(),
user.getUsername(),
user.getPassword(),
user.getEmail(),
user.getAuthorities(),
user.getGivenName(),
user.getFamilyName(),
user.getCreated(),
user.getModified(),
user.getOrigin(),
user.getExternalId(),
false,
user.getZoneId(),
user.getSalt(),
user.getPasswordLastModified());
db.updateUser(user.getId(), newUser);
assertSame(newUser, db.retrieveUserById(user.getId()));
}
@Test
public void updateLastLogonTime() {
db.updateLastLogonTime("test-id");
UaaUser uaaUser = db.retrieveUserById("test-id");
assertNotNull(uaaUser.getLastLogonTime());
}
}