diff --git a/iTrust/test/edu/ncsu/csc/itrust/unit/action/AddPreRegisterPatientActionTest.java b/iTrust/test/edu/ncsu/csc/itrust/unit/action/AddPreRegisterPatientActionTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..f7d9d1b20cd4ad1b7dc72c340dd0dd1f34e243d8
--- /dev/null
+++ b/iTrust/test/edu/ncsu/csc/itrust/unit/action/AddPreRegisterPatientActionTest.java
@@ -0,0 +1,98 @@
+/**
+ * Tests for AddPatientAction
+ */
+
+package edu.ncsu.csc.itrust.unit.action;
+
+import junit.framework.TestCase;
+import edu.ncsu.csc.itrust.action.AddPreRegisteredPatientAction;
+import edu.ncsu.csc.itrust.beans.PatientBean;
+import edu.ncsu.csc.itrust.dao.DAOFactory;
+import edu.ncsu.csc.itrust.dao.mysql.AuthDAO;
+import edu.ncsu.csc.itrust.dao.mysql.PatientDAO;
+import edu.ncsu.csc.itrust.unit.datagenerators.TestDataGenerator;
+import edu.ncsu.csc.itrust.unit.testutils.TestDAOFactory;
+import edu.ncsu.csc.itrust.exception.FormValidationException;
+import edu.ncsu.csc.itrust.exception.ITrustException;
+import edu.ncsu.csc.itrust.enums.Role;
+
+
+public class AddPreRegisterPatientActionTest extends TestCase {
+    private DAOFactory factory = TestDAOFactory.getTestInstance();
+    private PatientDAO patientDAO = TestDAOFactory.getTestInstance().getPatientDAO();
+    private AuthDAO authDAO = TestDAOFactory.getTestInstance().getAuthDAO();
+    private TestDataGenerator gen = new TestDataGenerator();
+	private AddPreRegisteredPatientAction action;
+	
+/**
+ * Sets up defaults
+ */
+	@Override
+	protected void setUp() throws Exception {
+        gen.clearAllTables();
+		action = new AddPreRegisteredPatientAction(factory, 0L);
+    }
+    
+    /**
+     * Test adding a patient with correct information.
+     */
+    public void testPreRegisterPatientAction() throws Exception {
+        PatientBean p = new PatientBean();
+        p.setFirstName("Jiminy");
+		p.setLastName("Cricket");
+        p.setEmail("make.awish@gmail.com");
+        p.setPassword("password");
+        p.setStreetAddress1("SA1");
+        p.setStreetAddress2("SA2");
+        p.setZip("12345");
+        p.setCity("Champaign");
+        p.setState("IL");
+        p.setPhone("1234567890");
+        p.setIcAddress1("ICA1");
+        p.setIcAddress2("ICA2");
+        p.setIcZip("54321");
+        p.setIcCity("Urbana");
+        p.setIcState("AK");
+        p.setIcPhone("1122334455");
+
+        long mid = action.addPatient(p);
+
+        PatientBean p2 = patientDAO.getPatient(mid);
+        assertEquals(p.getFirstName(), p2.getFirstName());
+		assertEquals(p.getLastName(), p2.getLastName());
+        assertEquals(p.getEmail(), p2.getEmail());
+        assertEquals(p.getStreetAddress1(), p2.getStreetAddress1());
+        assertEquals(p.getStreetAddress2(), p2.getStreetAddress2());
+        assertEquals(p.getZip(), p2.getZip());
+        assertEquals(p.getCity(), p2.getCity());
+        assertEquals(p.getState(), p2.getState());
+        assertEquals(p.getPhone(), p2.getPhone());
+        assertEquals(p.getIcAddress1(), p2.getIcAddress1());
+        assertEquals(p.getIcAddress2(), p2.getIcAddress2());
+        assertEquals(p.getIcZip(), p2.getIcZip());
+        assertEquals(p.getIcCity(), p2.getIcCity());
+        assertEquals(p.getIcState(), p.getIcState());
+        assertEquals(p.getIcPhone(), p.getIcPhone());
+        
+        assertEquals(Role.PREREGISTEREDPATIENT, authDAO.getUserRole(mid));
+    }
+
+    /**
+     * Ensure that invalid emails are not allowed
+     */
+    public void testPreRegisterPatientInvalidEmail() throws Exception {
+        PatientBean p = new PatientBean();
+        p.setFirstName("Jiminy");
+		p.setLastName("Cricket");
+        p.setEmail("1234");
+        p.setPassword("password");
+
+        // maybe not needed
+        try {
+            action.addPatient(p);
+            fail("Invalid email");
+        } catch (FormValidationException e) {
+
+        }
+    }
+}