You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dlab.apache.org by bh...@apache.org on 2019/12/10 13:37:59 UTC

[incubator-dlab] 01/01: DLAB-000 integration tests updated

This is an automated email from the ASF dual-hosted git repository.

bhliva pushed a commit to branch feature-integration-tests
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git

commit aaa2c248a1c6ae0de1a9f68e08d439608c0915af
Author: bhliva <bo...@epam.com>
AuthorDate: Tue Dec 10 15:36:53 2019 +0200

    DLAB-000 integration tests updated
---
 .../java/org/apache/dlab/util/PropertyHelper.java  |  2 +
 .../src/test/java/dlab/Constants.java              |  4 +-
 .../src/test/java/dlab/endpoint/EndpointSteps.java |  6 ++-
 .../src/test/java/dlab/login/LoginSteps.java       | 44 ----------------------
 .../src/test/java/dlab/util/KeycloakUtil.java      | 38 +++++++++++++++++++
 .../src/test/resources/config.properties           |  9 ++++-
 .../src/test/resources/dlab/login.feature          | 12 ------
 7 files changed, 54 insertions(+), 61 deletions(-)

diff --git a/integration-tests-cucumber/src/main/java/org/apache/dlab/util/PropertyHelper.java b/integration-tests-cucumber/src/main/java/org/apache/dlab/util/PropertyHelper.java
index 48d7cca..6b4a60a 100644
--- a/integration-tests-cucumber/src/main/java/org/apache/dlab/util/PropertyHelper.java
+++ b/integration-tests-cucumber/src/main/java/org/apache/dlab/util/PropertyHelper.java
@@ -2,6 +2,7 @@ package org.apache.dlab.util;
 
 import java.io.FileInputStream;
 import java.io.InputStream;
+import java.util.Optional;
 import java.util.Properties;
 
 public class PropertyHelper {
@@ -10,6 +11,7 @@ public class PropertyHelper {
 
 	static {
 		PROPERTIES = new Properties();
+
 		try (InputStream inputStream = new FileInputStream(System.getProperty("config.file"))) {
 			PROPERTIES.load(inputStream);
 		} catch (Exception e) {
diff --git a/integration-tests-cucumber/src/test/java/dlab/Constants.java b/integration-tests-cucumber/src/test/java/dlab/Constants.java
index 4e30e99..a27ed77 100644
--- a/integration-tests-cucumber/src/test/java/dlab/Constants.java
+++ b/integration-tests-cucumber/src/test/java/dlab/Constants.java
@@ -1,5 +1,7 @@
 package dlab;
 
+import org.apache.dlab.util.PropertyHelper;
+
 public interface Constants {
-	String API_URI = "https://localhost:8443/api/";
+	String API_URI = PropertyHelper.read("dlab.api.base.uri");
 }
diff --git a/integration-tests-cucumber/src/test/java/dlab/endpoint/EndpointSteps.java b/integration-tests-cucumber/src/test/java/dlab/endpoint/EndpointSteps.java
index e66fc33..ef0dc79 100644
--- a/integration-tests-cucumber/src/test/java/dlab/endpoint/EndpointSteps.java
+++ b/integration-tests-cucumber/src/test/java/dlab/endpoint/EndpointSteps.java
@@ -7,9 +7,11 @@ import cucumber.api.java.en.And;
 import cucumber.api.java.en.Given;
 import cucumber.api.java.en.Then;
 import cucumber.api.java.en.When;
+import dlab.util.KeycloakUtil;
 import org.apache.dlab.dto.EndpointDTO;
 import org.apache.dlab.mongo.MongoDBHelper;
 import org.apache.dlab.util.JacksonMapper;
+import org.keycloak.admin.client.KeycloakBuilder;
 
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -29,7 +31,7 @@ public class EndpointSteps {
 		this.name = name;
 		request = given().body(JacksonMapper.marshall(new EndpointDTO(name, uri, account, tag)))
 				.auth()
-				.oauth2("token123")
+				.oauth2(KeycloakUtil.getToken())
 				.contentType(ContentType.JSON);
 
 	}
@@ -92,6 +94,6 @@ public class EndpointSteps {
 	private RequestSpecification authenticatedRequest() {
 		return given()
 				.auth()
-				.oauth2("token123");
+				.oauth2(KeycloakUtil.getToken());
 	}
 }
diff --git a/integration-tests-cucumber/src/test/java/dlab/login/LoginSteps.java b/integration-tests-cucumber/src/test/java/dlab/login/LoginSteps.java
deleted file mode 100644
index 32b29cb..0000000
--- a/integration-tests-cucumber/src/test/java/dlab/login/LoginSteps.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package dlab.login;
-
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.response.Response;
-import com.jayway.restassured.specification.RequestSpecification;
-import cucumber.api.java.en.Given;
-import cucumber.api.java.en.Then;
-import cucumber.api.java.en.When;
-import gherkin.deps.com.google.gson.JsonObject;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-
-import static com.jayway.restassured.RestAssured.given;
-import static dlab.Constants.API_URI;
-import static org.hamcrest.core.IsEqual.equalTo;
-import static org.junit.Assert.assertThat;
-
-public class LoginSteps {
-
-
-	private static final String LOGIN_RESOURCE_PATH = API_URI + "user/login";
-	private RequestSpecification request;
-	private Response response;
-
-	@Given("User try to login to Dlab with {string} and {string}")
-	public void userProvidedLoginAndPassword(String username, String password) {
-		JsonObject jsonObject = new JsonObject();
-		jsonObject.addProperty("username", username);
-		jsonObject.addProperty("password", password);
-		request = given().body(jsonObject.toString()).contentType(ContentType.JSON);
-	}
-
-	@When("user try to login")
-	public void userTryToLogin() throws URISyntaxException {
-		response = request.post(new URI(LOGIN_RESOURCE_PATH));
-	}
-
-	@Then("response code is {string}")
-	public void responseCodeIs(String status) {
-		assertThat(response.getStatusCode(), equalTo(Integer.valueOf(status)));
-
-	}
-}
diff --git a/integration-tests-cucumber/src/test/java/dlab/util/KeycloakUtil.java b/integration-tests-cucumber/src/test/java/dlab/util/KeycloakUtil.java
new file mode 100644
index 0000000..0b4fe2c
--- /dev/null
+++ b/integration-tests-cucumber/src/test/java/dlab/util/KeycloakUtil.java
@@ -0,0 +1,38 @@
+package dlab.util;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import org.apache.dlab.util.PropertyHelper;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static com.jayway.restassured.RestAssured.given;
+
+public class KeycloakUtil {
+
+	@Getter
+	@NoArgsConstructor
+	@JsonIgnoreProperties(ignoreUnknown = true)
+	private static class KeyckloakResponse {
+		@JsonProperty("access_token")
+		private String token;
+	}
+
+	public static final String TOKEN_URI = String.format("%s/realms/%s/protocol/openid-connect/token",
+			PropertyHelper.read("keycloak.serverUrl"), PropertyHelper.read("keycloak.realm"));
+
+	public static String getToken() {
+		return given().formParameters(getFormParams()).post(TOKEN_URI).getBody().as(KeyckloakResponse.class).getToken();
+	}
+
+	private static Map<String, ?> getFormParams() {
+		Map<String, String> params = new HashMap<>();
+		params.put("grant_type", "client_credentials");
+		params.put("client_id", PropertyHelper.read("keycloak.clientId"));
+		params.put("client_secret", PropertyHelper.read("keycloak.clientSecret"));
+		return params;
+	}
+}
diff --git a/integration-tests-cucumber/src/test/resources/config.properties b/integration-tests-cucumber/src/test/resources/config.properties
index 5cfad3c..49933a9 100644
--- a/integration-tests-cucumber/src/test/resources/config.properties
+++ b/integration-tests-cucumber/src/test/resources/config.properties
@@ -1,2 +1,7 @@
-mongo.connection.string=mongodb://localhost:27017/DLAB
-mongo.db.name=DLAB
\ No newline at end of file
+dlab.api.base.uri=<API_URI>
+mongo.connection.string=<MONGO_CONNECTION_STRING>
+mongo.db.name=<DB_NAME>
+keycloak.serverUrl=<KEYCLOAK_SERVER_URL>
+keycloak.realm=<REALM>
+keycloak.clientId=<KEYCLOAK_CLIENT_ID>
+keycloak.clientSecret=<KEYCLOAK_CLIENT_SECRET>
\ No newline at end of file
diff --git a/integration-tests-cucumber/src/test/resources/dlab/login.feature b/integration-tests-cucumber/src/test/resources/dlab/login.feature
deleted file mode 100644
index 493a51e..0000000
--- a/integration-tests-cucumber/src/test/resources/dlab/login.feature
+++ /dev/null
@@ -1,12 +0,0 @@
-Feature: DLab login API
-  Used to check DLab login flow
-
-  Scenario Outline: User try to login to DLab
-    Given User try to login to Dlab with "<username>" and "<password>"
-    When user try to login
-    Then response code is "<status>"
-
-    Examples:
-      | username       | password | status |
-      | test           | pass     | 200    |
-      | not_valid_user | pass     | 401    |
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org