Family-Map-Project / FamilyMapServer / FamilyMapServerStudent-master / java / dao / UserDAOTest.java
UserDAOTest.java
Raw
package dao;

import dao.DataAccessException;
import dao.Database;
import dao.UserDAO;
import model.User;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import javax.xml.crypto.Data;
import java.sql.Connection;

import static org.junit.jupiter.api.Assertions.*;

public class UserDAOTest
{
    private Database db;
    private User insertUser;
    private User retrieveUser;
    private User validateUser;
    private UserDAO uDao;

    @BeforeEach
    public void setUp() throws DataAccessException
    {
        db = new Database();

        insertUser = new User("DanielG", "catsanddogs", "dgood@gmail.com",
                "Daniel", "Good", "Male", "12345");

        retrieveUser = new User("JohnL", "mastodon", "jl123@outlook.com", "John",
                "Lock", "Male", "54373");

        validateUser = new User("DaveQ", "nintendopower", "daveql@gmail.com", "Dave",
                        "Quelle", "Male", "128956");

        Connection conn = db.getConnection();
        db.clearTables();

        uDao = new UserDAO(conn);
    }

    @AfterEach
    public void tearDown() throws DataAccessException
    {
        db.closeConnection(false);
    }

    @Test
    public void insertPass() throws DataAccessException
    {
        User compareTest = uDao.getUserByID(insertUser.getUsername());

        assertNull(compareTest);

        uDao.createUser(insertUser);

        compareTest = uDao.getUserByID(insertUser.getUsername());

        assertEquals(insertUser, compareTest);
    }

    @Test
    public void insertFail() throws DataAccessException
    {
        uDao.createUser(insertUser);

        assertThrows(DataAccessException.class, ()-> uDao.createUser(insertUser));
    }

    @Test
    public void retrievalPass() throws DataAccessException
    {
        uDao.createUser(retrieveUser);

        User compareTest = uDao.getUserByID(retrieveUser.getUsername());

        assertNotNull(compareTest);

        assertEquals(retrieveUser, compareTest);
    }

    @Test
    public void retrievalFail() throws DataAccessException
    {
        User compareTest = uDao.getUserByID("Adam");
        assertNull(compareTest);
    }

    @Test
    public void validatePass() throws DataAccessException
    {
        uDao.createUser(validateUser);

        assertNotNull(uDao.getUserByID(validateUser.getUsername()));

        assertTrue(uDao.validate(validateUser.getUsername(), validateUser.getPassword()));
    }

    @Test
    public void validateFail() throws DataAccessException
    {
        assertFalse(uDao.validate("Jimmy", "bacon"));
    }

    @Test
    public void clearPass() throws DataAccessException
    {
        uDao.createUser(insertUser);

        assertNotNull(uDao.getUserByID(insertUser.getUsername()));

        assertDoesNotThrow(() -> uDao.removeAllUsers());

        assertNull(uDao.getUserByID(insertUser.getUsername()));
    }
}