Skip to content

Commit

Permalink
Test for plain text body and fix queryparameter attribute name
Browse files Browse the repository at this point in the history
  • Loading branch information
osvaldjr committed Sep 5, 2019
1 parent fb54af9 commit b240cc8
Showing 13 changed files with 107 additions and 16 deletions.
Original file line number Diff line number Diff line change
@@ -13,5 +13,5 @@ public class TargetRequest<T> {
private String url;
private T body;
private Map<String, String> headers;
private Map<String, String> queryParameters;
private Map<String, String> queryParams;
}
Original file line number Diff line number Diff line change
@@ -6,6 +6,7 @@
import org.springframework.stereotype.Component;

import gherkin.deps.com.google.gson.Gson;
import io.github.osvaldjr.domains.StubbyRequest;
import io.github.osvaldjr.gateways.mock.stubby.jsons.StubbyJsonRequest;
import io.github.osvaldjr.gateways.mock.stubby.jsons.StubbyRequestBody;
import io.github.osvaldjr.gateways.mock.stubby.jsons.StubbyResponseBody;
@@ -32,12 +33,19 @@ private StubbyResponseBody buildResponseBody(ResponseBody stubbyResponseBody) {
}

private StubbyRequestBody buildRequest(RequestBody stubbyRequestBody) {
return StubbyRequestBody.builder()
.headers(stubbyRequestBody.getHeaders())
.json(gson.toJson(stubbyRequestBody.getBody()))
.method(stubbyRequestBody.getMethod())
.query(stubbyRequestBody.getQueryParams())
.url(stubbyRequestBody.getUrl())
.build();

StubbyRequestBody.StubbyRequestBodyBuilder builder =
StubbyRequestBody.builder()
.headers(stubbyRequestBody.getHeaders())
.method(stubbyRequestBody.getMethod())
.query(stubbyRequestBody.getQueryParams())
.url(stubbyRequestBody.getUrl());
if (StubbyRequest.BodyType.RAW == stubbyRequestBody.getBodyType()) {
builder.post(stubbyRequestBody.getBody().toString());
} else {
builder.json(gson.toJson(stubbyRequestBody.getBody()));
}

return builder.build();
}
}
Original file line number Diff line number Diff line change
@@ -44,7 +44,7 @@ public ResponseEntity execute(TargetRequest request) {

ResponseEntity response;
Map<String, String> headersMap = getMapOfNullable(request.getHeaders());
Map<String, String> queryParametersMap = getMapOfNullable(request.getQueryParameters());
Map<String, String> queryParametersMap = getMapOfNullable(request.getQueryParams());

HttpMethod httpMethod = HttpMethod.valueOf(request.getMethod());

Original file line number Diff line number Diff line change
@@ -15,6 +15,7 @@ public class CustomExceptionHandler {
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
@ResponseBody
public ErrorResponse handleException(Exception exception) {
exception.printStackTrace();
return ErrorResponse.build(ErrorResponse.INTERNAL_SERVER_ERROR);
}
}
Original file line number Diff line number Diff line change
@@ -14,6 +14,7 @@
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import io.github.osvaldjr.integration.gateways.feign.IntegrationClient;
@@ -78,4 +79,12 @@ public ResponseEntity<Object> patch(
@ApiParam(value = "headers") @RequestHeader Map<String, String> headers) {
return client.patch(body, headers);
}

@ApiOperation(value = "post/plain")
@PostMapping(path = "/post/plain")
public ResponseEntity<Object> postPlain(
@ApiParam(value = "myParam") @RequestParam String myParam,
@ApiParam(value = "headers") @RequestHeader Map<String, String> headers) {
return client.post("myParam=" + myParam, headers);
}
}
Original file line number Diff line number Diff line change
@@ -5,6 +5,9 @@
import static org.hamcrest.Matchers.notNullValue;
import static org.hamcrest.Matchers.nullValue;

import java.util.HashMap;
import java.util.Map;

import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;

@@ -26,6 +29,10 @@ void shouldAssembleRequestCorrectly(
@Random StubbyRequest.RequestBody requestBody,
@Random StubbyRequest.ResponseBody responseBody) {
Gson gson = new Gson();
Map<String, String> map = new HashMap<>();
map.put("key", "value");
requestBody.setBody(map);
requestBody.setBodyType(StubbyRequest.BodyType.JSON);

StubbyJsonRequest stubbyJsonRequest =
stubbyRequestAssembler.assemble(requestBody, responseBody);
@@ -39,6 +46,32 @@ void shouldAssembleRequestCorrectly(
assertThat(request.getUrl(), equalTo(requestBody.getUrl()));
assertThat(request.getJson(), equalTo(gson.toJson(requestBody.getBody())));
assertThat(request.getPost(), nullValue());

StubbyResponseBody response = stubbyJsonRequest.getResponse();
assertThat(response, notNullValue());
assertThat(response.getHeaders(), equalTo(responseBody.getHeaders()));
assertThat(response.getStatus(), equalTo(responseBody.getStatus()));
assertThat(response.getBody(), equalTo(responseBody.getBody()));
}

@Test
void shouldAssembleRequestCorrectlyWithPlainText(
@Random StubbyRequest.RequestBody requestBody,
@Random StubbyRequest.ResponseBody responseBody) {
requestBody.setBodyType(StubbyRequest.BodyType.RAW);

StubbyJsonRequest stubbyJsonRequest =
stubbyRequestAssembler.assemble(requestBody, responseBody);

assertThat(stubbyJsonRequest, notNullValue());
StubbyRequestBody request = stubbyJsonRequest.getRequest();
assertThat(request, notNullValue());
assertThat(request.getHeaders(), equalTo(requestBody.getHeaders()));
assertThat(request.getMethod(), equalTo(requestBody.getMethod()));
assertThat(request.getQuery(), equalTo(requestBody.getQueryParams()));
assertThat(request.getUrl(), equalTo(requestBody.getUrl()));
assertThat(request.getJson(), nullValue());
assertThat(request.getPost().toString(), equalTo(requestBody.getBody().toString()));
StubbyResponseBody response = stubbyJsonRequest.getResponse();
assertThat(response, notNullValue());
assertThat(response.getHeaders(), equalTo(responseBody.getHeaders()));
Original file line number Diff line number Diff line change
@@ -44,7 +44,7 @@ void shouldExecuteGet(
targetRequest.getHost(),
targetRequest.getUrl(),
targetRequest.getHeaders(),
targetRequest.getQueryParameters()))
targetRequest.getQueryParams()))
.thenReturn(responseEntity);

ResponseEntity response = requestTargetUseCase.execute(targetRequest);
@@ -65,7 +65,7 @@ void shouldExecutePost(
targetRequest.getUrl(),
body,
targetRequest.getHeaders(),
targetRequest.getQueryParameters()))
targetRequest.getQueryParams()))
.thenReturn(responseEntity);

ResponseEntity response = requestTargetUseCase.execute(targetRequest);
@@ -86,7 +86,7 @@ void shouldExecutePut(
targetRequest.getUrl(),
body,
targetRequest.getHeaders(),
targetRequest.getQueryParameters()))
targetRequest.getQueryParams()))
.thenReturn(responseEntity);

ResponseEntity response = requestTargetUseCase.execute(targetRequest);
@@ -109,7 +109,7 @@ void shouldExecuteDelete(
targetRequest.getUrl(),
body,
targetRequest.getHeaders(),
targetRequest.getQueryParameters()))
targetRequest.getQueryParams()))
.thenReturn(responseEntity);

ResponseEntity response = requestTargetUseCase.execute(targetRequest);
@@ -175,7 +175,7 @@ void shouldExecutePatch(
targetRequest.getUrl(),
body,
targetRequest.getHeaders(),
targetRequest.getQueryParameters()))
targetRequest.getQueryParams()))
.thenReturn(responseEntity);

ResponseEntity response = requestTargetUseCase.execute(targetRequest);
3 changes: 2 additions & 1 deletion src/test/resources/application.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
server.port: 9000
logging:
level:
io.github.osvaldjr.gateways.feign.IntegrationClient: FULL
io.github.osvaldjr.gateways.feign.IntegrationClient: DEBUG
io.github.osvaldjr.integration: DEBUG
feign:
client:
config:
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"url": "/test/post/plain",
"method": "POST",
"queryParams": {
"myParam": "123"
},
"body": {
"key": "value"
},
"headers": {
"Content-Type": "application/x-www-form-urlencoded"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"url": "/post",
"method": "POST",
"body": "myParam=123",
"headers": {
"Content-Type": "application/x-www-form-urlencoded"
},
"queryParams": {},
"bodyType": "RAW"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"headers": {
"content-type": "application/json"
},
"status": 200,
"body": {
"name": "Linux",
"developer": true,
"year": 2000
}
}
5 changes: 5 additions & 0 deletions src/test/resources/features/integration.feature
Original file line number Diff line number Diff line change
@@ -62,3 +62,8 @@ Feature: Integration
Given I have a mock http_patch_successful for dependency integration
When I make a request defined in http_patch_defined_body_request.json
Then I expect to receive a 200 status

Scenario: Validate a default steps with request defined with plain text body
Given I have a mock http_plaintext_body_successful for dependency integration
When I make a request defined in http_plaintext_body_defined_body_request.json
Then I expect to receive a 200 status
2 changes: 1 addition & 1 deletion src/test/resources/features/security.feature
Original file line number Diff line number Diff line change
@@ -14,7 +14,7 @@ Feature: Security
And I generate the proxy session
Then the number of risks per category should not be greater than
| low | medium | high | informational |
| 5 | 0 | 0 | 0 |
| 6 | 0 | 0 | 0 |

Scenario: Validate active scan
Given I remove all alerts

0 comments on commit b240cc8

Please sign in to comment.