package org.webpieces.plugins.hibernate; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.Persistence; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.webpieces.ddl.api.JdbcApi; import org.webpieces.ddl.api.JdbcConstants; import org.webpieces.ddl.api.JdbcFactory; import org.webpieces.httpcommon.Requests; import org.webpieces.httpcommon.api.RequestId; import org.webpieces.httpcommon.api.RequestListener; import org.webpieces.httpparser.api.common.Header; import org.webpieces.httpparser.api.dto.HttpRequest; import org.webpieces.httpparser.api.dto.KnownHttpMethod; import org.webpieces.httpparser.api.dto.KnownStatusCode; import org.webpieces.plugins.hibernate.app.HibernateAppMeta; import org.webpieces.plugins.hibernate.app.dbo.UserTestDbo; import org.webpieces.util.file.VirtualFileClasspath; import org.webpieces.webserver.ResponseExtract; import org.webpieces.webserver.TestConfig; import org.webpieces.webserver.WebserverForTest; import org.webpieces.webserver.test.FullResponse; import org.webpieces.webserver.test.MockResponseSender; import org.webpieces.webserver.test.PlatformOverridesForTest; public class TestAjaxHibernate { private MockResponseSender socket = new MockResponseSender(); private RequestListener server; @Before public void setUp() { //clear in-memory database JdbcApi jdbc = JdbcFactory.create(JdbcConstants.jdbcUrl, JdbcConstants.jdbcUser, JdbcConstants.jdbcPassword); jdbc.dropAllTablesFromDatabase(); VirtualFileClasspath metaFile = new VirtualFileClasspath("plugins/hibernateMeta.txt", WebserverForTest.class.getClassLoader()); TestConfig config = new TestConfig(); config.setPlatformOverrides(new PlatformOverridesForTest()); config.setAppOverrides(new TestModule()); config.setMetaFile(metaFile); WebserverForTest webserver = new WebserverForTest(config); server = webserver.start(); } @Test public void testNotFoundInSubRoute() { HttpRequest req = Requests.createRequest(KnownHttpMethod.GET, "/ajax/notfound"); server.incomingRequest(req, new RequestId(0), true, socket); FullResponse response = ResponseExtract.assertSingleResponse(socket); response.assertStatusCode(KnownStatusCode.HTTP_404_NOTFOUND); response.assertContains("Your page was not found"); } @Test public void testAjaxAddUser() { HttpRequest req = Requests.createPostRequest("/ajax/user/post", "entity.id", "", "entity.name", "blah1", "entity.firstName", "blah2", "password", "asddd"); server.incomingRequest(req, new RequestId(0), true, socket); FullResponse response = ResponseExtract.assertSingleResponse(socket); response.assertStatusCode(KnownStatusCode.HTTP_303_SEEOTHER); Assert.assertEquals("http://myhost.com/ajax/user/list", response.getRedirectUrl()); Header header = response.createCookieRequestHeader(); Assert.assertTrue("contents actually was="+header.getValue(), header.getValue().contains("User+successfully+saved")); } public static UserTestDbo loadDataInDb() { String email = "dean2@sync.xsoftware.biz"; //populate database.... EntityManagerFactory factory = Persistence.createEntityManagerFactory(HibernateAppMeta.PERSISTENCE_TEST_UNIT); EntityManager mgr = factory.createEntityManager(); EntityTransaction tx = mgr.getTransaction(); tx.begin(); UserTestDbo user = new UserTestDbo(); user.setEmail(email); user.setName("SomeName"); user.setFirstName("Dean"); user.setLastName("Hill"); mgr.persist(user); mgr.flush(); tx.commit(); return user; } }