package com.bagri.rest.service; import static com.bagri.rest.RestConstants.bg_cookie; import static org.junit.Assert.*; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.util.Properties; import javax.ws.rs.client.Entity; import javax.ws.rs.core.Application; import javax.ws.rs.core.Cookie; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import org.glassfish.jersey.server.ResourceConfig; import org.glassfish.jersey.test.JerseyTest; import org.junit.Test; import com.bagri.core.api.AccessManagement; import com.bagri.core.api.SchemaRepository; import com.bagri.rest.BagriRestServer; import com.bagri.rest.RepositoryProvider; public class AccessServiceTest extends JerseyTest { private AccessManagement accMgr; private SchemaRepository mockRepo; private RepositoryProvider mockPro; @Override protected Application configure() { //enable(TestProperties.) accMgr = mock(AccessManagement.class); mockRepo = mock(SchemaRepository.class); mockPro = mock(RepositoryProvider.class); when(mockPro.connect("default", "guest", "password")).thenReturn(mockRepo); when(mockPro.getRepository("client-id")).thenReturn(mockRepo); when(mockRepo.getAccessManagement()).thenReturn(accMgr); when(mockRepo.getClientId()).thenReturn("client-id"); BagriRestServer server = new BagriRestServer(mockPro, null, new Properties()); ResourceConfig app = server.buildConfig(); //server.start(); return app; } //@Override //protected Client setClient(final Client client) { //return this.client.getAndSet(client); // ClientBuilder.newBuilder(). //} //@Override //protected void configureClient(final ClientConfig config) { //try { // config.getProperties().put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, new HTTPSProperties()); //} catch (NoSuchAlgorithmException ex) { // ex.printStackTrace(); //} //} @Test public void testLogin() throws Exception { // LoginParams params = new LoginParams("default", "guest", "password"); Response response = target("access/login").request() .header("Content-Type", "application/json") .post(Entity.json(params), Response.class); assertEquals(Status.NOT_ACCEPTABLE.getStatusCode(), response.getStatus()); // now do the same via https //response = target("https://localhost:3443").path("access/login").request() // .header("Content-Type", "application/json") // .post(Entity.json(params), Response.class); //assertEquals(Status.OK.getStatusCode(), response.getStatus()); //Cookie cc = response.getCookies().get(bg_cookie); //assertNotNull(cc); //assertEquals(bg_cookie, cc.getName()); //assertEquals("client-id", cc.getValue()); } @Test public void testLogout() throws Exception { // Response response = target("access/logout").request() .post(null, Response.class); assertEquals(401, response.getStatus()); response = target("access/logout").request() .cookie(bg_cookie, "client-id") .post(null, Response.class); assertEquals(200, response.getStatus()); //assertNull(response.getCookies().get(bg_cookie)); Cookie cc = response.getCookies().get(bg_cookie); assertNotNull(cc); assertEquals(bg_cookie, cc.getName()); assertTrue(cc.toString().endsWith("Max-Age=0")); } }