Skip to content

Instantly share code, notes, and snippets.

@stephanoapiolaza
Created January 29, 2019 15:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stephanoapiolaza/dd6bde1f679197720060a9c17ae36b77 to your computer and use it in GitHub Desktop.
Save stephanoapiolaza/dd6bde1f679197720060a9c17ae36b77 to your computer and use it in GitHub Desktop.
Custom Extension Wiremock
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;
}
}
@stephanoapiolaza
Copy link
Author

I am saving my code for another project, It needs javadoc and a light refactoring

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment