Created
January 29, 2019 15:16
-
-
Save stephanoapiolaza/dd6bde1f679197720060a9c17ae36b77 to your computer and use it in GitHub Desktop.
Custom Extension Wiremock
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package cl.scotiabank.ms.signers.wiremock; | |
import java.nio.charset.StandardCharsets; | |
import com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder; | |
import com.github.tomakehurst.wiremock.common.BinaryFile; | |
import com.github.tomakehurst.wiremock.common.FileSource; | |
import com.github.tomakehurst.wiremock.extension.Parameters; | |
import com.github.tomakehurst.wiremock.extension.ResponseDefinitionTransformer; | |
import com.github.tomakehurst.wiremock.http.Request; | |
import com.github.tomakehurst.wiremock.http.ResponseDefinition; | |
public class ResponseArrayTransformer extends ResponseDefinitionTransformer { | |
private static final String TRANSFORMER_NAME = "response-array"; | |
@Override | |
public String getName() { | |
return TRANSFORMER_NAME; | |
} | |
@Override | |
public boolean applyGlobally() { | |
// by default all wiremock extension are globally, if not you must specify in transformer field | |
return Boolean.FALSE; | |
} | |
@Override | |
public ResponseDefinition transform(Request request, ResponseDefinition responseDefinition, FileSource files, | |
Parameters parameters) { | |
if (hasEmptyResponseBody(responseDefinition)) { | |
return responseDefinition; | |
} | |
String responseBody = getResponseBody(responseDefinition, files); | |
// Create response by matching request map and response body parametrized values | |
return ResponseDefinitionBuilder | |
.like(responseDefinition).but() | |
.withBodyFile(null) | |
// responseBody you can change it for something | |
.withBody(responseBody) | |
.build(); | |
} | |
private String getResponseBody(ResponseDefinition responseDefinition, FileSource fileSource) { | |
String body; | |
if (responseDefinition.getBody() != null) { | |
body = responseDefinition.getBody(); | |
} else { | |
BinaryFile binaryFile = fileSource.getBinaryFileNamed(responseDefinition.getBodyFileName()); | |
body = new String(binaryFile.readContents(), StandardCharsets.UTF_8); | |
} | |
return body; | |
} | |
private boolean hasEmptyResponseBody(ResponseDefinition responseDefinition) { | |
return responseDefinition.getBody() == null && responseDefinition.getBodyFileName() == null; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I am saving my code for another project, It needs javadoc and a light refactoring