/* * */ package com.bloatit.data; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.util.Locale; import org.hibernate.HibernateException; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import com.bloatit.data.DaoMember.Role; import com.bloatit.data.queries.DBRequests; import com.bloatit.framework.exceptions.lowlevel.MalformedArgumentException; import com.bloatit.framework.exceptions.lowlevel.NonOptionalParameterException; public class DaoMemberCreationTest { @BeforeClass public static void createDB() { SessionManager.generateTestSessionFactory(); } @AfterClass public static void closeDB() { if (SessionManager.getSessionFactory().getCurrentSession().getTransaction().isActive()) { SessionManager.endWorkUnitAndFlush(); } SessionManager.getSessionFactory().close(); } @Before public void setUp() throws Exception { SessionManager.beginWorkUnit(); } @After public void tearDown() throws Exception { if (SessionManager.getSessionFactory().getCurrentSession().getTransaction().isActive()) { SessionManager.rollback(); } } @Test public void testCreateMember() { final DaoMember theMember = DaoMember.createAndPersist("Thomas", "password", "salt", "tom@gmail.com", Locale.FRANCE); assertEquals(theMember.getEmail(), "tom@gmail.com"); assertEquals(theMember.getFullname(), ""); assertEquals(theMember.getLogin(), "Thomas"); assertEquals(theMember.getPassword(), "password"); assertEquals(theMember.getKarma().intValue(), -10); assertEquals(theMember.getRole(), Role.NORMAL); assertEquals(theMember.getLocale(), Locale.FRANCE); theMember.setFullname("Thomas Guyard"); assertEquals(theMember.getFullname(), "Thomas Guyard"); theMember.setEmail("Test@nowhere.com"); assertEquals(theMember.getEmail(), "Test@nowhere.com"); theMember.setPassword("Hello"); assertEquals(theMember.getPassword(), "Hello"); theMember.setRole(Role.ADMIN); assertEquals(theMember.getRole(), Role.ADMIN); theMember.setLocale(Locale.CHINA); assertEquals(theMember.getLocale(), Locale.CHINA); } @Test public void testCreateTreeMembers() { { final DaoMember theMember = DaoMember.createAndPersist("Thomas", "password", "salt", "tom@gmail.com", Locale.FRANCE); theMember.setFullname("Thomas Guyard"); SessionManager.flush(); } { final DaoMember theMember = DaoMember.createAndPersist("Fred", "other", "salt", "fred@gmail.com", Locale.FRANCE); theMember.setFullname("Frédéric Bertolus"); SessionManager.flush(); } { final DaoMember theMember = DaoMember.createAndPersist("Yoann", "plop", "salt", "yo@gmail.com", Locale.FRANCE); theMember.setFullname("Yoann Plénet"); } assertEquals(3, DBRequests.getAll(DaoMember.class).size()); } @Test public void testCreateMemberLimit() { try { DaoMember.createAndPersist(null, "pass", "salt", "mail@nowhere.com", Locale.FRANCE); assertTrue(false); } catch (final NonOptionalParameterException e) { assertTrue(true); } try { DaoMember.createAndPersist("login", null, "salt", "mail@nowhere.com", Locale.FRANCE); assertTrue(false); } catch (final NonOptionalParameterException e) { assertTrue(true); } try { DaoMember.createAndPersist("login", "pass", "salt", null, Locale.FRANCE); assertTrue(false); } catch (final NonOptionalParameterException e) { assertTrue(true); } try { DaoMember.createAndPersist("login", "pass", "salt", "ZDQSDV", null); assertTrue(false); } catch (final NonOptionalParameterException e) { assertTrue(true); } try { DaoMember.createAndPersist("", "pass", "salt", "mail@nowhere.com", Locale.FRANCE); assertTrue(false); } catch (final MalformedArgumentException e) { assertTrue(true); } try { DaoMember.createAndPersist("login", "", "salt", "mail@nowhere.com", Locale.FRANCE); assertTrue(false); } catch (final NonOptionalParameterException e) { assertTrue(true); } try { DaoMember.createAndPersist("login", "pass", "salt", "", Locale.FRANCE); assertTrue(false); } catch (final NonOptionalParameterException e) { assertTrue(true); } } @Test public void testMemberDuplicateCreation() { try { DaoMember.createAndPersist("Yoann", "plop", "salt", "yo@gmail.com", Locale.FRANCE); SessionManager.flush(); // duplicate login DaoMember.createAndPersist("Yoann", "plip", "salt", "yoyo@gmail.com", Locale.FRANCE); SessionManager.endWorkUnitAndFlush(); fail(); } catch (final HibernateException e) { assertTrue(true); } } @Test public void testGetMemberByLogin() { testCreateTreeMembers(); assertNotNull(DaoMember.getByLogin("Fred")); assertNull(DaoMember.getByLogin("Inexistant")); assertNull(DaoMember.getByLogin(null)); } @Test public void testGetMemberByLoginAndPassword() { testCreateTreeMembers(); assertNotNull(DaoMember.getByLoginAndPassword("Fred", "other")); assertNull(DaoMember.getByLoginAndPassword("Fred", "notTheGoodPassword")); assertNull(DaoMember.getByLoginAndPassword("Fred", "other ")); assertNull(DaoMember.getByLoginAndPassword("Fred", " other")); assertNull(DaoMember.getByLoginAndPassword("Fred", "other\n")); assertNull(DaoMember.getByLoginAndPassword("Fred", "othe")); assertNull(DaoMember.getByLoginAndPassword("Fred", "o")); assertNull(DaoMember.getByLoginAndPassword("Fred", "")); assertNull(DaoMember.getByLoginAndPassword("Fred", "*")); assertNull(DaoMember.getByLoginAndPassword("Fred", "o*")); assertNull(DaoMember.getByLoginAndPassword("Fred", "[a-z]*")); assertNull(DaoMember.getByLoginAndPassword("Fred", "othe?")); assertNull(DaoMember.getByLoginAndPassword("Fred", "othe.")); assertNull(DaoMember.getByLoginAndPassword("Fred", "\\*")); assertNull(DaoMember.getByLoginAndPassword("Fred", ".*")); assertNull(DaoMember.getByLoginAndPassword("Fred", "\\.*")); assertNull(DaoMember.getByLoginAndPassword("Fred", "\\.\\*")); assertNull(DaoMember.getByLoginAndPassword("Fred", "' OR 1=1; --")); assertNull(DaoMember.getByLoginAndPassword("Fred", null)); assertNull(DaoMember.getByLoginAndPassword(null, "' OR 1=1; --")); assertNull(DaoMember.getByLoginAndPassword("Inexistant", "' OR 1=1; --")); } @Test public void testExistMemberByLogin() { testCreateTreeMembers(); assertTrue(DaoActor.loginExists("Fred")); assertFalse(DaoActor.loginExists("Inexistant")); assertFalse(DaoActor.loginExists(null)); } }