/
StepDefinitions.java
93 lines (78 loc) · 3.32 KB
/
StepDefinitions.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package oas.example.petstore.broker.cucumber.glue.base;
import io.cucumber.java.en.And;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;
import io.github.ktakashi.oas.model.ApiConfiguration;
import io.github.ktakashi.oas.model.ApiData;
import io.github.ktakashi.oas.model.PluginDefinition;
import io.github.ktakashi.oas.model.PluginType;
import io.github.ktakashi.oas.test.OasStubTestResources;
import io.github.ktakashi.oas.test.OasStubTestService;
import io.restassured.RestAssured;
import io.restassured.filter.log.RequestLoggingFilter;
import io.restassured.filter.log.ResponseLoggingFilter;
import jakarta.inject.Inject;
import jakarta.inject.Singleton;
import oas.example.petstore.broker.cucumber.context.TestContext;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.util.UriComponentsBuilder;
import java.util.Map;
import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.jupiter.api.Assertions.assertEquals;
@Singleton
public class StepDefinitions {
static {
RestAssured.filters(new RequestLoggingFilter(), new ResponseLoggingFilter());
}
private final Integer localPort;
private final TestContext testContext = new TestContext();
@Inject
private OasStubTestService oasStubTestService;
public StepDefinitions(@Value("${local.server.port}") Integer localPort) {
this.localPort = localPort;
}
@Given("this pet is not found {long}")
public void thisPetIsNotFoundId(long id) {
var config = new ApiConfiguration().updatePlugin(new PluginDefinition(PluginType.GROOVY, OasStubTestResources.DEFAULT_PLUGIN_SCRIPT))
.updateData(new ApiData(Map.of("/v2/pets/" + id, new OasStubTestResources.DefaultResponseModel(404))));
oasStubTestService.getTestApiContext("petstore")
.updateApi("/v2/pets/" + id, config)
.save();
}
@When("I get pets")
public void iGetPets() {
var uri = UriComponentsBuilder.fromUriString(getApplicationUri())
.path("/broker/pets")
.build()
.toUri();
testContext.setResponse(given().get(uri));
}
@And("I buy a pet of {long}")
public void iBuyAPetOfId(long id) {
var uri = UriComponentsBuilder.fromUriString(getApplicationUri())
.path("/broker/buy/{id}")
.build(id);
testContext.setResponse(given().post(uri));
}
@Then("I get {int}")
public void iGetStatus(int status) {
testContext.getResponse().then().statusCode(status);
}
@And("I get order reference of {string}")
public void iGetOrderReferenceOfReference(String reference) {
testContext.getResponse().then().body("reference", equalTo(reference));
}
@And("I get order ID of {string}")
public void iGetOrderIDOfRandomUUIDInProd(String id) {
testContext.getResponse().then().body("id", equalTo(id));
}
@And("{string} API {string} is called {int} time(s)")
public void petstoreAPIVPetsIdIsCalledTime(String context, String api, int count) {
assertEquals(count, oasStubTestService.getTestApiMetrics(context).byPath(api).count());
}
private String getApplicationUri() {
return "http://localhost:" + localPort;
}
}