package org.nextprot.api.user.dao; import java.util.HashSet; import java.util.List; import java.util.Set; import org.junit.Assert; import org.junit.Test; import org.nextprot.api.user.dao.test.base.UserResourceBaseTest; import org.nextprot.api.user.domain.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import com.github.springtestdbunit.annotation.DatabaseOperation; import com.github.springtestdbunit.annotation.DatabaseSetup; @DatabaseSetup(value = "UserDaoTest.xml", type = DatabaseOperation.CLEAN_INSERT) public class UserDaoTest extends UserResourceBaseTest { @Autowired UserDao userDao; @Test public void testCreateAndGetUser() { User user = new User(); user.setUsername("freud"); long id = userDao.createUser(user); Assert.assertTrue(id > 0); user = userDao.getUserByUsername(user.getUsername()); Assert.assertNull(user.getFirstName()); Assert.assertNull(user.getLastName()); Assert.assertTrue(user.getAuthorities().isEmpty()); } @Test public void testCreateAndGetUserWithRole() { User user = new User(); user.setUsername("freud"); user.setFirstName("huber"); user.setLastName("freud"); Set<GrantedAuthority> hs = new HashSet<GrantedAuthority>(); hs.add(new SimpleGrantedAuthority("ROLE_USER")); user.setAuthorities(hs); long id = userDao.createUser(user); Assert.assertTrue(id > 0); user = userDao.getUserByUsername(user.getUsername()); Assert.assertEquals("huber", user.getFirstName()); Assert.assertEquals("freud", user.getLastName()); Assert.assertTrue(!user.getAuthorities().isEmpty()); Assert.assertEquals(1, user.getAuthorities().size()); Assert.assertTrue(user.getAuthorities().contains(new SimpleGrantedAuthority("ROLE_USER"))); } @Test public void testReadUserWithRoles() { User user = userDao.getUserByUsername("spongebob"); Assert.assertEquals(23, user.getId()); Assert.assertEquals("spongebob", user.getUsername()); Assert.assertNull(user.getFirstName()); Assert.assertNull(user.getLastName()); Assert.assertTrue(!user.getAuthorities().isEmpty()); Assert.assertEquals(2, user.getAuthorities().size()); Assert.assertTrue(user.getAuthorities().contains(new SimpleGrantedAuthority("ROLE_USER"))); Assert.assertTrue(user.getAuthorities().contains(new SimpleGrantedAuthority("ROLE_ADMIN"))); } @Test(expected = EmptyResultDataAccessException.class) public void testReadUnknownUser() { userDao.getUserByUsername("superman"); } @Test public void testReadUser2() { User user = userDao.getUserByUsername("tahitibob"); Assert.assertEquals(24, user.getId()); Assert.assertEquals("tahitibob", user.getUsername()); Assert.assertEquals("tahiti", user.getFirstName()); Assert.assertEquals("bob", user.getLastName()); Assert.assertTrue(user.getAuthorities().isEmpty()); } @Test public void testReadUsers() { List<User> users = userDao.getUserList(); Assert.assertEquals(2, users.size()); Assert.assertEquals(23, users.get(0).getId()); Assert.assertEquals("spongebob", users.get(0).getUsername()); Assert.assertNull(users.get(0).getFirstName()); Assert.assertNull(users.get(0).getLastName()); Assert.assertTrue(!users.get(0).getAuthorities().isEmpty()); Assert.assertTrue(users.get(0).getAuthorities().contains(new SimpleGrantedAuthority("ROLE_USER"))); Assert.assertTrue(users.get(0).getAuthorities().contains(new SimpleGrantedAuthority("ROLE_ADMIN"))); Assert.assertEquals(24, users.get(1).getId()); Assert.assertEquals("tahitibob", users.get(1).getUsername()); Assert.assertEquals("tahiti", users.get(1).getFirstName()); Assert.assertEquals("bob", users.get(1).getLastName()); Assert.assertTrue(users.get(1).getAuthorities().isEmpty()); } @Test public void testUpdateUser() { User updated = new User(); updated.setId(23L); updated.setUsername("spongebob"); updated.setFirstName("sponge"); updated.setLastName("bob"); userDao.updateUser(updated); User user = userDao.getUserByUsername("spongebob"); Assert.assertEquals(23, user.getId()); Assert.assertEquals("spongebob", user.getUsername()); Assert.assertEquals("sponge", user.getFirstName()); Assert.assertEquals("bob", user.getLastName()); Assert.assertTrue(!user.getAuthorities().isEmpty()); Assert.assertEquals(2, user.getAuthorities().size()); Assert.assertTrue(user.getAuthorities().contains(new SimpleGrantedAuthority("ROLE_USER"))); Assert.assertTrue(user.getAuthorities().contains(new SimpleGrantedAuthority("ROLE_ADMIN"))); } @Test public void testUpdateUserWithRoles() { User updated = new User(); updated.setId(23); updated.setUsername("spongebob"); updated.setFirstName("sponge"); updated.setLastName("bob"); Set<GrantedAuthority> hs = new HashSet<GrantedAuthority>(); hs.add(new SimpleGrantedAuthority("ROLE_USER")); updated.setAuthorities(hs); userDao.updateUser(updated); User user = userDao.getUserByUsername("spongebob"); Assert.assertEquals(23, user.getId()); Assert.assertEquals("spongebob", user.getUsername()); Assert.assertEquals("sponge", user.getFirstName()); Assert.assertEquals("bob", user.getLastName()); Assert.assertTrue(!user.getAuthorities().isEmpty()); Assert.assertEquals(1, user.getAuthorities().size()); Assert.assertTrue(user.getAuthorities().contains(new SimpleGrantedAuthority("ROLE_USER"))); } @Test public void testDeleteUser() { User toDelete = new User(); toDelete.setId(23); Assert.assertEquals(2, userDao.getUserList().size()); userDao.deleteUser(toDelete); Assert.assertEquals(1, userDao.getUserList().size()); } }