use of org.springframework.cloud.contract.spec.internal.ExecutionProperty in project spring-cloud-contract by spring-cloud.
the class JaxRsRequestMethodWhen method appendMethodAndBody.
void appendMethodAndBody(SingleContractMetadata metadata) {
Request request = metadata.getContract().getRequest();
ContentType type = metadata.getInputTestContentType();
String method = request.getMethod().getServerValue().toString().toLowerCase();
if (request.getBody() != null) {
String contentType = StringUtils.hasText(metadata.getDefinedInputTestContentType()) ? metadata.getDefinedInputTestContentType() : type.getMimeType();
Object body = request.getBody().getServerValue();
String value;
if (body instanceof ExecutionProperty) {
value = body.toString();
} else if (body instanceof FromFileProperty) {
FromFileProperty fileProperty = (FromFileProperty) body;
value = fileProperty.isByte() ? this.bodyReader.readBytesFromFileString(metadata, fileProperty, CommunicationType.REQUEST) : this.bodyReader.readStringFromFileString(metadata, fileProperty, CommunicationType.REQUEST);
} else {
value = "\"" + requestBodyAsString(metadata) + "\"";
}
this.blockBuilder.addIndented(".build(\"" + method.toUpperCase() + "\", entity(" + value + ", \"" + contentType + "\"))");
} else {
this.blockBuilder.addIndented(".build(\"" + method.toUpperCase() + "\")");
}
}
use of org.springframework.cloud.contract.spec.internal.ExecutionProperty in project spring-cloud-contract by spring-cloud.
the class JsonBodyVerificationBuilder method methodForCommandExecution.
@Override
public void methodForCommandExecution(BodyMatcher bodyMatcher, BlockBuilder bb, Object copiedBody) {
String path = quotedAndEscaped(bodyMatcher.path());
// assert that path exists
retrieveObjectByPath(copiedBody, bodyMatcher.path());
ExecutionProperty property = (ExecutionProperty) bodyMatcher.value();
bb.addLine(postProcessJsonPathCall.apply(property.insertValue("parsedJson.read(" + path + ")")));
addColonIfRequired(lineSuffix, bb);
}
use of org.springframework.cloud.contract.spec.internal.ExecutionProperty in project spring-cloud-contract by spring-cloud.
the class ContractsToYaml method mapRequestMultipart.
private void mapRequestMultipart(YamlContract.Request yamlContractRequest, Request request) {
Multipart multipart = request.getMultipart();
if (multipart != null) {
yamlContractRequest.multipart = new YamlContract.Multipart();
Map<String, Object> map = (Map<String, Object>) MapConverter.getTestSideValues(multipart);
map.forEach((key, value) -> {
if (value instanceof NamedProperty) {
Object fileName = Optional.ofNullable(((NamedProperty) value).getName()).map(DslProperty::getServerValue).orElse(null);
Object contentType = Optional.ofNullable(((NamedProperty) value).getContentType()).map(DslProperty::getServerValue).orElse(null);
Object fileContent = Optional.ofNullable(((NamedProperty) value).getValue()).map(DslProperty::getServerValue).orElse(null);
YamlContract.Named named = new YamlContract.Named();
named.paramName = key;
named.fileName = fileName instanceof String ? Optional.ofNullable(((NamedProperty) value).getName()).map(DslProperty::getServerValue).map(Object::toString).orElse(null) : null;
named.fileContent = (String) Optional.ofNullable(fileContent).filter(f -> f instanceof String).orElse(null);
named.fileContentAsBytes = fileContent instanceof FromFileProperty ? new String(((FromFileProperty) fileContent).asBytes()) : null;
named.fileContentFromFileAsBytes = resolveFileNameAsBytes(fileContent);
named.contentType = (String) Optional.ofNullable(contentType).filter(f -> f instanceof String).orElse(null);
named.fileNameCommand = fileName instanceof ExecutionProperty ? fileName.toString() : null;
named.fileContentCommand = fileContent instanceof ExecutionProperty ? fileContent.toString() : null;
named.contentTypeCommand = contentType instanceof ExecutionProperty ? contentType.toString() : null;
yamlContractRequest.multipart.named.add(named);
} else {
yamlContractRequest.multipart.params.put(key, value != null ? value.toString() : null);
}
});
}
}
use of org.springframework.cloud.contract.spec.internal.ExecutionProperty in project spring-cloud-contract by spring-cloud.
the class ContractsToYaml method setOutputHeadersMatchers.
protected void setOutputHeadersMatchers(Headers headers, List<YamlContract.TestHeaderMatcher> headerMatchers) {
Optional.ofNullable(headers).map(Headers::asTestSideMap).ifPresent(testSideMap -> testSideMap.forEach((key, value) -> {
if (value instanceof RegexProperty || value instanceof Pattern) {
RegexProperty property = new RegexProperty(value);
YamlContract.TestHeaderMatcher testHeaderMatcher = new YamlContract.TestHeaderMatcher();
testHeaderMatcher.key = key;
testHeaderMatcher.regex = property.pattern();
testHeaderMatcher.regexType = regexType(property.clazz());
headerMatchers.add(testHeaderMatcher);
} else if (value instanceof ExecutionProperty) {
YamlContract.TestHeaderMatcher testHeaderMatcher = new YamlContract.TestHeaderMatcher();
testHeaderMatcher.key = key;
testHeaderMatcher.command = ((ExecutionProperty) value).getExecutionCommand();
headerMatchers.add(testHeaderMatcher);
} else if (value instanceof NotToEscapePattern) {
YamlContract.TestHeaderMatcher testHeaderMatcher = new YamlContract.TestHeaderMatcher();
testHeaderMatcher.key = key;
testHeaderMatcher.regex = (((NotToEscapePattern) value).getServerValue()).pattern();
headerMatchers.add(testHeaderMatcher);
}
}));
}
use of org.springframework.cloud.contract.spec.internal.ExecutionProperty in project spring-cloud-contract by spring-cloud.
the class YamlToContracts method serverValue.
protected Object serverValue(Object value, YamlContract.TestHeaderMatcher matcher, String key) {
Object serverValue = value;
if (matcher != null && matcher.regex != null) {
serverValue = Pattern.compile(matcher.regex);
Pattern pattern = (Pattern) serverValue;
assertPatternMatched(pattern, value, key);
} else if (matcher != null && matcher.predefined != null) {
Pattern pattern = predefinedToPattern(matcher.predefined);
serverValue = pattern;
assertPatternMatched(pattern, value, key);
} else if (matcher != null && matcher.command != null) {
serverValue = new ExecutionProperty(matcher.command);
}
return serverValue;
}
Aggregations