package com.griddynamics.jagger.test.jaas.provider; import com.griddynamics.jagger.engine.e1.services.data.service.MetricEntity; import com.griddynamics.jagger.engine.e1.services.data.service.SessionEntity; import com.griddynamics.jagger.engine.e1.services.data.service.TestEntity; import com.griddynamics.jagger.invoker.v2.JHttpQuery; import com.griddynamics.jagger.test.jaas.util.TestContext; import com.griddynamics.jagger.test.jaas.util.entity.ExecutionEntity; import java.util.Collections; import java.util.Map; import java.util.function.Function; import java.util.stream.Stream; public class QueryProvider { private final String sessions_uri; private final String tests_uri; private String HDR_CONTENT_TYPE = "Content-Type"; private String HDR_CONTENT_TYPE_VALUE_APP_JSON = "application/json"; private Function<String, String> getPropertyValue; private String executions_uri; public QueryProvider(Function<String, String> getPropertyValue) { this.getPropertyValue = getPropertyValue; sessions_uri = TestContext.getSessionsUri(); tests_uri = TestContext.getTestsUri(); executions_uri = TestContext.getExecutionsUri(); } private String getValue(String key) { return getPropertyValue.apply(key); } public Iterable GET_SessionsList() { return () -> Collections.singletonList(new JHttpQuery<String>().get().responseBodyType(SessionEntity[].class).path(sessions_uri)).iterator(); } public Iterable GET_SessionIds() { return () -> TestContext .getSessions() .stream() .map(s -> new JHttpQuery<String>() .get().responseBodyType(SessionEntity.class).path(sessions_uri + "/" + s.getId())) .iterator(); } public Iterable GET_TestsList() { return () -> Collections.singletonList(new JHttpQuery<String>() .get().responseBodyType(TestEntity[].class) .path(sessions_uri + "/" + getSessionId() + tests_uri)) .iterator(); } public Iterable GET_TestNames() { return () -> TestContext.getTestsBySessionId(getSessionId()) .stream().map(t -> new JHttpQuery<String>() .get().responseBodyType(TestEntity.class) .path(sessions_uri + "/" + getSessionId() + tests_uri + "/" + t.getName())) .iterator(); } public Iterable GET_TestMetrics() { return () -> Collections.singletonList(new JHttpQuery<String>() .get().responseBodyType(MetricEntity[].class) .path(getMetricPath())).iterator(); } public Iterable GET_MetricSummary() { return () -> Collections.singletonList(new JHttpQuery<String>() .get().responseBodyType(Map.class) .path(getMetricPath() + getValue("jaas.rest.sub.tests.metrics_summary"))) .iterator(); } public Iterable GET_MetricPlotData() { return () -> Collections.singletonList(new JHttpQuery<String>() .get().responseBodyType(Map.class) .path(getMetricPath() + getValue("jaas.rest.sub.tests.metrics_plot_data"))) .iterator(); } private String getMetricPath() { return sessions_uri + "/" + getSessionId() + tests_uri + "/" + TestContext.getMetrics().get(getSessionId()).keySet().toArray(new String[]{})[0] + getValue("jaas.rest.sub.tests.metrics"); } private String getSessionId() { return (TestContext.getTests().keySet().toArray(new String[]{}))[0]; } public Iterable POST_execution() { return () -> Collections.singletonList(new JHttpQuery<String>() .post() .header(HDR_CONTENT_TYPE, HDR_CONTENT_TYPE_VALUE_APP_JSON) .body(TestContext.getExecutionConfigPrototype()) .responseBodyType(ExecutionEntity.class) .path(executions_uri)) .iterator(); } public Iterable GET_ExList() { return () -> Collections.singletonList(new JHttpQuery<String>() .get().responseBodyType(ExecutionEntity[].class).queryParam("envId", "envId").path(executions_uri)) .iterator(); } public Iterable GET_ExId() { return () -> TestContext.getCreatedExecutionIds().stream() .map(id -> new JHttpQuery<String>() .get().responseBodyType(ExecutionEntity.class) .path(executions_uri + "/" + id)) .iterator(); } public Iterable GET_NonNumeric_ExId() { return () -> Stream.of("/abvgdeyka", "/ABVGD") .map(q -> new JHttpQuery<String>() .get().responseBodyType(String.class).path(executions_uri + q)) .iterator(); } public Iterable GET_NonExisting_ExId() { return () -> Stream.of(Integer.MAX_VALUE, Integer.MIN_VALUE) .map(q -> new JHttpQuery<String>() .get().responseBodyType(String.class).path(executions_uri + "/" + q)) .iterator(); } public Iterable DELETE_Execution() { return () -> TestContext.getCreatedExecutionIds().stream() .map(id -> new JHttpQuery<String>() .delete().path(executions_uri + "/" + id)) .iterator(); } public Iterable GET_Deleted_Ex() { return () -> Collections.singletonList(new JHttpQuery<String>() .get().path(executions_uri + "/" + TestContext.getFirstRemovedExecution())) .iterator(); } }