| 
									
										
										
										
											2015-11-19 14:39:21 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | import com.fasterxml.jackson.databind.JsonNode;
 | 
					
						
							|  |  |  | import com.fasterxml.jackson.databind.node.ArrayNode;
 | 
					
						
							|  |  |  | import controllers.api.v1.Dataset;
 | 
					
						
							|  |  |  | import org.junit.AfterClass;
 | 
					
						
							|  |  |  | import org.junit.Before;
 | 
					
						
							|  |  |  | import org.junit.BeforeClass;
 | 
					
						
							| 
									
										
										
										
											2017-02-24 10:14:47 -08:00
										 |  |  | import org.junit.Ignore;
 | 
					
						
							| 
									
										
										
										
											2015-11-19 14:39:21 -08:00
										 |  |  | import org.junit.Test;
 | 
					
						
							|  |  |  | import play.Logger;
 | 
					
						
							|  |  |  | import play.libs.Json;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import play.mvc.Http;
 | 
					
						
							|  |  |  | import play.mvc.Result;
 | 
					
						
							|  |  |  | import play.test.FakeApplication;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import java.util.Collections;
 | 
					
						
							|  |  |  | import java.util.HashMap;
 | 
					
						
							|  |  |  | import java.util.Map;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import static play.test.Helpers.*;
 | 
					
						
							| 
									
										
										
										
											2017-02-24 10:14:47 -08:00
										 |  |  | import static org.fest.assertions.api.Assertions.*;
 | 
					
						
							| 
									
										
										
										
											2015-11-19 14:39:21 -08:00
										 |  |  | import static org.mockito.Mockito.*;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public class ControllersTest {
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public static FakeApplication app;
 | 
					
						
							|  |  |  |     private final Http.Request request = mock(Http.Request.class);
 | 
					
						
							| 
									
										
										
										
											2016-02-02 05:30:57 -08:00
										 |  |  |     public static String DB_DEFAULT_DRIVER = "db.default.driver";
 | 
					
						
							|  |  |  |     public static String DB_DEFAULT_URL = "db.default.url";
 | 
					
						
							|  |  |  |     public static String DB_DEFAULT_USER = "db.default.user";
 | 
					
						
							|  |  |  |     public static String DB_DEFAULT_PASSWORD = "db.default.password";
 | 
					
						
							|  |  |  |     public static String MYSQL_DRIVER_CLASS = "com.mysql.jdbc.Driver";
 | 
					
						
							|  |  |  |     public static String DATABASE_WHEREHOWS_OPENSOURCE_USER_NAME = "wherehows";
 | 
					
						
							|  |  |  |     public static String DATABASE_WHEREHOWS_OPENSOURCE_USER_PASSWORD = "wherehows";
 | 
					
						
							|  |  |  |     public static String DATABASE_WHEREHOWS_OPENSOURCE_URL = "jdbc:mysql://localhost/wherehows";
 | 
					
						
							| 
									
										
										
										
											2016-07-25 17:19:12 -07:00
										 |  |  |     public static Integer DB_ID = 65;
 | 
					
						
							| 
									
										
										
										
											2015-11-19 14:39:21 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     @BeforeClass
 | 
					
						
							|  |  |  |     public static void startApp() {
 | 
					
						
							|  |  |  |         HashMap<String, String> mysql = new HashMap<String, String>();
 | 
					
						
							| 
									
										
										
										
											2016-02-02 05:30:57 -08:00
										 |  |  |         mysql.put(DB_DEFAULT_DRIVER, MYSQL_DRIVER_CLASS);
 | 
					
						
							|  |  |  |         mysql.put(DB_DEFAULT_URL, DATABASE_WHEREHOWS_OPENSOURCE_URL);
 | 
					
						
							|  |  |  |         mysql.put(DB_DEFAULT_USER, DATABASE_WHEREHOWS_OPENSOURCE_USER_NAME);
 | 
					
						
							|  |  |  |         mysql.put(DB_DEFAULT_PASSWORD, DATABASE_WHEREHOWS_OPENSOURCE_USER_PASSWORD);
 | 
					
						
							| 
									
										
										
										
											2015-11-19 14:39:21 -08:00
										 |  |  |         app = fakeApplication(mysql);
 | 
					
						
							|  |  |  |         start(app);
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @Before
 | 
					
						
							|  |  |  |     public void setUp() throws Exception {
 | 
					
						
							|  |  |  |         Map<String, String> flashData = Collections.emptyMap();
 | 
					
						
							|  |  |  |         Map<String, Object> argData = Collections.emptyMap();
 | 
					
						
							|  |  |  |         Long id = 2L;
 | 
					
						
							|  |  |  |         play.api.mvc.RequestHeader header = mock(play.api.mvc.RequestHeader.class);
 | 
					
						
							|  |  |  |         Http.Context context = new Http.Context(id, header, request, flashData, flashData, argData);
 | 
					
						
							|  |  |  |         Http.Context.current.set(context);
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @Ignore("need config") @Test
 | 
					
						
							|  |  |  |     public void testDataset()
 | 
					
						
							|  |  |  |     {
 | 
					
						
							|  |  |  |         Result result = controllers.api.v1.Dataset.getPagedDatasets();
 | 
					
						
							|  |  |  |         assertThat(status(result)).isEqualTo(OK);
 | 
					
						
							|  |  |  |         JsonNode node = Json.parse(contentAsString(result));
 | 
					
						
							|  |  |  |         assertThat(node.isContainerNode());
 | 
					
						
							|  |  |  |         assertThat(node.get("status").asText()).isEqualTo("ok");
 | 
					
						
							|  |  |  |         JsonNode dataNode = node.get("data");
 | 
					
						
							|  |  |  |         assertThat(dataNode.isContainerNode());
 | 
					
						
							|  |  |  |         long count = dataNode.get("count").asLong();
 | 
					
						
							|  |  |  |         assertThat(count > 0);
 | 
					
						
							|  |  |  |         JsonNode datasetsNode = dataNode.get("datasets");
 | 
					
						
							|  |  |  |         assertThat(datasetsNode.isArray());
 | 
					
						
							|  |  |  |         JsonNode firstDatasetNode = ((ArrayNode) datasetsNode).get(0);
 | 
					
						
							|  |  |  |         assertThat(firstDatasetNode.isContainerNode());
 | 
					
						
							| 
									
										
										
										
											2016-02-02 05:30:57 -08:00
										 |  |  |         Integer datasetId = firstDatasetNode.get("id").asInt();
 | 
					
						
							| 
									
										
										
										
											2015-11-19 14:39:21 -08:00
										 |  |  |         String name = firstDatasetNode.get("name").asText();
 | 
					
						
							|  |  |  |         assertThat(datasetId > 0);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         result = controllers.api.v1.Dataset.getDatasetByID(datasetId);
 | 
					
						
							|  |  |  |         assertThat(status(result)).isEqualTo(OK);
 | 
					
						
							|  |  |  |         JsonNode datasetNode = Json.parse(contentAsString(result));
 | 
					
						
							|  |  |  |         assertThat(datasetNode.isContainerNode());
 | 
					
						
							|  |  |  |         assertThat(datasetNode.get("status").asText()).isEqualTo("ok");
 | 
					
						
							|  |  |  |         JsonNode detailNode = datasetNode.get("dataset");
 | 
					
						
							|  |  |  |         assertThat(detailNode.isContainerNode());
 | 
					
						
							|  |  |  |         String datasetName = detailNode.get("name").asText();
 | 
					
						
							|  |  |  |         assertThat(datasetName.equals(name));
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         result = controllers.api.v1.Dataset.getDatasetColumnsByID(datasetId);
 | 
					
						
							|  |  |  |         assertThat(status(result)).isEqualTo(OK);
 | 
					
						
							|  |  |  |         JsonNode columnsNode = Json.parse(contentAsString(result));
 | 
					
						
							|  |  |  |         assertThat(columnsNode.isContainerNode());
 | 
					
						
							| 
									
										
										
										
											2016-02-02 05:30:57 -08:00
										 |  |  |         //assertThat(columnsNode.get("status").asText()).isEqualTo("ok");
 | 
					
						
							| 
									
										
										
										
											2015-11-19 14:39:21 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         result = controllers.api.v1.Dataset.getDatasetPropertiesByID(datasetId);
 | 
					
						
							|  |  |  |         assertThat(status(result)).isEqualTo(OK);
 | 
					
						
							|  |  |  |         JsonNode propertiesNode = Json.parse(contentAsString(result));
 | 
					
						
							|  |  |  |         assertThat(propertiesNode.isContainerNode());
 | 
					
						
							|  |  |  |         assertThat(propertiesNode.get("status").asText()).isEqualTo("ok");
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         result = controllers.api.v1.Dataset.getDatasetImpactAnalysisByID(datasetId);
 | 
					
						
							|  |  |  |         assertThat(status(result)).isEqualTo(OK);
 | 
					
						
							|  |  |  |         JsonNode impactsNode = Json.parse(contentAsString(result));
 | 
					
						
							|  |  |  |         assertThat(impactsNode.isContainerNode());
 | 
					
						
							|  |  |  |         assertThat(impactsNode.get("status").asText()).isEqualTo("ok");
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         result = controllers.api.v1.Dataset.getDatasetSampleDataByID(datasetId);
 | 
					
						
							|  |  |  |         assertThat(status(result)).isEqualTo(OK);
 | 
					
						
							|  |  |  |         JsonNode sampleNode = Json.parse(contentAsString(result));
 | 
					
						
							|  |  |  |         assertThat(sampleNode.isContainerNode());
 | 
					
						
							| 
									
										
										
										
											2016-02-02 05:30:57 -08:00
										 |  |  |         //assertThat(sampleNode.get("status").asText()).isEqualTo("ok");
 | 
					
						
							| 
									
										
										
										
											2016-07-18 10:58:10 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-24 10:14:47 -08:00
										 |  |  |         result = controllers.api.v1.Dataset.getDatasetInstances(datasetId.longValue());
 | 
					
						
							| 
									
										
										
										
											2016-07-25 17:19:12 -07:00
										 |  |  |         assertThat(status(result)).isEqualTo(OK);
 | 
					
						
							|  |  |  |         JsonNode instanceNode = Json.parse(contentAsString(result));
 | 
					
						
							|  |  |  |         assertThat(instanceNode.isContainerNode());
 | 
					
						
							|  |  |  |         assertThat(instanceNode.get("status").asText()).isEqualTo("ok");
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-24 10:14:47 -08:00
										 |  |  |         result = controllers.api.v1.Dataset.getDatasetVersions(datasetId.longValue(), DB_ID);
 | 
					
						
							| 
									
										
										
										
											2016-07-18 10:58:10 -07:00
										 |  |  |         assertThat(status(result)).isEqualTo(OK);
 | 
					
						
							|  |  |  |         JsonNode versionNode = Json.parse(contentAsString(result));
 | 
					
						
							|  |  |  |         assertThat(versionNode.isContainerNode());
 | 
					
						
							|  |  |  |         assertThat(versionNode.get("status").asText()).isEqualTo("ok");
 | 
					
						
							| 
									
										
										
										
											2016-07-19 10:48:38 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-24 10:14:47 -08:00
										 |  |  |         result = controllers.api.v1.Dataset.getReferenceViews(datasetId.longValue());
 | 
					
						
							| 
									
										
										
										
											2016-07-19 10:48:38 -07:00
										 |  |  |         assertThat(status(result)).isEqualTo(OK);
 | 
					
						
							| 
									
										
										
										
											2016-07-22 16:06:24 -07:00
										 |  |  |         JsonNode referenceNode = Json.parse(contentAsString(result));
 | 
					
						
							|  |  |  |         assertThat(referenceNode.isContainerNode());
 | 
					
						
							|  |  |  |         assertThat(referenceNode.get("status").asText()).isEqualTo("ok");
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-24 10:14:47 -08:00
										 |  |  |         result = controllers.api.v1.Dataset.getDependViews(datasetId.longValue());
 | 
					
						
							| 
									
										
										
										
											2016-07-22 16:06:24 -07:00
										 |  |  |         assertThat(status(result)).isEqualTo(OK);
 | 
					
						
							|  |  |  |         JsonNode dependsNode = Json.parse(contentAsString(result));
 | 
					
						
							|  |  |  |         assertThat(dependsNode.isContainerNode());
 | 
					
						
							|  |  |  |         assertThat(dependsNode.get("status").asText()).isEqualTo("ok");
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-24 10:14:47 -08:00
										 |  |  |         result = controllers.api.v1.Dataset.getDatasetSchemaTextByVersion(datasetId.longValue(), "0.0.1");
 | 
					
						
							| 
									
										
										
										
											2016-07-22 16:06:24 -07:00
										 |  |  |         assertThat(status(result)).isEqualTo(OK);
 | 
					
						
							|  |  |  |         JsonNode schemaTextNode = Json.parse(contentAsString(result));
 | 
					
						
							|  |  |  |         assertThat(schemaTextNode.isContainerNode());
 | 
					
						
							|  |  |  |         assertThat(schemaTextNode.get("status").asText()).isEqualTo("ok");
 | 
					
						
							| 
									
										
										
										
											2016-08-09 11:34:46 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-24 10:14:47 -08:00
										 |  |  |         result = controllers.api.v1.Dataset.getDatasetAccess(datasetId.longValue());
 | 
					
						
							| 
									
										
										
										
											2016-08-09 11:34:46 -07:00
										 |  |  |         assertThat(status(result)).isEqualTo(OK);
 | 
					
						
							|  |  |  |         JsonNode accessNode = Json.parse(contentAsString(result));
 | 
					
						
							|  |  |  |         assertThat(accessNode.isContainerNode());
 | 
					
						
							|  |  |  |         assertThat(accessNode.get("status").asText()).isEqualTo("ok");
 | 
					
						
							| 
									
										
										
										
											2015-11-19 14:39:21 -08:00
										 |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-02 05:30:57 -08:00
										 |  |  |     /*
 | 
					
						
							| 
									
										
										
										
											2015-11-19 14:39:21 -08:00
										 |  |  |     @Ignore("need config") @Test
 | 
					
						
							|  |  |  |     public void testMetric()
 | 
					
						
							|  |  |  |     {
 | 
					
						
							|  |  |  |         Result result = controllers.api.v1.Metric.getPagedMetrics();
 | 
					
						
							|  |  |  |         assertThat(status(result)).isEqualTo(OK);
 | 
					
						
							|  |  |  |         JsonNode node = Json.parse(contentAsString(result));
 | 
					
						
							|  |  |  |         assertThat(node.isContainerNode());
 | 
					
						
							|  |  |  |         assertThat(node.get("status").asText()).isEqualTo("ok");
 | 
					
						
							|  |  |  |         JsonNode dataNode = node.get("data");
 | 
					
						
							|  |  |  |         assertThat(dataNode.isContainerNode());
 | 
					
						
							|  |  |  |         long count = dataNode.get("count").asLong();
 | 
					
						
							|  |  |  |         assertThat(count > 0);
 | 
					
						
							|  |  |  |         JsonNode metricsNode = dataNode.get("metrics");
 | 
					
						
							|  |  |  |         assertThat(metricsNode.isArray());
 | 
					
						
							|  |  |  |         JsonNode firstMetricNode = ((ArrayNode) metricsNode).get(0);
 | 
					
						
							|  |  |  |         assertThat(firstMetricNode.isContainerNode());
 | 
					
						
							|  |  |  |         int metricId = firstMetricNode.get("id").asInt();
 | 
					
						
							|  |  |  |         String name = firstMetricNode.get("dashboardName").asText();
 | 
					
						
							|  |  |  |         assertThat(metricId > 0);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         result = controllers.api.v1.Metric.getMetricByID(metricId);
 | 
					
						
							|  |  |  |         assertThat(status(result)).isEqualTo(OK);
 | 
					
						
							|  |  |  |         JsonNode metricNode = Json.parse(contentAsString(result));
 | 
					
						
							|  |  |  |         assertThat(metricNode.isContainerNode());
 | 
					
						
							|  |  |  |         assertThat(metricNode.get("status").asText()).isEqualTo("ok");
 | 
					
						
							|  |  |  |         JsonNode detailNode = metricNode.get("metric");
 | 
					
						
							|  |  |  |         assertThat(detailNode.isContainerNode());
 | 
					
						
							|  |  |  |         String dashboardName = detailNode.get("dashboardName").asText();
 | 
					
						
							|  |  |  |         assertThat(dashboardName.equals(name));
 | 
					
						
							|  |  |  |     }
 | 
					
						
							| 
									
										
										
										
											2016-02-02 05:30:57 -08:00
										 |  |  |     */
 | 
					
						
							| 
									
										
										
										
											2015-11-19 14:39:21 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     @Ignore("need config") @Test
 | 
					
						
							|  |  |  |     public void testFlow()
 | 
					
						
							|  |  |  |     {
 | 
					
						
							| 
									
										
										
										
											2016-02-28 01:28:31 -08:00
										 |  |  |         Result result = controllers.api.v1.Flow.getPagedProjects("AZKABAN-SAMPLE");
 | 
					
						
							| 
									
										
										
										
											2015-11-19 14:39:21 -08:00
										 |  |  |         assertThat(status(result)).isEqualTo(OK);
 | 
					
						
							|  |  |  |         JsonNode node = Json.parse(contentAsString(result));
 | 
					
						
							|  |  |  |         assertThat(node.isContainerNode());
 | 
					
						
							|  |  |  |         assertThat(node.get("status").asText()).isEqualTo("ok");
 | 
					
						
							|  |  |  |         JsonNode dataNode = node.get("data");
 | 
					
						
							|  |  |  |         assertThat(dataNode.isContainerNode());
 | 
					
						
							|  |  |  |         long count = dataNode.get("count").asLong();
 | 
					
						
							|  |  |  |         assertThat(count > 0);
 | 
					
						
							|  |  |  |         JsonNode projectsNode = dataNode.get("projects");
 | 
					
						
							|  |  |  |         assertThat(projectsNode.isArray());
 | 
					
						
							|  |  |  |         JsonNode firstProjectNode = ((ArrayNode) projectsNode).get(0);
 | 
					
						
							|  |  |  |         assertThat(firstProjectNode.isContainerNode());
 | 
					
						
							|  |  |  |         String name = firstProjectNode.get("name").asText();
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-28 01:28:31 -08:00
										 |  |  |         result = controllers.api.v1.Flow.getPagedFlows("AZKABAN-SAMPLE", name);
 | 
					
						
							| 
									
										
										
										
											2015-11-19 14:39:21 -08:00
										 |  |  |         assertThat(status(result)).isEqualTo(OK);
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @Ignore("need config") @Test
 | 
					
						
							|  |  |  |     public void testScriptFinder()
 | 
					
						
							|  |  |  |     {
 | 
					
						
							|  |  |  |         Result result = controllers.api.v1.ScriptFinder.getScripts();
 | 
					
						
							|  |  |  |         assertThat(status(result)).isEqualTo(OK);
 | 
					
						
							|  |  |  |         JsonNode node = Json.parse(contentAsString(result));
 | 
					
						
							|  |  |  |         assertThat(node.isContainerNode());
 | 
					
						
							|  |  |  |         assertThat(node.get("status").asText()).isEqualTo("ok");
 | 
					
						
							|  |  |  |         JsonNode dataNode = node.get("data");
 | 
					
						
							|  |  |  |         assertThat(dataNode.isContainerNode());
 | 
					
						
							|  |  |  |         long count = dataNode.get("count").asLong();
 | 
					
						
							|  |  |  |         assertThat(count > 0);
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @Ignore("need config") @Test
 | 
					
						
							|  |  |  |     public void testSchemaHistory()
 | 
					
						
							|  |  |  |     {
 | 
					
						
							|  |  |  |         Result result = controllers.api.v1.SchemaHistory.getPagedDatasets();
 | 
					
						
							|  |  |  |         assertThat(status(result)).isEqualTo(OK);
 | 
					
						
							|  |  |  |         JsonNode node = Json.parse(contentAsString(result));
 | 
					
						
							|  |  |  |         assertThat(node.isContainerNode());
 | 
					
						
							|  |  |  |         assertThat(node.get("status").asText()).isEqualTo("ok");
 | 
					
						
							|  |  |  |         JsonNode dataNode = node.get("data");
 | 
					
						
							|  |  |  |         assertThat(dataNode.isContainerNode());
 | 
					
						
							|  |  |  |         long count = dataNode.get("count").asLong();
 | 
					
						
							|  |  |  |         assertThat(count > 0);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         JsonNode datasetsNode = dataNode.get("datasets");
 | 
					
						
							|  |  |  |         assertThat(datasetsNode.isArray());
 | 
					
						
							|  |  |  |         JsonNode firstDatasetNode = ((ArrayNode) datasetsNode).get(0);
 | 
					
						
							|  |  |  |         assertThat(firstDatasetNode.isContainerNode());
 | 
					
						
							|  |  |  |         int datasetId = firstDatasetNode.get("id").asInt();
 | 
					
						
							|  |  |  |         assertThat(datasetId > 0);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         result = controllers.api.v1.SchemaHistory.getSchemaHistory(datasetId);
 | 
					
						
							|  |  |  |         assertThat(status(result)).isEqualTo(OK);
 | 
					
						
							|  |  |  |         JsonNode historyNode = Json.parse(contentAsString(result));
 | 
					
						
							|  |  |  |         assertThat(historyNode.isContainerNode());
 | 
					
						
							|  |  |  |         assertThat(historyNode.get("status").asText()).isEqualTo("ok");
 | 
					
						
							|  |  |  |         JsonNode historyDataNode = node.get("data");
 | 
					
						
							|  |  |  |         assertThat(historyDataNode.isArray());
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @AfterClass
 | 
					
						
							|  |  |  |     public static void stopApp() {
 | 
					
						
							|  |  |  |         stop(app);
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | }
 |