blob: e66fc33aa1bbabf5f54362cc3feec2037810f253 [file] [log] [blame]
package dlab.endpoint;
import com.jayway.restassured.http.ContentType;
import com.jayway.restassured.response.Response;
import com.jayway.restassured.specification.RequestSpecification;
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 org.apache.dlab.dto.EndpointDTO;
import org.apache.dlab.mongo.MongoDBHelper;
import org.apache.dlab.util.JacksonMapper;
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.MatcherAssert.assertThat;
import static org.hamcrest.core.IsEqual.equalTo;
public class EndpointSteps {
private RequestSpecification request;
private Response response;
private String name;
@Given("User try to create new endpoint with name {string} and uri {string} and account {string} and {string}")
public void userTryToCreateNewEndpoint(String name, String uri, String account, String tag) {
this.name = name;
request = given().body(JacksonMapper.marshall(new EndpointDTO(name, uri, account, tag)))
.auth()
.oauth2("token123")
.contentType(ContentType.JSON);
}
@When("User send create new endpoint request")
public void userSendCreateNewEndpoint() {
response = request.post(API_URI + "endpoint");
}
@Given("There is no endpoints in DLab")
public void thereIsNoEndpointsInDLab() {
MongoDBHelper.cleanCollection("endpoints");
}
@Then("Response status code is {int}")
public void responseStatusCodeIs(int code) {
assertThat(response.getStatusCode(), equalTo(code));
}
@And("Endpoint URI is present in location header")
public void endpointURIIsPresentInLocationHeader() {
assertThat(response.getHeader("Location"), equalTo(API_URI + "endpoint/" + name));
}
@When("User try to get information about endpoint with name {string}")
public void userTryToGetInformationAboutEndpointWithName(String endpoint) throws URISyntaxException {
response = authenticatedRequest()
.get(new URI(API_URI + "endpoint/" + endpoint));
}
@And("Endpoint information is successfully returned with " +
"name {string}, uri {string}, account {string}, and tag {string}")
public void endpointInformationIsSuccessfullyReturnedWithNameUriAccountAndTag(String name, String uri,
String account, String tag) {
final EndpointDTO dto = response.getBody().as(EndpointDTO.class);
assertThat(dto.getAccount(), equalTo(account));
assertThat(dto.getName(), equalTo(name));
assertThat(dto.getUrl(), equalTo(uri));
assertThat(dto.getTag(), equalTo(tag));
}
@When("User try to get information about endpoints")
public void userTryToGetInformationAboutEndpoints() throws URISyntaxException {
response = authenticatedRequest()
.get(new URI(API_URI + "endpoint"));
}
@And("There are endpoints with name test1 and test2")
public void thereAreEndpointsWithNameTestAndTest() {
final EndpointDTO[] endpoints = response.getBody().as(EndpointDTO[].class);
assertThat(2, equalTo(endpoints.length));
assertThat("test1", equalTo(endpoints[0].getName()));
assertThat("test2", equalTo(endpoints[1].getName()));
}
private RequestSpecification authenticatedRequest() {
return given()
.auth()
.oauth2("token123");
}
}