package com.bagri.rest.service;
import com.bagri.core.api.SchemaRepository;
import com.bagri.core.system.Schema;
import com.bagri.rest.BagriRestServer;
import com.bagri.rest.RepositoryProvider;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.TreeNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.glassfish.jersey.test.JerseyTest;
import org.junit.Test;
import javax.ws.rs.core.Application;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
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.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.Properties;
public class SchemaServiceTest extends JerseyTest {
private SchemaRepository mockRepo;
private RepositoryProvider mockPro;
private JsonFactory jsonFactory = new JsonFactory(new ObjectMapper());
@Override
protected Application configure() {
mockRepo = mock(SchemaRepository.class);
mockPro = mock(RepositoryProvider.class);
when(mockPro.getRepository("client-id")).thenReturn(mockRepo);
when(mockRepo.getClientId()).thenReturn("client-id");
//when(restContext.getSchemaManagement()).thenReturn(schemaManagement);
BagriRestServer server = new BagriRestServer(mockPro, null, new Properties());
return server.buildConfig();
}
@Test
public void testSchemasJson() throws Exception {
Collection<String> response1 = new ArrayList<>();
response1.add("default");
response1.add("TPoX");
response1.add("XMark");
when(mockPro.getSchemaNames()).thenReturn(response1);
Response resp = target("schemas").request(MediaType.APPLICATION_JSON)
.cookie(bg_cookie, "client-id")
.get(Response.class);
assertEquals(200, resp.getStatus());
String body = resp.readEntity(String.class);
TreeNode treeNode = jsonFactory.createParser(body).readValueAsTree();
assertTrue(treeNode.isArray());
assertEquals(3, treeNode.size());
assertEquals("\"default\"", treeNode.get(0).toString());
assertEquals("\"TPoX\"", treeNode.get(1).toString());
assertEquals("\"XMark\"", treeNode.get(2).toString());
when(mockPro.getSchema("default")).thenReturn(
new Schema(1, new Date(), "admin", "default", "default schema for test and demo purpose", true, null));
body = target("schemas").path("default")
.request(MediaType.APPLICATION_JSON)
.cookie(bg_cookie, "client-id")
.get(String.class);
assertNotNull(body);
treeNode = jsonFactory.createParser(body).readValueAsTree();
assertEquals("\"admin\"", treeNode.get("createdBy").toString());
when(mockPro.getSchema("TPoX")).thenReturn(
new Schema(1, new Date(), "admin", "TPoX", "TPoX: schema for TPoX-related tests", false, null));
body = target("schemas/TPoX").request(MediaType.APPLICATION_JSON)
.cookie(bg_cookie, "client-id")
.get(String.class);
assertNotNull(body);
treeNode = jsonFactory.createParser(body).readValueAsTree();
assertEquals("\"admin\"", treeNode.get("createdBy").toString());
when(mockPro.getSchema("XMark")).thenReturn(
new Schema(1, new Date(), "admin", "XMark", "XMark benchmark schema", false, null));
body = target("schemas/XMark").request(MediaType.APPLICATION_JSON)
.cookie(bg_cookie, "client-id")
.get(String.class);
assertNotNull(body);
treeNode = jsonFactory.createParser(body).readValueAsTree();
assertEquals("\"admin\"", treeNode.get("createdBy").toString());
}
}