Bumping versions

This commit is contained in:
buildmaster
2020-09-17 00:23:53 +00:00
parent 3a1e3c9640
commit ffd6574532
460 changed files with 3789 additions and 6477 deletions

View File

@@ -55,14 +55,11 @@ class FileSaver {
}
protected Path pathToClass(Path testBaseDir, String fileName) {
return Paths.get(testBaseDir.toString(), capitalize(fileName) + fileExtension)
.toAbsolutePath();
return Paths.get(testBaseDir.toString(), capitalize(fileName) + fileExtension).toAbsolutePath();
}
protected Path generateTestBaseDir(String basePackageClass,
String includedDirectoryRelativePath) {
Path testBaseDir = Paths.get(targetDirectory.getAbsolutePath(),
packageToDirectory(basePackageClass),
protected Path generateTestBaseDir(String basePackageClass, String includedDirectoryRelativePath) {
Path testBaseDir = Paths.get(targetDirectory.getAbsolutePath(), packageToDirectory(basePackageClass),
beforeLast(includedDirectoryRelativePath, File.separator));
try {
Files.createDirectories(testBaseDir);

View File

@@ -71,42 +71,36 @@ public class TestGenerator {
private final ContractFileScanner contractFileScanner;
public TestGenerator(ContractVerifierConfigProperties configProperties) {
this(configProperties, singleTestGenerator(),
new FileSaver(configProperties.getGeneratedTestSourcesDir(),
configProperties.getTestFramework().getClassExtension()));
this(configProperties, singleTestGenerator(), new FileSaver(configProperties.getGeneratedTestSourcesDir(),
configProperties.getTestFramework().getClassExtension()));
}
private static SingleTestGenerator singleTestGenerator() {
List<SingleTestGenerator> factories = SpringFactoriesLoader
.loadFactories(SingleTestGenerator.class, null);
List<SingleTestGenerator> factories = SpringFactoriesLoader.loadFactories(SingleTestGenerator.class, null);
if (factories.isEmpty()) {
return new JavaTestGenerator();
}
return factories.get(0);
}
public TestGenerator(ContractVerifierConfigProperties configProperties,
SingleTestGenerator generator, FileSaver saver) {
this(configProperties, generator, saver,
new ContractFileScannerBuilder()
.baseDir(configProperties.getContractsDslDir())
.excluded(toSet(configProperties.getExcludedFiles()))
.ignored(toSet(configProperties.getIgnoredFiles()))
.included(toSet(configProperties.getIncludedFiles()))
.includeMatcher(configProperties.getIncludedContracts()).build());
public TestGenerator(ContractVerifierConfigProperties configProperties, SingleTestGenerator generator,
FileSaver saver) {
this(configProperties, generator, saver, new ContractFileScannerBuilder()
.baseDir(configProperties.getContractsDslDir()).excluded(toSet(configProperties.getExcludedFiles()))
.ignored(toSet(configProperties.getIgnoredFiles())).included(toSet(configProperties.getIncludedFiles()))
.includeMatcher(configProperties.getIncludedContracts()).build());
}
private static Set<String> toSet(List<String> files) {
return Optional.ofNullable(files).map(HashSet::new).orElseGet(HashSet::new);
}
protected TestGenerator(ContractVerifierConfigProperties configProperties,
SingleTestGenerator generator, FileSaver saver,
ContractFileScanner contractFileScanner) {
protected TestGenerator(ContractVerifierConfigProperties configProperties, SingleTestGenerator generator,
FileSaver saver, ContractFileScanner contractFileScanner) {
this.configProperties = configProperties;
if (configProperties.getContractsDslDir() == null) {
throw new ContractVerifierException("Stubs directory not found under "
+ configProperties.getContractsDslDir());
throw new ContractVerifierException(
"Stubs directory not found under " + configProperties.getContractsDslDir());
}
this.generator = generator;
@@ -135,63 +129,51 @@ public class TestGenerator {
}
void generateTestClasses(final String basePackageName) {
MultiValueMap<Path, ContractMetadata> contracts = contractFileScanner
.findContractsRecursively();
MultiValueMap<Path, ContractMetadata> contracts = contractFileScanner.findContractsRecursively();
log.debug("Found the following contracts {}", contracts.keySet());
Set<Map.Entry<Path, List<ContractMetadata>>> inProgress = inProgress(contracts);
if (!inProgress.isEmpty() && configProperties.isFailOnInProgress()) {
String inProgressContractsPaths = inProgress.stream().map(Map.Entry::getKey)
.map(Path::toString).collect(Collectors.joining(","));
throw new IllegalStateException("In progress contracts found in paths ["
+ inProgressContractsPaths
String inProgressContractsPaths = inProgress.stream().map(Map.Entry::getKey).map(Path::toString)
.collect(Collectors.joining(","));
throw new IllegalStateException("In progress contracts found in paths [" + inProgressContractsPaths
+ "] and the switch [failOnInProgress] is set to [true]. Either unmark those contracts as in progress, or set the switch to [false].");
}
processAllNotInProgress(contracts, basePackageName);
}
private Set<Map.Entry<Path, List<ContractMetadata>>> inProgress(
MultiValueMap<Path, ContractMetadata> contracts) {
private Set<Map.Entry<Path, List<ContractMetadata>>> inProgress(MultiValueMap<Path, ContractMetadata> contracts) {
return contracts.entrySet().stream()
.filter(entry -> entry.getValue().stream()
.anyMatch(ContractMetadata::anyInProgress))
.filter(entry -> entry.getValue().stream().anyMatch(ContractMetadata::anyInProgress))
.collect(Collectors.toSet());
}
void processAllNotInProgress(MultiValueMap<Path, ContractMetadata> contracts,
final String basePackageName) {
void processAllNotInProgress(MultiValueMap<Path, ContractMetadata> contracts, final String basePackageName) {
contracts.entrySet().stream()
.filter(entry -> entry.getValue().stream()
.noneMatch(ContractMetadata::anyInProgress))
.forEach(entry -> processIncludedDirectory(relativizeContractPath(entry),
entry.getValue(), basePackageName));
.filter(entry -> entry.getValue().stream().noneMatch(ContractMetadata::anyInProgress))
.forEach(entry -> processIncludedDirectory(relativizeContractPath(entry), entry.getValue(),
basePackageName));
}
private String relativizeContractPath(Map.Entry<Path, List<ContractMetadata>> entry) {
Path relativePath = configProperties.getContractsDslDir().toPath()
.relativize(entry.getKey());
Path relativePath = configProperties.getContractsDslDir().toPath().relativize(entry.getKey());
return StringUtils.defaultIfEmpty(relativePath.toString(), DEFAULT_CLASS_PREFIX);
}
private void processIncludedDirectory(final String includedDirectoryRelativePath,
final Collection<ContractMetadata> contracts,
final String basePackageNameForClass) {
final Collection<ContractMetadata> contracts, final String basePackageNameForClass) {
log.debug("Collected contracts with metadata {} relative path is [{}]", contracts,
includedDirectoryRelativePath);
if (!contracts.isEmpty()) {
String className = afterLast(includedDirectoryRelativePath, File.separator)
+ resolveNameSuffix();
String className = afterLast(includedDirectoryRelativePath, File.separator) + resolveNameSuffix();
String convertedClassName = convertIllegalPackageChars(className);
String packageName = buildPackage(basePackageNameForClass,
includedDirectoryRelativePath);
String packageName = buildPackage(basePackageNameForClass, includedDirectoryRelativePath);
Path dir = saver.generateTestBaseDir(basePackageNameForClass,
convertIllegalPackageChars(includedDirectoryRelativePath));
Path classPath = saver.pathToClass(dir, convertedClassName);
byte[] classBytes = generator
.buildClass(configProperties, contracts,
includedDirectoryRelativePath,
new SingleTestGenerator.GeneratedClassData(convertedClassName,
packageName, classPath))
.buildClass(configProperties, contracts, includedDirectoryRelativePath,
new SingleTestGenerator.GeneratedClassData(convertedClassName, packageName, classPath))
.getBytes(StandardCharsets.UTF_8);
saver.saveClassFile(classPath, classBytes);
counter.incrementAndGet();
@@ -203,11 +185,9 @@ public class TestGenerator {
configProperties.getTestFramework().getClassNameSuffix());
}
protected static String buildPackage(final String packageNameForClass,
final String includedDirectoryRelativePath) {
protected static String buildPackage(final String packageNameForClass, final String includedDirectoryRelativePath) {
String directory = beforeLast(includedDirectoryRelativePath, File.separator);
String convertedPackage = packageNameForClass + "."
+ directoryToPackage(convertIllegalPackageChars(directory));
String convertedPackage = packageNameForClass + "." + directoryToPackage(convertIllegalPackageChars(directory));
return !directory.isEmpty() ? convertedPackage : packageNameForClass;
}

View File

@@ -80,8 +80,7 @@ public class CollectionAssert<ELEMENT> extends IterableAssert<ELEMENT> {
isNotNull();
int flattenedSize = flattenedSize(0, this.actual);
if (!(flattenedSize >= size)) {
failWithMessage("The flattened size <%s> is not greater or equal to <%s>",
flattenedSize, size);
failWithMessage("The flattened size <%s> is not greater or equal to <%s>", flattenedSize, size);
}
return this;
}
@@ -97,8 +96,7 @@ public class CollectionAssert<ELEMENT> extends IterableAssert<ELEMENT> {
isNotNull();
int flattenedSize = flattenedSize(0, this.actual);
if (!(flattenedSize <= size)) {
failWithMessage("The flattened size <%s> is not less or equal to <%s>",
flattenedSize, size);
failWithMessage("The flattened size <%s> is not less or equal to <%s>", flattenedSize, size);
}
return this;
}
@@ -115,8 +113,8 @@ public class CollectionAssert<ELEMENT> extends IterableAssert<ELEMENT> {
isNotNull();
int flattenedSize = flattenedSize(0, this.actual);
if (!(flattenedSize >= lowerBound && flattenedSize <= higherBound)) {
failWithMessage("The flattened size <%s> is not between <%s> and <%s>",
flattenedSize, lowerBound, higherBound);
failWithMessage("The flattened size <%s> is not between <%s> and <%s>", flattenedSize, lowerBound,
higherBound);
}
return this;
}
@@ -130,8 +128,7 @@ public class CollectionAssert<ELEMENT> extends IterableAssert<ELEMENT> {
isNotNull();
int actualSize = size(this.actual);
if (!(actualSize >= size)) {
failWithMessage("The size <%s> is not greater or equal to <%s>", actualSize,
size);
failWithMessage("The size <%s> is not greater or equal to <%s>", actualSize, size);
}
return this;
}
@@ -145,8 +142,7 @@ public class CollectionAssert<ELEMENT> extends IterableAssert<ELEMENT> {
isNotNull();
int actualSize = size(this.actual);
if (!(actualSize <= size)) {
failWithMessage("The size <%s> is not less or equal to <%s>", actualSize,
size);
failWithMessage("The size <%s> is not less or equal to <%s>", actualSize, size);
}
return this;
}
@@ -163,8 +159,7 @@ public class CollectionAssert<ELEMENT> extends IterableAssert<ELEMENT> {
isNotNull();
int size = size(this.actual);
if (!(size >= lowerBound && size <= higherBound)) {
failWithMessage("The size <%s> is not between <%s> and <%s>", size,
lowerBound, higherBound);
failWithMessage("The size <%s> is not between <%s> and <%s>", size, lowerBound, higherBound);
}
return this;
}

View File

@@ -31,24 +31,19 @@ class BaseClassProvider {
private static final String SEPARATOR = "_REPLACEME_";
String retrieveBaseClass(Map<String, String> baseClassMappings,
String packageWithBaseClasses, String baseClassForTests,
String includedDirectoryRelativePath) {
String contractPathAsPackage = includedDirectoryRelativePath
.replace(File.separator, ".");
String contractPackage = includedDirectoryRelativePath.replace(File.separator,
SEPARATOR);
String retrieveBaseClass(Map<String, String> baseClassMappings, String packageWithBaseClasses,
String baseClassForTests, String includedDirectoryRelativePath) {
String contractPathAsPackage = includedDirectoryRelativePath.replace(File.separator, ".");
String contractPackage = includedDirectoryRelativePath.replace(File.separator, SEPARATOR);
// package mapping takes super precedence
if (baseClassMappings != null && !baseClassMappings.isEmpty()) {
Optional<Map.Entry<String, String>> mapping = baseClassMappings.entrySet()
.stream().filter(entry -> {
String pattern = entry.getKey();
return contractPathAsPackage.matches(pattern);
}).findFirst();
Optional<Map.Entry<String, String>> mapping = baseClassMappings.entrySet().stream().filter(entry -> {
String pattern = entry.getKey();
return contractPathAsPackage.matches(pattern);
}).findFirst();
if (log.isDebugEnabled()) {
log.debug("Matching pattern for contract package ["
+ contractPathAsPackage + "] with setup " + baseClassMappings
+ " is [" + mapping + "]");
log.debug("Matching pattern for contract package [" + contractPathAsPackage + "] with setup "
+ baseClassMappings + " is [" + mapping + "]");
}
if (mapping.isPresent()) {
return mapping.get().getValue();
@@ -57,15 +52,12 @@ class BaseClassProvider {
if (StringUtils.isEmpty(packageWithBaseClasses)) {
return baseClassForTests;
}
String generatedClassName = generateDefaultBaseClassName(contractPackage,
packageWithBaseClasses);
String generatedClassName = generateDefaultBaseClassName(contractPackage, packageWithBaseClasses);
return generatedClassName + "Base";
}
private String generateDefaultBaseClassName(String classPackage,
String packageWithBaseClasses) {
String[] splitPackage = NamesUtil.convertIllegalPackageChars(classPackage)
.split(SEPARATOR);
private String generateDefaultBaseClassName(String classPackage, String packageWithBaseClasses) {
String[] splitPackage = NamesUtil.convertIllegalPackageChars(classPackage).split(SEPARATOR);
if (splitPackage.length > 1) {
String last = NamesUtil.capitalize(splitPackage[splitPackage.length - 1]);
String butLast = NamesUtil.capitalize(splitPackage[splitPackage.length - 2]);

View File

@@ -188,8 +188,7 @@ public class BlockBuilder {
*/
public BlockBuilder addAtTheEnd(String toAdd) {
String lastChar = String.valueOf(builder.charAt(builder.length() - 1));
String secondLastChar = builder.length() >= 2
? String.valueOf(builder.charAt(builder.length() - 2)) : "";
String secondLastChar = builder.length() >= 2 ? String.valueOf(builder.charAt(builder.length() - 2)) : "";
boolean isEndWithNewLine = endsWithNewLine(lastChar);
boolean lastCharSpecial = aSpecialSign(lastChar, toAdd);
boolean secondLastCharSpecial = aSpecialSign(secondLastChar, toAdd);
@@ -225,9 +224,8 @@ public class BlockBuilder {
return false;
}
return character.equals("{") || (character.equals(spacer) && toAdd.equals(spacer))
|| (character.equals(spacer) && toAdd.equals(" "))
|| character.equals(toAdd) || (endsWithNewLine(character)
&& StringUtils.equalsAny(toAdd, "\n", " ", lineEnding));
|| (character.equals(spacer) && toAdd.equals(" ")) || character.equals(toAdd)
|| (endsWithNewLine(character) && StringUtils.equalsAny(toAdd, "\n", " ", lineEnding));
}
/**

View File

@@ -33,24 +33,21 @@ class BodyAssertionLineCreator {
private final ComparisonBuilder comparisonBuilder;
BodyAssertionLineCreator(BlockBuilder blockBuilder, GeneratedClassMetaData metaData,
String byteArrayString, ComparisonBuilder comparisonBuilder) {
BodyAssertionLineCreator(BlockBuilder blockBuilder, GeneratedClassMetaData metaData, String byteArrayString,
ComparisonBuilder comparisonBuilder) {
this.blockBuilder = blockBuilder;
this.bodyReader = new BodyReader(metaData);
this.byteArrayString = byteArrayString;
this.comparisonBuilder = comparisonBuilder;
}
void appendBodyAssertionLine(SingleContractMetadata metadata, String property,
Object value) {
void appendBodyAssertionLine(SingleContractMetadata metadata, String property, Object value) {
if (value instanceof String && ((String) value).startsWith("$")) {
String newValue = stripFirstChar((String) value).replaceAll("\\$value",
"responseBody" + property);
String newValue = stripFirstChar((String) value).replaceAll("\\$value", "responseBody" + property);
this.blockBuilder.addLineWithEnding(newValue);
}
else {
this.blockBuilder.addLineWithEnding(
getResponseBodyPropertyComparisonString(metadata, property, value));
this.blockBuilder.addLineWithEnding(getResponseBodyPropertyComparisonString(metadata, property, value));
}
}
@@ -58,23 +55,20 @@ class BodyAssertionLineCreator {
* Builds the code that for the given {@code property} will compare it to the given
* Object {@code value}
*/
private String getResponseBodyPropertyComparisonString(
SingleContractMetadata singleContractMetadata, String property,
Object value) {
private String getResponseBodyPropertyComparisonString(SingleContractMetadata singleContractMetadata,
String property, Object value) {
if (value instanceof FromFileProperty) {
return getResponseBodyPropertyComparisonString(singleContractMetadata,
property, (FromFileProperty) value);
return getResponseBodyPropertyComparisonString(singleContractMetadata, property, (FromFileProperty) value);
}
else if (value instanceof Pattern) {
return getResponseBodyPropertyComparisonString(property, (Pattern) value);
}
else if (value instanceof ExecutionProperty) {
return getResponseBodyPropertyComparisonString(property,
(ExecutionProperty) value);
return getResponseBodyPropertyComparisonString(property, (ExecutionProperty) value);
}
else if (value instanceof DslProperty) {
return getResponseBodyPropertyComparisonString(singleContractMetadata,
property, ((DslProperty) value).getServerValue());
return getResponseBodyPropertyComparisonString(singleContractMetadata, property,
((DslProperty) value).getServerValue());
}
return getResponseBodyPropertyComparisonString(property, value.toString());
}
@@ -83,14 +77,11 @@ class BodyAssertionLineCreator {
* Builds the code that for the given {@code property} will compare it to the given
* byte[] {@code value}
*/
private String getResponseBodyPropertyComparisonString(
SingleContractMetadata singleContractMetadata, String property,
FromFileProperty value) {
private String getResponseBodyPropertyComparisonString(SingleContractMetadata singleContractMetadata,
String property, FromFileProperty value) {
if (value.isByte()) {
return this.comparisonBuilder.assertThat(this.byteArrayString)
+ this.comparisonBuilder.isEqualToUnquoted(this.bodyReader
.readBytesFromFileString(singleContractMetadata, value,
CommunicationType.RESPONSE));
return this.comparisonBuilder.assertThat(this.byteArrayString) + this.comparisonBuilder.isEqualToUnquoted(
this.bodyReader.readBytesFromFileString(singleContractMetadata, value, CommunicationType.RESPONSE));
}
return getResponseBodyPropertyComparisonString(property, value.asString());
}
@@ -99,18 +90,15 @@ class BodyAssertionLineCreator {
* Builds the code that for the given {@code property} will compare it to the given
* String {@code value}
*/
private String getResponseBodyPropertyComparisonString(String property,
String value) {
return this.comparisonBuilder.assertThatUnescaped("responseBody" + property,
value);
private String getResponseBodyPropertyComparisonString(String property, String value) {
return this.comparisonBuilder.assertThatUnescaped("responseBody" + property, value);
}
/**
* Builds the code that for the given {@code property} will match it to the given
* regular expression {@code value}
*/
private String getResponseBodyPropertyComparisonString(String property,
Pattern value) {
private String getResponseBodyPropertyComparisonString(String property, Pattern value) {
return this.comparisonBuilder.assertThat("responseBody" + property, value);
}
@@ -118,8 +106,7 @@ class BodyAssertionLineCreator {
* Builds the code that for the given {@code property} will match it to the given
* {@link ExecutionProperty} value
*/
private String getResponseBodyPropertyComparisonString(String property,
ExecutionProperty value) {
private String getResponseBodyPropertyComparisonString(String property, ExecutionProperty value) {
return value.insertValue("responseBody" + property);
}

View File

@@ -37,13 +37,11 @@ interface BodyMethodGeneration {
return SerializationUtils.deserialize(serializedObject);
}
default void addColonIfRequired(Optional<String> lineSuffix,
BlockBuilder blockBuilder) {
default void addColonIfRequired(Optional<String> lineSuffix, BlockBuilder blockBuilder) {
lineSuffix.ifPresent(s -> blockBuilder.addAtTheEnd(lineSuffix.get()));
}
default void addBodyMatchingBlock(List<BodyMatcher> matchers,
BlockBuilder blockBuilder, Object responseBody,
default void addBodyMatchingBlock(List<BodyMatcher> matchers, BlockBuilder blockBuilder, Object responseBody,
boolean shouldCommentOutBDDBlocks) {
blockBuilder.endBlock();
blockBuilder.addLine(getAssertionJoiner(shouldCommentOutBDDBlocks));
@@ -52,8 +50,7 @@ interface BodyMethodGeneration {
if (it.matchingType() == MatchingType.NULL) {
methodForNullCheck(it, blockBuilder);
}
else if (MatchingType.regexRelated(it.matchingType())
|| it.matchingType() == MatchingType.EQUALITY) {
else if (MatchingType.regexRelated(it.matchingType()) || it.matchingType() == MatchingType.EQUALITY) {
methodForEqualityCheck(it, blockBuilder, responseBody);
}
else if (it.matchingType() == MatchingType.COMMAND) {

View File

@@ -34,8 +34,7 @@ interface BodyMethodVisitor {
* @return
*/
default BlockBuilder startBodyBlock(BlockBuilder blockBuilder, String label) {
return blockBuilder.addIndentation().appendWithLabelPrefix(label).addEmptyLine()
.startBlock();
return blockBuilder.addIndentation().appendWithLabelPrefix(label).addEmptyLine().startBlock();
}
/**
@@ -44,11 +43,9 @@ interface BodyMethodVisitor {
* @param methodVisitors
* @param singleContractMetadata
*/
default void indentedBodyBlock(BlockBuilder blockBuilder,
List<? extends MethodVisitor> methodVisitors,
default void indentedBodyBlock(BlockBuilder blockBuilder, List<? extends MethodVisitor> methodVisitors,
SingleContractMetadata singleContractMetadata) {
List<MethodVisitor> visitors = filterVisitors(methodVisitors,
singleContractMetadata);
List<MethodVisitor> visitors = filterVisitors(methodVisitors, singleContractMetadata);
if (visitors.isEmpty()) {
blockBuilder.addEndingIfNotPresent().addEmptyLine();
blockBuilder.endBlock();
@@ -65,11 +62,9 @@ interface BodyMethodVisitor {
* @param singleContractMetadata
* @return
*/
default List<MethodVisitor> filterVisitors(
List<? extends MethodVisitor> methodVisitors,
default List<MethodVisitor> filterVisitors(List<? extends MethodVisitor> methodVisitors,
SingleContractMetadata singleContractMetadata) {
return methodVisitors.stream()
.filter(given -> given.accept(singleContractMetadata))
return methodVisitors.stream().filter(given -> given.accept(singleContractMetadata))
.collect(Collectors.toList());
}
@@ -80,11 +75,9 @@ interface BodyMethodVisitor {
* @param methodVisitors
* @param singleContractMetadata
*/
default void bodyBlock(BlockBuilder blockBuilder,
List<? extends MethodVisitor> methodVisitors,
default void bodyBlock(BlockBuilder blockBuilder, List<? extends MethodVisitor> methodVisitors,
SingleContractMetadata singleContractMetadata) {
List<MethodVisitor> visitors = filterVisitors(methodVisitors,
singleContractMetadata);
List<MethodVisitor> visitors = filterVisitors(methodVisitors, singleContractMetadata);
if (visitors.isEmpty()) {
blockBuilder.addEndingIfNotPresent().addEmptyLine();
return;
@@ -99,8 +92,8 @@ interface BodyMethodVisitor {
* @param singleContractMetadata
* @param visitors
*/
default void applyVisitors(BlockBuilder blockBuilder,
SingleContractMetadata singleContractMetadata, List<MethodVisitor> visitors) {
default void applyVisitors(BlockBuilder blockBuilder, SingleContractMetadata singleContractMetadata,
List<MethodVisitor> visitors) {
Iterator<MethodVisitor> iterator = visitors.iterator();
while (iterator.hasNext()) {
MethodVisitor visitor = iterator.next();
@@ -118,8 +111,8 @@ interface BodyMethodVisitor {
* @param singleContractMetadata
* @param visitors
*/
default void applyVisitorsWithEnding(BlockBuilder blockBuilder,
SingleContractMetadata singleContractMetadata, List<MethodVisitor> visitors) {
default void applyVisitorsWithEnding(BlockBuilder blockBuilder, SingleContractMetadata singleContractMetadata,
List<MethodVisitor> visitors) {
Iterator<MethodVisitor> iterator = visitors.iterator();
while (iterator.hasNext()) {
MethodVisitor visitor = iterator.next();

View File

@@ -68,15 +68,13 @@ interface BodyParser extends BodyThen {
default Object convertResponseBody(SingleContractMetadata metadata) {
ContentType contentType = metadata.getOutputTestContentType();
DslProperty body = responseBody(metadata);
Object responseBody = extractServerValueFromBody(contentType,
body.getServerValue());
Object responseBody = extractServerValueFromBody(contentType, body.getServerValue());
if (responseBody instanceof FromFileProperty) {
responseBody = ((FromFileProperty) responseBody).asString();
}
else if (responseBody instanceof GString) {
responseBody = extractValue((GString) responseBody, contentType,
o -> o instanceof DslProperty ? ((DslProperty) o).getServerValue()
: o);
o -> o instanceof DslProperty ? ((DslProperty) o).getServerValue() : o);
}
else if (responseBody instanceof DslProperty) {
responseBody = MapConverter.getTestSideValues(responseBody);
@@ -96,15 +94,14 @@ interface BodyParser extends BodyThen {
// [a:3, b:4] == "a=3&b=4"
return ((Map) bodyValue).entrySet().stream().map(o -> {
Map.Entry entry = (Map.Entry) o;
return convertUnicodeEscapesIfRequired(entry.getKey().toString() + "="
+ MapConverter.getTestSideValuesForText(entry.getValue()));
return convertUnicodeEscapesIfRequired(
entry.getKey().toString() + "=" + MapConverter.getTestSideValuesForText(entry.getValue()));
}).collect(Collectors.joining("&")).toString();
}
else if (bodyValue instanceof List) {
// ["a=3", "b=4"] == "a=3&b=4"
return ((List) bodyValue).stream()
.map(o -> convertUnicodeEscapesIfRequired(
MapConverter.getTestSideValuesForText(o).toString()))
.map(o -> convertUnicodeEscapesIfRequired(MapConverter.getTestSideValuesForText(o).toString()))
.collect(Collectors.joining("&")).toString();
}
}
@@ -120,16 +117,14 @@ interface BodyParser extends BodyThen {
*/
default Object extractServerValueFromBody(ContentType contentType, Object bodyValue) {
if (bodyValue instanceof GString) {
return extractValue((GString) bodyValue, contentType,
ContentUtils.GET_TEST_SIDE);
return extractValue((GString) bodyValue, contentType, ContentUtils.GET_TEST_SIDE);
}
else if (bodyValue instanceof FromFileProperty) {
return MapConverter.transformValues(bodyValue, ContentUtils.GET_TEST_SIDE);
}
else if (TEXT != contentType && FORM != contentType && DEFINED != contentType) {
boolean dontParseStrings = contentType == JSON && bodyValue instanceof Map;
Closure parsingClosure = dontParseStrings ? Closure.IDENTITY
: MapConverter.JSON_PARSING_CLOSURE;
Closure parsingClosure = dontParseStrings ? Closure.IDENTITY : MapConverter.JSON_PARSING_CLOSURE;
return MapConverter.getTestSideValues(bodyValue, parsingClosure);
}
return bodyValue;

View File

@@ -47,47 +47,41 @@ class BodyReader {
this.generatedClassMetaData = generatedClassMetaData;
}
String readBytesFromFileString(SingleContractMetadata metadata,
FromFileProperty property, CommunicationType side) {
String readBytesFromFileString(SingleContractMetadata metadata, FromFileProperty property, CommunicationType side) {
String fileName = byteBodyToAFileForTestMethod(metadata, property, side);
return "fileToBytes(this, \"" + fileName + "\")";
}
String readStringFromFileString(SingleContractMetadata metadata,
FromFileProperty property, CommunicationType side) {
String readStringFromFileString(SingleContractMetadata metadata, FromFileProperty property,
CommunicationType side) {
if (!Charset.defaultCharset().toString().equals(property.getCharset())) {
return "new String(" + readBytesFromFileString(metadata, property, side)
+ ", \"" + property.getCharset() + "\")";
return "new String(" + readBytesFromFileString(metadata, property, side) + ", \"" + property.getCharset()
+ "\")";
}
return "new String(" + readBytesFromFileString(metadata, property, side) + ")";
}
void storeContractAsYaml(SingleContractMetadata metadata) {
Contract contract = metadata.getContract();
List<YamlContract> contracts = this.converter
.convertTo(Collections.singleton(contract));
List<YamlContract> contracts = this.converter.convertTo(Collections.singleton(contract));
Map<String, byte[]> store = this.converter.store(contracts);
store.forEach(
(name, bytes) -> writeFileForBothIdeAndBuildTool(metadata, bytes, name));
store.forEach((name, bytes) -> writeFileForBothIdeAndBuildTool(metadata, bytes, name));
}
private String byteBodyToAFileForTestMethod(SingleContractMetadata metadata,
FromFileProperty property, CommunicationType side) {
private String byteBodyToAFileForTestMethod(SingleContractMetadata metadata, FromFileProperty property,
CommunicationType side) {
GeneratedClassDataForMethod classDataForMethod = classDataForMethod(metadata);
String newFileName = classDataForMethod.getMethodName() + "_"
+ side.name().toLowerCase() + "_" + property.fileName();
String newFileName = classDataForMethod.getMethodName() + "_" + side.name().toLowerCase() + "_"
+ property.fileName();
writeFileForBothIdeAndBuildTool(metadata, property.asBytes(), newFileName);
return newFileName;
}
private GeneratedClassDataForMethod classDataForMethod(
SingleContractMetadata metadata) {
return new GeneratedClassDataForMethod(
this.generatedClassMetaData.generatedClassData, metadata.methodName());
private GeneratedClassDataForMethod classDataForMethod(SingleContractMetadata metadata) {
return new GeneratedClassDataForMethod(this.generatedClassMetaData.generatedClassData, metadata.methodName());
}
private void writeFileForBothIdeAndBuildTool(SingleContractMetadata metadata,
byte[] bytes, String newFileName) {
private void writeFileForBothIdeAndBuildTool(SingleContractMetadata metadata, byte[] bytes, String newFileName) {
GeneratedClassDataForMethod classDataForMethod = classDataForMethod(metadata);
java.nio.file.Path parent = classDataForMethod.testClassPath().getParent();
if (parent == null) {
@@ -101,8 +95,7 @@ class BodyReader {
try {
Path path = newFile.toPath();
if (log.isDebugEnabled()) {
log.debug("Writing file for [" + path
+ "] for body reading in generated test (for IDE)");
log.debug("Writing file for [" + path + "] for body reading in generated test (for IDE)");
}
Files.write(path, bytes);
// for plugin
@@ -113,22 +106,15 @@ class BodyReader {
}
}
private void generatedTestResourcesFileBytes(byte[] bytes, File newFile)
throws IOException {
Assert.notNull(
this.generatedClassMetaData.configProperties.getGeneratedTestSourcesDir(),
private void generatedTestResourcesFileBytes(byte[] bytes, File newFile) throws IOException {
Assert.notNull(this.generatedClassMetaData.configProperties.getGeneratedTestSourcesDir(),
"No generated test sources directory set");
Assert.notNull(
this.generatedClassMetaData.configProperties
.getGeneratedTestResourcesDir(),
Assert.notNull(this.generatedClassMetaData.configProperties.getGeneratedTestResourcesDir(),
"No generated test resources directory set");
Path path = this.generatedClassMetaData.configProperties
.getGeneratedTestSourcesDir().toPath();
Path path = this.generatedClassMetaData.configProperties.getGeneratedTestSourcesDir().toPath();
Path relativePath = path.relativize(newFile.toPath());
File newFileInGeneratedTestSources = new File(
this.generatedClassMetaData.configProperties
.getGeneratedTestResourcesDir(),
relativePath.toString());
this.generatedClassMetaData.configProperties.getGeneratedTestResourcesDir(), relativePath.toString());
newFileInGeneratedTestSources.getParentFile().mkdirs();
Path generatedTestSourceFilePath = newFileInGeneratedTestSources.toPath();
if (log.isDebugEnabled()) {

View File

@@ -36,20 +36,17 @@ class ClassAnnotationsBuilder {
}
ClassAnnotationsBuilder jUnit4() {
this.parentBuilder
.classAnnotations(new JUnit4OrderClassAnnotation(builder, metaData));
this.parentBuilder.classAnnotations(new JUnit4OrderClassAnnotation(builder, metaData));
return this;
}
ClassAnnotationsBuilder jUnit5() {
this.parentBuilder
.classAnnotations(new JUnit5OrderClassAnnotation(builder, metaData));
this.parentBuilder.classAnnotations(new JUnit5OrderClassAnnotation(builder, metaData));
return this;
}
ClassAnnotationsBuilder spock() {
this.parentBuilder
.classAnnotations(new SpockOrderClassAnnotation(builder, metaData));
this.parentBuilder.classAnnotations(new SpockOrderClassAnnotation(builder, metaData));
return this;
}

View File

@@ -38,14 +38,12 @@ class ClassBodyBuilder {
final GeneratedClassMetaData generatedClassMetaData;
private ClassBodyBuilder(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
private ClassBodyBuilder(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
static ClassBodyBuilder builder(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
static ClassBodyBuilder builder(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
return new ClassBodyBuilder(blockBuilder, generatedClassMetaData);
}
@@ -78,8 +76,7 @@ class ClassBodyBuilder {
}
void visit(List<? extends Visitor> list) {
List<? extends Visitor> visitors = list.stream().filter(Acceptor::accept)
.collect(Collectors.toList());
List<? extends Visitor> visitors = list.stream().filter(Acceptor::accept).collect(Collectors.toList());
Iterator<? extends Visitor> iterator = visitors.iterator();
while (iterator.hasNext()) {
Visitor visitor = iterator.next();

View File

@@ -74,8 +74,7 @@ interface ComparisonBuilder {
}
default String isEqualTo(Number number) {
String numberString = number instanceof Long ? number.toString() + "L"
: number.toString();
String numberString = number instanceof Long ? number.toString() + "L" : number.toString();
return ".isEqualTo(" + numberString + ")";
}

View File

@@ -32,8 +32,7 @@ final class ContentHelper {
if (object instanceof ExecutionProperty) {
return getTestSideValue(object);
}
return quotedAndEscaped(
MapConverter.getTestSideValuesForNonBody(object).toString());
return quotedAndEscaped(MapConverter.getTestSideValuesForNonBody(object).toString());
}
/**

View File

@@ -37,10 +37,8 @@ interface CookieElementProcessor {
Iterator<Cookie> iterator = cookies.getEntries().iterator();
while (iterator.hasNext()) {
Cookie cookie = iterator.next();
String text = processCookieElement(cookie.getKey(),
cookie.getServerValue() instanceof NotToEscapePattern
? cookie.getServerValue()
: MapConverter.getTestSideValues(cookie.getServerValue()));
String text = processCookieElement(cookie.getKey(), cookie.getServerValue() instanceof NotToEscapePattern
? cookie.getServerValue() : MapConverter.getTestSideValues(cookie.getServerValue()));
if (iterator.hasNext()) {
blockBuilder().addLine(text).addEndingIfNotPresent();
}
@@ -55,9 +53,8 @@ interface CookieElementProcessor {
default String processCookieElement(String property, Object value) {
if (value instanceof NotToEscapePattern) {
verifyCookieNotNull(property);
return comparisonBuilder().assertThat(cookieValue(property))
+ comparisonBuilder().matches(((NotToEscapePattern) value)
.getServerValue().pattern().replace("\\", "\\\\"));
return comparisonBuilder().assertThat(cookieValue(property)) + comparisonBuilder()
.matches(((NotToEscapePattern) value).getServerValue().pattern().replace("\\", "\\\\"));
}
else if (value instanceof String || value instanceof Pattern) {
verifyCookieNotNull(property);
@@ -79,8 +76,7 @@ interface CookieElementProcessor {
}
default void verifyCookieNotNull(String key) {
blockBuilder().addLineWithEnding(
comparisonBuilder().assertThatIsNotNull(cookieKey(key)));
blockBuilder().addLineWithEnding(comparisonBuilder().assertThatIsNotNull(cookieKey(key)));
}
String cookieKey(String key);

View File

@@ -24,8 +24,7 @@ class CustomImports implements Imports {
private final GeneratedClassMetaData generatedClassMetaData;
CustomImports(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
CustomImports(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}

View File

@@ -24,8 +24,7 @@ class CustomStaticImports implements Imports {
private final GeneratedClassMetaData generatedClassMetaData;
CustomStaticImports(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
CustomStaticImports(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@@ -40,8 +39,7 @@ class CustomStaticImports implements Imports {
@Override
public boolean accept() {
return this.generatedClassMetaData.configProperties.getStaticImports() != null
&& this.generatedClassMetaData.configProperties
.getStaticImports().length > 0;
&& this.generatedClassMetaData.configProperties.getStaticImports().length > 0;
}
}

View File

@@ -22,8 +22,7 @@ interface DefaultClassMetadata extends ClassMetaData, DefaultBaseClassProvider {
@Override
default ClassMetaData packageDefinition() {
blockBuilder().addLineWithEnding(
"package " + generatedClassMetaData().generatedClassData.classPackage);
blockBuilder().addLineWithEnding("package " + generatedClassMetaData().generatedClassData.classPackage);
return this;
}
@@ -35,8 +34,7 @@ interface DefaultClassMetadata extends ClassMetaData, DefaultBaseClassProvider {
@Override
default ClassMetaData className() {
String className = capitalize(
generatedClassMetaData().generatedClassData.className);
String className = capitalize(generatedClassMetaData().generatedClassData.className);
blockBuilder().addAtTheEnd(className);
return this;
}

View File

@@ -26,8 +26,7 @@ class DefaultImports implements Imports, DefaultBaseClassProvider {
private final BaseClassProvider baseClassProvider;
DefaultImports(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
DefaultImports(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
this.baseClassProvider = new BaseClassProvider();

View File

@@ -26,27 +26,23 @@ class DefaultJsonStaticImports implements Imports {
private final GeneratedClassMetaData generatedClassMetaData;
private static final String[] IMPORTS = {
"com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson" };
private static final String[] IMPORTS = { "com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson" };
DefaultJsonStaticImports(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
DefaultJsonStaticImports(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@Override
public Imports call() {
Arrays.stream(IMPORTS)
.forEach(s -> this.blockBuilder.addLineWithEnding("import static " + s));
Arrays.stream(IMPORTS).forEach(s -> this.blockBuilder.addLineWithEnding("import static " + s));
return this;
}
@Override
public boolean accept() {
return this.generatedClassMetaData.listOfFiles.stream()
.anyMatch(metadata -> metadata.getConvertedContractWithMetadata().stream()
.anyMatch(SingleContractMetadata::isJson));
return this.generatedClassMetaData.listOfFiles.stream().anyMatch(metadata -> metadata
.getConvertedContractWithMetadata().stream().anyMatch(SingleContractMetadata::isJson));
}
}

View File

@@ -32,8 +32,7 @@ class DefaultStaticImports implements Imports {
@Override
public Imports call() {
Arrays.stream(IMPORTS)
.forEach(s -> this.blockBuilder.addLineWithEnding("import static " + s));
Arrays.stream(IMPORTS).forEach(s -> this.blockBuilder.addLineWithEnding("import static " + s));
return this;
}

View File

@@ -27,31 +27,26 @@ class ExplicitRestAssuredImports implements Imports, RestAssuredVerifier {
private final GeneratedClassMetaData generatedClassMetaData;
private static final String[] REST_ASSURED_2_IMPORTS = {
"com.jayway.restassured.specification.RequestSpecification",
"com.jayway.restassured.response.Response" };
"com.jayway.restassured.specification.RequestSpecification", "com.jayway.restassured.response.Response" };
private static final String[] REST_ASSURED_3_IMPORTS = {
"io.restassured.specification.RequestSpecification",
private static final String[] REST_ASSURED_3_IMPORTS = { "io.restassured.specification.RequestSpecification",
"io.restassured.response.Response" };
ExplicitRestAssuredImports(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
ExplicitRestAssuredImports(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@Override
public Imports call() {
Arrays.stream(
isRestAssured2Present() ? REST_ASSURED_2_IMPORTS : REST_ASSURED_3_IMPORTS)
Arrays.stream(isRestAssured2Present() ? REST_ASSURED_2_IMPORTS : REST_ASSURED_3_IMPORTS)
.forEach(s -> this.blockBuilder.addLineWithEnding("import " + s));
return this;
}
@Override
public boolean accept() {
return this.generatedClassMetaData.configProperties
.getTestMode() == TestMode.EXPLICIT
return this.generatedClassMetaData.configProperties.getTestMode() == TestMode.EXPLICIT
&& this.generatedClassMetaData.isAnyHttp();
}

View File

@@ -26,30 +26,25 @@ class ExplicitRestAssuredStaticImports implements Imports, RestAssuredVerifier {
private final GeneratedClassMetaData generatedClassMetaData;
private static final String[] REST_ASSURED_2_IMPORTS = {
"com.jayway.restassured.RestAssured.*" };
private static final String[] REST_ASSURED_2_IMPORTS = { "com.jayway.restassured.RestAssured.*" };
private static final String[] REST_ASSURED_3_IMPORTS = {
"io.restassured.RestAssured.*" };
private static final String[] REST_ASSURED_3_IMPORTS = { "io.restassured.RestAssured.*" };
ExplicitRestAssuredStaticImports(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
ExplicitRestAssuredStaticImports(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@Override
public Imports call() {
Arrays.stream(
isRestAssured2Present() ? REST_ASSURED_2_IMPORTS : REST_ASSURED_3_IMPORTS)
Arrays.stream(isRestAssured2Present() ? REST_ASSURED_2_IMPORTS : REST_ASSURED_3_IMPORTS)
.forEach(s -> this.blockBuilder.addLineWithEnding("import static " + s));
return this;
}
@Override
public boolean accept() {
return this.generatedClassMetaData.configProperties
.getTestMode() == TestMode.EXPLICIT
return this.generatedClassMetaData.configProperties.getTestMode() == TestMode.EXPLICIT
&& this.generatedClassMetaData.isAnyHttp();
}

View File

@@ -30,17 +30,14 @@ public class GeneratedClassDataForMethod {
private final String methodName;
public GeneratedClassDataForMethod(
SingleTestGenerator.GeneratedClassData generatedClassData,
String methodName) {
public GeneratedClassDataForMethod(SingleTestGenerator.GeneratedClassData generatedClassData, String methodName) {
this.generatedClassData = generatedClassData;
this.methodName = methodName;
}
private SingleTestGenerator.GeneratedClassData assertClassData() {
if (this.generatedClassData == null) {
throw new IllegalStateException(
"No metadata was found for the generated test class");
throw new IllegalStateException("No metadata was found for the generated test class");
}
return this.generatedClassData;
}

View File

@@ -40,10 +40,8 @@ class GeneratedClassMetaData {
final SingleTestGenerator.GeneratedClassData generatedClassData;
GeneratedClassMetaData(ContractVerifierConfigProperties configProperties,
Collection<ContractMetadata> listOfFiles,
String includedDirectoryRelativePath,
SingleTestGenerator.GeneratedClassData generatedClassData) {
GeneratedClassMetaData(ContractVerifierConfigProperties configProperties, Collection<ContractMetadata> listOfFiles,
String includedDirectoryRelativePath, SingleTestGenerator.GeneratedClassData generatedClassData) {
this.configProperties = configProperties;
this.listOfFiles = listOfFiles;
this.includedDirectoryRelativePath = includedDirectoryRelativePath;
@@ -51,34 +49,28 @@ class GeneratedClassMetaData {
}
Collection<SingleContractMetadata> toSingleContractMetadata() {
return this.listOfFiles.stream()
.flatMap(metadata -> metadata.getConvertedContractWithMetadata().stream())
return this.listOfFiles.stream().flatMap(metadata -> metadata.getConvertedContractWithMetadata().stream())
.collect(Collectors.toList());
}
boolean isAnyJson() {
return toSingleContractMetadata().stream()
.anyMatch(SingleContractMetadata::isJson);
return toSingleContractMetadata().stream().anyMatch(SingleContractMetadata::isJson);
}
boolean isAnyIgnored() {
return toSingleContractMetadata().stream()
.anyMatch(SingleContractMetadata::isIgnored);
return toSingleContractMetadata().stream().anyMatch(SingleContractMetadata::isIgnored);
}
boolean isAnyXml() {
return toSingleContractMetadata().stream()
.anyMatch(SingleContractMetadata::isXml);
return toSingleContractMetadata().stream().anyMatch(SingleContractMetadata::isXml);
}
boolean isAnyHttp() {
return toSingleContractMetadata().stream()
.anyMatch(SingleContractMetadata::isHttp);
return toSingleContractMetadata().stream().anyMatch(SingleContractMetadata::isHttp);
}
boolean isAnyMessaging() {
return toSingleContractMetadata().stream()
.anyMatch(SingleContractMetadata::isMessaging);
return toSingleContractMetadata().stream().anyMatch(SingleContractMetadata::isMessaging);
}
}

View File

@@ -45,14 +45,12 @@ class GeneratedTestClassBuilder {
final GeneratedClassMetaData generatedClassMetaData;
private GeneratedTestClassBuilder(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
private GeneratedTestClassBuilder(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
static GeneratedTestClassBuilder builder(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
static GeneratedTestClassBuilder builder(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
return new GeneratedTestClassBuilder(blockBuilder, generatedClassMetaData);
}
@@ -128,9 +126,8 @@ class GeneratedTestClassBuilder {
*/
GeneratedTestClass build() {
// picks a matching class meta data
ClassMetaData classMetaData = this.metaData.stream().filter(Acceptor::accept)
.findFirst().orElseThrow(() -> new IllegalStateException(
"There is no matching class meta data"));
ClassMetaData classMetaData = this.metaData.stream().filter(Acceptor::accept).findFirst()
.orElseThrow(() -> new IllegalStateException("There is no matching class meta data"));
classMetaData.setupLineEnding().setupLabelPrefix()
// package com.example
.packageDefinition();
@@ -168,10 +165,8 @@ class GeneratedTestClassBuilder {
visit(list, false, false);
}
private void visit(List<? extends Visitor> list, boolean addEnding,
boolean separated) {
List<Visitor> elements = list.stream().filter(Acceptor::accept)
.collect(Collectors.toList());
private void visit(List<? extends Visitor> list, boolean addEnding, boolean separated) {
List<Visitor> elements = list.stream().filter(Acceptor::accept).collect(Collectors.toList());
elements.forEach(OurCallable::call);
if (addEnding) {
this.blockBuilder.addEndingIfNotPresent();

View File

@@ -29,12 +29,12 @@ class GenericBinaryBodyThen implements Then {
private final ComparisonBuilder comparisonBuilder;
GenericBinaryBodyThen(BlockBuilder blockBuilder, GeneratedClassMetaData metaData,
BodyParser bodyParser, ComparisonBuilder comparisonBuilder) {
GenericBinaryBodyThen(BlockBuilder blockBuilder, GeneratedClassMetaData metaData, BodyParser bodyParser,
ComparisonBuilder comparisonBuilder) {
this.blockBuilder = blockBuilder;
this.comparisonBuilder = comparisonBuilder;
this.bodyAssertionLineCreator = new BodyAssertionLineCreator(blockBuilder,
metaData, bodyParser.byteArrayString(), this.comparisonBuilder);
this.bodyAssertionLineCreator = new BodyAssertionLineCreator(blockBuilder, metaData,
bodyParser.byteArrayString(), this.comparisonBuilder);
this.bodyParser = bodyParser;
}
@@ -45,10 +45,8 @@ class GenericBinaryBodyThen implements Then {
return this;
}
private void byteResponseBodyCheck(SingleContractMetadata metadata,
FromFileProperty convertedResponseBody) {
this.bodyAssertionLineCreator.appendBodyAssertionLine(metadata, "",
convertedResponseBody);
private void byteResponseBodyCheck(SingleContractMetadata metadata, FromFileProperty convertedResponseBody) {
this.bodyAssertionLineCreator.appendBodyAssertionLine(metadata, "", convertedResponseBody);
this.blockBuilder.addEndingIfNotPresent();
}

View File

@@ -36,20 +36,17 @@ class GenericHttpBodyThen implements Then, BodyMethodVisitor {
private final List<Then> thens = new LinkedList<>();
GenericHttpBodyThen(BlockBuilder blockBuilder, GeneratedClassMetaData metaData,
BodyParser bodyParser, ComparisonBuilder comparisonBuilder) {
GenericHttpBodyThen(BlockBuilder blockBuilder, GeneratedClassMetaData metaData, BodyParser bodyParser,
ComparisonBuilder comparisonBuilder) {
this.blockBuilder = blockBuilder;
this.bodyParser = bodyParser;
this.comparisonBuilder = comparisonBuilder;
this.templateProcessor = new HandlebarsTemplateProcessor();
this.thens.addAll(Arrays.asList(
new GenericBinaryBodyThen(blockBuilder, metaData, this.bodyParser,
comparisonBuilder),
new GenericTextBodyThen(blockBuilder, metaData, this.bodyParser,
this.comparisonBuilder),
new GenericJsonBodyThen(blockBuilder, metaData, this.bodyParser,
this.comparisonBuilder),
new GenericXmlBodyThen(blockBuilder, this.bodyParser)));
this.thens.addAll(
Arrays.asList(new GenericBinaryBodyThen(blockBuilder, metaData, this.bodyParser, comparisonBuilder),
new GenericTextBodyThen(blockBuilder, metaData, this.bodyParser, this.comparisonBuilder),
new GenericJsonBodyThen(blockBuilder, metaData, this.bodyParser, this.comparisonBuilder),
new GenericXmlBodyThen(blockBuilder, this.bodyParser)));
}
@Override
@@ -57,8 +54,7 @@ class GenericHttpBodyThen implements Then, BodyMethodVisitor {
endBodyBlock(this.blockBuilder);
this.blockBuilder.addEmptyLine();
startBodyBlock(this.blockBuilder, "and:");
this.thens.stream().filter(then -> then.accept(metadata))
.forEach(then -> then.apply(metadata));
this.thens.stream().filter(then -> then.accept(metadata)).forEach(then -> then.apply(metadata));
return this;
}

View File

@@ -56,13 +56,13 @@ class GenericJsonBodyThen implements Then {
private final ComparisonBuilder comparisonBuilder;
GenericJsonBodyThen(BlockBuilder blockBuilder, GeneratedClassMetaData metaData,
BodyParser bodyParser, ComparisonBuilder comparisonBuilder) {
GenericJsonBodyThen(BlockBuilder blockBuilder, GeneratedClassMetaData metaData, BodyParser bodyParser,
ComparisonBuilder comparisonBuilder) {
this.blockBuilder = blockBuilder;
this.bodyParser = bodyParser;
this.comparisonBuilder = comparisonBuilder;
this.bodyAssertionLineCreator = new BodyAssertionLineCreator(blockBuilder,
metaData, this.bodyParser.byteArrayString(), this.comparisonBuilder);
this.bodyAssertionLineCreator = new BodyAssertionLineCreator(blockBuilder, metaData,
this.bodyParser.byteArrayString(), this.comparisonBuilder);
this.generatedClassMetaData = metaData;
this.templateProcessor = new HandlebarsTemplateProcessor();
this.contractTemplate = new HandlebarsTemplateProcessor();
@@ -74,37 +74,28 @@ class GenericJsonBodyThen implements Then {
Object convertedResponseBody = this.bodyParser.convertResponseBody(metadata);
ContentType contentType = metadata.getOutputTestContentType();
if (TEXT != contentType && FORM != contentType && DEFINED != contentType) {
boolean dontParseStrings = contentType == JSON
&& convertedResponseBody instanceof Map;
Function parsingClosure = dontParseStrings ? Function.identity()
: MapConverter.JSON_PARSING_FUNCTION;
convertedResponseBody = MapConverter.getTestSideValues(convertedResponseBody,
parsingClosure);
boolean dontParseStrings = contentType == JSON && convertedResponseBody instanceof Map;
Function parsingClosure = dontParseStrings ? Function.identity() : MapConverter.JSON_PARSING_FUNCTION;
convertedResponseBody = MapConverter.getTestSideValues(convertedResponseBody, parsingClosure);
}
else {
convertedResponseBody = StringEscapeUtils
.escapeJava(convertedResponseBody.toString());
convertedResponseBody = StringEscapeUtils.escapeJava(convertedResponseBody.toString());
}
addJsonBodyVerification(metadata, convertedResponseBody, bodyMatchers);
return this;
}
private void addJsonBodyVerification(SingleContractMetadata contractMetadata,
Object responseBody, BodyMatchers bodyMatchers) {
private void addJsonBodyVerification(SingleContractMetadata contractMetadata, Object responseBody,
BodyMatchers bodyMatchers) {
JsonBodyVerificationBuilder jsonBodyVerificationBuilder = new JsonBodyVerificationBuilder(
this.generatedClassMetaData.configProperties.getAssertJsonSize(),
this.templateProcessor, this.contractTemplate,
contractMetadata.getContract(),
Optional.of(this.blockBuilder.getLineEnding()),
this.generatedClassMetaData.configProperties.getAssertJsonSize(), this.templateProcessor,
this.contractTemplate, contractMetadata.getContract(), Optional.of(this.blockBuilder.getLineEnding()),
bodyParser::postProcessJsonPath);
// TODO: Refactor spock from should comment out bdd blocks
Object convertedResponseBody = jsonBodyVerificationBuilder
.addJsonResponseBodyCheck(this.blockBuilder, responseBody, bodyMatchers,
this.bodyParser.responseAsString(),
this.generatedClassMetaData.configProperties
.getTestFramework() != TestFramework.SPOCK);
if (!(convertedResponseBody instanceof Map
|| convertedResponseBody instanceof List
Object convertedResponseBody = jsonBodyVerificationBuilder.addJsonResponseBodyCheck(this.blockBuilder,
responseBody, bodyMatchers, this.bodyParser.responseAsString(),
this.generatedClassMetaData.configProperties.getTestFramework() != TestFramework.SPOCK);
if (!(convertedResponseBody instanceof Map || convertedResponseBody instanceof List
|| convertedResponseBody instanceof ExecutionProperty)) {
simpleTextResponseBodyCheck(contractMetadata, convertedResponseBody);
}
@@ -130,13 +121,12 @@ class GenericJsonBodyThen implements Then {
}
private void processBodyElement(String property, ExecutionProperty exec) {
this.blockBuilder.addLineWithEnding(exec.insertValue(this.bodyParser
.postProcessJsonPath("parsedJson.read(\"$" + property + "\")")));
this.blockBuilder.addLineWithEnding(
exec.insertValue(this.bodyParser.postProcessJsonPath("parsedJson.read(\"$" + property + "\")")));
}
private void processBodyElement(String property, Map.Entry entry) {
processBodyElement(property, getMapKeyReferenceString(property, entry),
entry.getValue());
processBodyElement(property, getMapKeyReferenceString(property, entry), entry.getValue());
}
private void processBodyElement(String property, Map map) {
@@ -193,29 +183,23 @@ class GenericJsonBodyThen implements Then {
return self.substring(0, index);
}
private void simpleTextResponseBodyCheck(SingleContractMetadata metadata,
Object convertedResponseBody) {
this.blockBuilder.addLineWithEnding(
getSimpleResponseBodyString(this.bodyParser.responseAsString()));
this.bodyAssertionLineCreator.appendBodyAssertionLine(metadata, "",
convertedResponseBody);
private void simpleTextResponseBodyCheck(SingleContractMetadata metadata, Object convertedResponseBody) {
this.blockBuilder.addLineWithEnding(getSimpleResponseBodyString(this.bodyParser.responseAsString()));
this.bodyAssertionLineCreator.appendBodyAssertionLine(metadata, "", convertedResponseBody);
this.blockBuilder.addEndingIfNotPresent();
}
private String getSimpleResponseBodyString(String responseString) {
return "String responseBody = " + responseString
+ this.blockBuilder.getLineEnding();
return "String responseBody = " + responseString + this.blockBuilder.getLineEnding();
}
@Override
public boolean accept(SingleContractMetadata metadata) {
ContentType outputTestContentType = metadata.getOutputTestContentType();
return JSON == outputTestContentType
|| mostLikelyJson(outputTestContentType, metadata);
return JSON == outputTestContentType || mostLikelyJson(outputTestContentType, metadata);
}
private boolean mostLikelyJson(ContentType outputTestContentType,
SingleContractMetadata metadata) {
private boolean mostLikelyJson(ContentType outputTestContentType, SingleContractMetadata metadata) {
return DEFINED == outputTestContentType && metadata.evaluatesToJson();
}

View File

@@ -33,38 +33,33 @@ class GenericTextBodyThen implements Then {
private final ComparisonBuilder comparisonBuilder;
GenericTextBodyThen(BlockBuilder blockBuilder, GeneratedClassMetaData metaData,
BodyParser bodyParser, ComparisonBuilder comparisonBuilder) {
GenericTextBodyThen(BlockBuilder blockBuilder, GeneratedClassMetaData metaData, BodyParser bodyParser,
ComparisonBuilder comparisonBuilder) {
this.blockBuilder = blockBuilder;
this.bodyParser = bodyParser;
this.comparisonBuilder = comparisonBuilder;
this.bodyAssertionLineCreator = new BodyAssertionLineCreator(blockBuilder,
metaData, this.bodyParser.byteArrayString(), this.comparisonBuilder);
this.bodyAssertionLineCreator = new BodyAssertionLineCreator(blockBuilder, metaData,
this.bodyParser.byteArrayString(), this.comparisonBuilder);
}
@Override
public MethodVisitor<Then> apply(SingleContractMetadata metadata) {
Object convertedResponseBody = this.bodyParser.convertResponseBody(metadata);
if (convertedResponseBody instanceof String) {
convertedResponseBody = this.bodyParser
.escapeForSimpleTextAssertion(convertedResponseBody.toString());
convertedResponseBody = this.bodyParser.escapeForSimpleTextAssertion(convertedResponseBody.toString());
}
simpleTextResponseBodyCheck(metadata, convertedResponseBody);
return this;
}
private void simpleTextResponseBodyCheck(SingleContractMetadata metadata,
Object convertedResponseBody) {
this.blockBuilder.addLineWithEnding(
getSimpleResponseBodyString(this.bodyParser.responseAsString()));
this.bodyAssertionLineCreator.appendBodyAssertionLine(metadata, "",
convertedResponseBody);
private void simpleTextResponseBodyCheck(SingleContractMetadata metadata, Object convertedResponseBody) {
this.blockBuilder.addLineWithEnding(getSimpleResponseBodyString(this.bodyParser.responseAsString()));
this.bodyAssertionLineCreator.appendBodyAssertionLine(metadata, "", convertedResponseBody);
this.blockBuilder.addEndingIfNotPresent();
}
private String getSimpleResponseBodyString(String responseString) {
return "String responseBody = " + responseString
+ this.blockBuilder.getLineEnding();
return "String responseBody = " + responseString + this.blockBuilder.getLineEnding();
}
@Override
@@ -72,8 +67,7 @@ class GenericTextBodyThen implements Then {
ContentType outputTestContentType = metadata.getOutputTestContentType();
return outputTestContentType != JSON && outputTestContentType != XML
&& this.bodyParser.responseBody(metadata) != null
&& !(this.bodyParser.responseBody(metadata)
.getServerValue() instanceof FromFileProperty);
&& !(this.bodyParser.responseBody(metadata).getServerValue() instanceof FromFileProperty);
}
}

View File

@@ -39,11 +39,10 @@ class GenericXmlBodyThen implements Then {
public MethodVisitor<Then> apply(SingleContractMetadata metadata) {
BodyMatchers bodyMatchers = this.bodyParser.responseBodyMatchers(metadata);
Object convertedResponseBody = this.bodyParser.convertResponseBody(metadata);
XmlBodyVerificationBuilder xmlBodyVerificationBuilder = new XmlBodyVerificationBuilder(
metadata.getContract(), Optional.of(this.blockBuilder.getLineEnding()));
xmlBodyVerificationBuilder.addXmlResponseBodyCheck(this.blockBuilder,
convertedResponseBody, bodyMatchers, this.bodyParser.responseAsString(),
true);
XmlBodyVerificationBuilder xmlBodyVerificationBuilder = new XmlBodyVerificationBuilder(metadata.getContract(),
Optional.of(this.blockBuilder.getLineEnding()));
xmlBodyVerificationBuilder.addXmlResponseBodyCheck(this.blockBuilder, convertedResponseBody, bodyMatchers,
this.bodyParser.responseAsString(), true);
return this;
}

View File

@@ -28,8 +28,7 @@ class GroovyClassMetaData implements ClassMetaData, DefaultClassMetadata {
private final GeneratedClassMetaData generatedClassMetaData;
GroovyClassMetaData(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
GroovyClassMetaData(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@@ -46,11 +45,8 @@ class GroovyClassMetaData implements ClassMetaData, DefaultClassMetadata {
@Override
public ClassMetaData suffix() {
String suffix = StringUtils.hasText(
this.generatedClassMetaData.configProperties.getNameSuffixForTests())
? this.generatedClassMetaData.configProperties
.getNameSuffixForTests()
: "Spec";
String suffix = StringUtils.hasText(this.generatedClassMetaData.configProperties.getNameSuffixForTests())
? this.generatedClassMetaData.configProperties.getNameSuffixForTests() : "Spec";
if (!this.blockBuilder.endsWith(suffix)) {
this.blockBuilder.addAtTheEnd(suffix);
}
@@ -64,8 +60,7 @@ class GroovyClassMetaData implements ClassMetaData, DefaultClassMetadata {
@Override
public ClassMetaData packageDefinition() {
this.blockBuilder.addLineWithEnding(
"package " + this.generatedClassMetaData.generatedClassData.classPackage);
this.blockBuilder.addLineWithEnding("package " + this.generatedClassMetaData.generatedClassData.classPackage);
return this;
}
@@ -73,9 +68,9 @@ class GroovyClassMetaData implements ClassMetaData, DefaultClassMetadata {
public ClassMetaData parentClass() {
ContractVerifierConfigProperties properties = generatedClassMetaData().configProperties;
String includedDirectoryRelativePath = generatedClassMetaData().includedDirectoryRelativePath;
String baseClass = baseClassProvider().retrieveBaseClass(
properties.getBaseClassMappings(), properties.getPackageWithBaseClasses(),
properties.getBaseClassForTests(), includedDirectoryRelativePath);
String baseClass = baseClassProvider().retrieveBaseClass(properties.getBaseClassMappings(),
properties.getPackageWithBaseClasses(), properties.getBaseClassForTests(),
includedDirectoryRelativePath);
baseClass = StringUtils.hasText(baseClass) ? baseClass : "Specification";
int lastIndexOf = baseClass.lastIndexOf(".");
if (lastIndexOf > 0) {
@@ -102,8 +97,7 @@ class GroovyClassMetaData implements ClassMetaData, DefaultClassMetadata {
@Override
public boolean accept() {
return this.generatedClassMetaData.configProperties
.getTestFramework() == TestFramework.SPOCK;
return this.generatedClassMetaData.configProperties.getTestFramework() == TestFramework.SPOCK;
}
}

View File

@@ -40,8 +40,7 @@ interface GroovyComparisonBuilder extends ComparisonBuilder {
@Override
default String isEqualTo(Number number) {
String numberString = number instanceof Long ? number.toString() + "L"
: number.toString();
String numberString = number instanceof Long ? number.toString() + "L" : number.toString();
return " == " + numberString;
}
@@ -58,8 +57,7 @@ interface GroovyComparisonBuilder extends ComparisonBuilder {
@Override
default String matchesEscaped(String pattern) {
return " ==~ java.util.regex.Pattern.compile("
+ bodyParser().quotedEscapedShortText(pattern) + ")";
return " ==~ java.util.regex.Pattern.compile(" + bodyParser().quotedEscapedShortText(pattern) + ")";
}
@Override

View File

@@ -54,15 +54,13 @@ class ImportsBuilder {
}
ImportsBuilder jUnit4() {
this.parentBuilder.imports(new JUnit4Imports(builder, metaData),
new JUnit4IgnoreImports(builder, metaData),
this.parentBuilder.imports(new JUnit4Imports(builder, metaData), new JUnit4IgnoreImports(builder, metaData),
new JUnit4OrderImports(builder, metaData));
return this;
}
ImportsBuilder jUnit5() {
this.parentBuilder.imports(new JUnit5Imports(builder, metaData),
new JUnit5IgnoreImports(builder, metaData),
this.parentBuilder.imports(new JUnit5Imports(builder, metaData), new JUnit5IgnoreImports(builder, metaData),
new JUnit5OrderImports(builder, metaData));
return this;
}
@@ -73,8 +71,7 @@ class ImportsBuilder {
}
ImportsBuilder spock() {
this.parentBuilder.imports(new SpockImports(builder, metaData),
new SpockIgnoreImports(builder, metaData),
this.parentBuilder.imports(new SpockImports(builder, metaData), new SpockIgnoreImports(builder, metaData),
new SpockOrderImports(builder, metaData));
return this;
}
@@ -89,8 +86,7 @@ class ImportsBuilder {
this.parentBuilder.imports(new MockMvcRestAssuredImports(builder, metaData),
new ExplicitRestAssuredImports(builder, metaData),
new WebTestClientRestAssuredImports(builder, metaData));
this.parentBuilder.staticImports(
new MockMvcRestAssuredStaticImports(builder, metaData),
this.parentBuilder.staticImports(new MockMvcRestAssuredStaticImports(builder, metaData),
new ExplicitRestAssuredStaticImports(builder, metaData),
new WebTestClientRestAssured3StaticImports(builder, metaData));
return this;

View File

@@ -25,8 +25,7 @@ class JUnit4IgnoreImports implements Imports {
private final GeneratedClassMetaData generatedClassMetaData;
JUnit4IgnoreImports(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
JUnit4IgnoreImports(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@@ -39,12 +38,10 @@ class JUnit4IgnoreImports implements Imports {
@Override
public boolean accept() {
return this.generatedClassMetaData.configProperties
.getTestFramework() == TestFramework.JUNIT
return this.generatedClassMetaData.configProperties.getTestFramework() == TestFramework.JUNIT
&& this.generatedClassMetaData.listOfFiles.stream()
.anyMatch(metadata -> metadata.isIgnored()
|| metadata.getConvertedContractWithMetadata().stream()
.anyMatch(SingleContractMetadata::isIgnored));
.anyMatch(metadata -> metadata.isIgnored() || metadata.getConvertedContractWithMetadata()
.stream().anyMatch(SingleContractMetadata::isIgnored));
}
}

View File

@@ -29,23 +29,20 @@ class JUnit4IgnoreMethodAnnotation implements MethodAnnotations {
private static final String[] ANNOTATIONS = { "@Ignore" };
JUnit4IgnoreMethodAnnotation(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
JUnit4IgnoreMethodAnnotation(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@Override
public MethodVisitor<MethodAnnotations> apply(
SingleContractMetadata singleContractMetadata) {
public MethodVisitor<MethodAnnotations> apply(SingleContractMetadata singleContractMetadata) {
Arrays.stream(ANNOTATIONS).forEach(this.blockBuilder::addIndented);
return this;
}
@Override
public boolean accept(SingleContractMetadata singleContractMetadata) {
return this.generatedClassMetaData.configProperties
.getTestFramework() == TestFramework.JUNIT
return this.generatedClassMetaData.configProperties.getTestFramework() == TestFramework.JUNIT
&& (singleContractMetadata.getContractMetadata().isIgnored()
|| singleContractMetadata.getContract().isIgnored());
}

View File

@@ -28,23 +28,20 @@ class JUnit4Imports implements Imports {
private static final String[] IMPORTS = { "org.junit.Test", "org.junit.Rule" };
JUnit4Imports(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
JUnit4Imports(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@Override
public Imports call() {
Arrays.stream(IMPORTS)
.forEach(s -> this.blockBuilder.addLineWithEnding("import " + s));
Arrays.stream(IMPORTS).forEach(s -> this.blockBuilder.addLineWithEnding("import " + s));
return this;
}
@Override
public boolean accept() {
return this.generatedClassMetaData.configProperties
.getTestFramework() == TestFramework.JUNIT;
return this.generatedClassMetaData.configProperties.getTestFramework() == TestFramework.JUNIT;
}
}

View File

@@ -29,21 +29,18 @@ class JUnit4MethodAnnotation implements MethodAnnotations {
private static final String[] ANNOTATIONS = { "@Test" };
JUnit4MethodAnnotation(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
JUnit4MethodAnnotation(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@Override
public boolean accept(SingleContractMetadata singleContractMetadata) {
return this.generatedClassMetaData.configProperties
.getTestFramework() == TestFramework.JUNIT;
return this.generatedClassMetaData.configProperties.getTestFramework() == TestFramework.JUNIT;
}
@Override
public MethodVisitor<MethodAnnotations> apply(
SingleContractMetadata singleContractMetadata) {
public MethodVisitor<MethodAnnotations> apply(SingleContractMetadata singleContractMetadata) {
Arrays.stream(ANNOTATIONS).forEach(this.blockBuilder::addIndented);
return this;
}

View File

@@ -26,11 +26,9 @@ class JUnit4OrderClassAnnotation implements ClassAnnotation {
private final GeneratedClassMetaData generatedClassMetaData;
private static final String[] ANNOTATIONS = {
"@FixMethodOrder(MethodSorters.NAME_ASCENDING)" };
private static final String[] ANNOTATIONS = { "@FixMethodOrder(MethodSorters.NAME_ASCENDING)" };
JUnit4OrderClassAnnotation(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
JUnit4OrderClassAnnotation(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@@ -43,10 +41,8 @@ class JUnit4OrderClassAnnotation implements ClassAnnotation {
@Override
public boolean accept() {
return this.generatedClassMetaData.configProperties
.getTestFramework() == TestFramework.JUNIT
&& this.generatedClassMetaData.listOfFiles.stream()
.anyMatch(meta -> meta.getOrder() != null);
return this.generatedClassMetaData.configProperties.getTestFramework() == TestFramework.JUNIT
&& this.generatedClassMetaData.listOfFiles.stream().anyMatch(meta -> meta.getOrder() != null);
}
}

View File

@@ -26,28 +26,23 @@ class JUnit4OrderImports implements Imports {
private final GeneratedClassMetaData generatedClassMetaData;
private static final String[] IMPORTS = { "org.junit.FixMethodOrder",
"org.junit.runners.MethodSorters" };
private static final String[] IMPORTS = { "org.junit.FixMethodOrder", "org.junit.runners.MethodSorters" };
JUnit4OrderImports(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
JUnit4OrderImports(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@Override
public Imports call() {
Arrays.stream(IMPORTS)
.forEach(s -> this.blockBuilder.addLineWithEnding("import " + s));
Arrays.stream(IMPORTS).forEach(s -> this.blockBuilder.addLineWithEnding("import " + s));
return this;
}
@Override
public boolean accept() {
return this.generatedClassMetaData.configProperties
.getTestFramework() == TestFramework.JUNIT
&& this.generatedClassMetaData.listOfFiles.stream()
.anyMatch(meta -> meta.getOrder() != null);
return this.generatedClassMetaData.configProperties.getTestFramework() == TestFramework.JUNIT
&& this.generatedClassMetaData.listOfFiles.stream().anyMatch(meta -> meta.getOrder() != null);
}
}

View File

@@ -25,8 +25,7 @@ class JUnit5IgnoreImports implements Imports {
private final GeneratedClassMetaData generatedClassMetaData;
JUnit5IgnoreImports(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
JUnit5IgnoreImports(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@@ -39,12 +38,10 @@ class JUnit5IgnoreImports implements Imports {
@Override
public boolean accept() {
return this.generatedClassMetaData.configProperties
.getTestFramework() == TestFramework.JUNIT5
return this.generatedClassMetaData.configProperties.getTestFramework() == TestFramework.JUNIT5
&& this.generatedClassMetaData.listOfFiles.stream()
.anyMatch(metadata -> metadata.isIgnored()
|| metadata.getConvertedContractWithMetadata().stream()
.anyMatch(SingleContractMetadata::isIgnored));
.anyMatch(metadata -> metadata.isIgnored() || metadata.getConvertedContractWithMetadata()
.stream().anyMatch(SingleContractMetadata::isIgnored));
}
}

View File

@@ -29,23 +29,20 @@ class JUnit5IgnoreMethodAnnotation implements MethodAnnotations {
private static final String[] ANNOTATIONS = { "@Disabled" };
JUnit5IgnoreMethodAnnotation(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
JUnit5IgnoreMethodAnnotation(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@Override
public MethodVisitor<MethodAnnotations> apply(
SingleContractMetadata singleContractMetadata) {
public MethodVisitor<MethodAnnotations> apply(SingleContractMetadata singleContractMetadata) {
Arrays.stream(ANNOTATIONS).forEach(this.blockBuilder::addIndented);
return this;
}
@Override
public boolean accept(SingleContractMetadata singleContractMetadata) {
return this.generatedClassMetaData.configProperties
.getTestFramework() == TestFramework.JUNIT5
return this.generatedClassMetaData.configProperties.getTestFramework() == TestFramework.JUNIT5
&& (singleContractMetadata.getContractMetadata().isIgnored()
|| singleContractMetadata.getContract().isIgnored());
}

View File

@@ -29,23 +29,20 @@ class JUnit5Imports implements Imports {
private static final String[] IMPORTS = { "org.junit.jupiter.api.Test",
"org.junit.jupiter.api.extension.ExtendWith" };
JUnit5Imports(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
JUnit5Imports(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@Override
public Imports call() {
Arrays.stream(IMPORTS)
.forEach(s -> this.blockBuilder.addLineWithEnding("import " + s));
Arrays.stream(IMPORTS).forEach(s -> this.blockBuilder.addLineWithEnding("import " + s));
return this;
}
@Override
public boolean accept() {
return this.generatedClassMetaData.configProperties
.getTestFramework() == TestFramework.JUNIT5;
return this.generatedClassMetaData.configProperties.getTestFramework() == TestFramework.JUNIT5;
}
}

View File

@@ -29,23 +29,20 @@ class JUnit5MethodAnnotation implements MethodAnnotations {
private static final String[] ANNOTATIONS = { "@Test" };
JUnit5MethodAnnotation(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
JUnit5MethodAnnotation(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@Override
public MethodVisitor<MethodAnnotations> apply(
SingleContractMetadata singleContractMetadata) {
public MethodVisitor<MethodAnnotations> apply(SingleContractMetadata singleContractMetadata) {
Arrays.stream(ANNOTATIONS).forEach(this.blockBuilder::addIndented);
return this;
}
@Override
public boolean accept(SingleContractMetadata singleContractMetadata) {
return this.generatedClassMetaData.configProperties
.getTestFramework() == TestFramework.JUNIT5;
return this.generatedClassMetaData.configProperties.getTestFramework() == TestFramework.JUNIT5;
}
}

View File

@@ -26,11 +26,9 @@ class JUnit5OrderClassAnnotation implements ClassAnnotation {
private final GeneratedClassMetaData generatedClassMetaData;
private static final String[] ANNOTATIONS = {
"@TestMethodOrder(MethodOrderer.Alphanumeric.class)" };
private static final String[] ANNOTATIONS = { "@TestMethodOrder(MethodOrderer.Alphanumeric.class)" };
JUnit5OrderClassAnnotation(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
JUnit5OrderClassAnnotation(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@@ -43,10 +41,8 @@ class JUnit5OrderClassAnnotation implements ClassAnnotation {
@Override
public boolean accept() {
return this.generatedClassMetaData.configProperties
.getTestFramework() == TestFramework.JUNIT5
&& this.generatedClassMetaData.listOfFiles.stream()
.anyMatch(meta -> meta.getOrder() != null);
return this.generatedClassMetaData.configProperties.getTestFramework() == TestFramework.JUNIT5
&& this.generatedClassMetaData.listOfFiles.stream().anyMatch(meta -> meta.getOrder() != null);
}
}

View File

@@ -29,25 +29,21 @@ class JUnit5OrderImports implements Imports {
private static final String[] IMPORTS = { "org.junit.jupiter.api.TestMethodOrder",
"org.junit.jupiter.api.MethodOrderer" };
JUnit5OrderImports(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
JUnit5OrderImports(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@Override
public Imports call() {
Arrays.stream(IMPORTS)
.forEach(s -> this.blockBuilder.addLineWithEnding("import " + s));
Arrays.stream(IMPORTS).forEach(s -> this.blockBuilder.addLineWithEnding("import " + s));
return this;
}
@Override
public boolean accept() {
return this.generatedClassMetaData.configProperties
.getTestFramework() == TestFramework.JUNIT5
&& this.generatedClassMetaData.listOfFiles.stream()
.anyMatch(meta -> meta.getOrder() != null);
return this.generatedClassMetaData.configProperties.getTestFramework() == TestFramework.JUNIT5
&& this.generatedClassMetaData.listOfFiles.stream().anyMatch(meta -> meta.getOrder() != null);
}
}

View File

@@ -27,8 +27,7 @@ class JavaClassMetaData implements ClassMetaData, DefaultClassMetadata {
private final GeneratedClassMetaData generatedClassMetaData;
JavaClassMetaData(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
JavaClassMetaData(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@@ -41,11 +40,8 @@ class JavaClassMetaData implements ClassMetaData, DefaultClassMetadata {
@Override
public ClassMetaData suffix() {
String suffix = StringUtils.hasText(
this.generatedClassMetaData.configProperties.getNameSuffixForTests())
? this.generatedClassMetaData.configProperties
.getNameSuffixForTests()
: "Test";
String suffix = StringUtils.hasText(this.generatedClassMetaData.configProperties.getNameSuffixForTests())
? this.generatedClassMetaData.configProperties.getNameSuffixForTests() : "Test";
if (!this.blockBuilder.endsWith(suffix)) {
this.blockBuilder.addAtTheEnd(suffix);
}
@@ -94,12 +90,9 @@ class JavaClassMetaData implements ClassMetaData, DefaultClassMetadata {
@Override
public boolean accept() {
return this.generatedClassMetaData.configProperties
.getTestFramework() == TestFramework.JUNIT
|| this.generatedClassMetaData.configProperties
.getTestFramework() == TestFramework.JUNIT5
|| this.generatedClassMetaData.configProperties
.getTestFramework() == TestFramework.TESTNG;
return this.generatedClassMetaData.configProperties.getTestFramework() == TestFramework.JUNIT
|| this.generatedClassMetaData.configProperties.getTestFramework() == TestFramework.JUNIT5
|| this.generatedClassMetaData.configProperties.getTestFramework() == TestFramework.TESTNG;
}
}

View File

@@ -23,17 +23,15 @@ class JavaJaxRsThen extends JaxRsThen {
private final GeneratedClassMetaData metaData;
JavaJaxRsThen(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
super(blockBuilder, generatedClassMetaData, JaxRsBodyParser.INSTANCE,
ComparisonBuilder.JAVA_HTTP_INSTANCE);
JavaJaxRsThen(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
super(blockBuilder, generatedClassMetaData, JaxRsBodyParser.INSTANCE, ComparisonBuilder.JAVA_HTTP_INSTANCE);
this.metaData = generatedClassMetaData;
}
@Override
public boolean accept(SingleContractMetadata singleContractMetadata) {
return super.accept(singleContractMetadata) && this.metaData.configProperties
.getTestFramework() != TestFramework.SPOCK;
return super.accept(singleContractMetadata)
&& this.metaData.configProperties.getTestFramework() != TestFramework.SPOCK;
}
}

View File

@@ -23,16 +23,15 @@ class JavaJaxRsWhen extends JaxRsWhen {
private final GeneratedClassMetaData metaData;
JavaJaxRsWhen(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
JavaJaxRsWhen(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
super(blockBuilder, generatedClassMetaData, JaxRsBodyParser.INSTANCE);
this.metaData = generatedClassMetaData;
}
@Override
public boolean accept(SingleContractMetadata singleContractMetadata) {
return super.accept(singleContractMetadata) && this.metaData.configProperties
.getTestFramework() != TestFramework.SPOCK;
return super.accept(singleContractMetadata)
&& this.metaData.configProperties.getTestFramework() != TestFramework.SPOCK;
}
}

View File

@@ -23,16 +23,15 @@ class JavaMessagingGiven extends MessagingGiven {
private final GeneratedClassMetaData generatedClassMetaData;
JavaMessagingGiven(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
JavaMessagingGiven(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
super(blockBuilder, generatedClassMetaData, JavaMessagingBodyParser.INSTANCE);
this.generatedClassMetaData = generatedClassMetaData;
}
@Override
public boolean accept(SingleContractMetadata metadata) {
return super.accept(metadata) && this.generatedClassMetaData.configProperties
.getTestFramework() != TestFramework.SPOCK;
return super.accept(metadata)
&& this.generatedClassMetaData.configProperties.getTestFramework() != TestFramework.SPOCK;
}
}

View File

@@ -23,17 +23,15 @@ class JavaMessagingWithBodyThen extends MessagingWithBodyThen {
private final GeneratedClassMetaData metaData;
JavaMessagingWithBodyThen(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
super(blockBuilder, generatedClassMetaData,
ComparisonBuilder.JAVA_MESSAGING_INSTANCE);
JavaMessagingWithBodyThen(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
super(blockBuilder, generatedClassMetaData, ComparisonBuilder.JAVA_MESSAGING_INSTANCE);
this.metaData = generatedClassMetaData;
}
@Override
public boolean accept(SingleContractMetadata singleContractMetadata) {
return super.accept(singleContractMetadata) && this.metaData.configProperties
.getTestFramework() != TestFramework.SPOCK;
return super.accept(singleContractMetadata)
&& this.metaData.configProperties.getTestFramework() != TestFramework.SPOCK;
}
}

View File

@@ -23,16 +23,15 @@ class JavaRestAssuredGiven extends RestAssuredGiven {
private final GeneratedClassMetaData metaData;
JavaRestAssuredGiven(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
JavaRestAssuredGiven(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
super(blockBuilder, generatedClassMetaData, RestAssuredBodyParser.INSTANCE);
this.metaData = generatedClassMetaData;
}
@Override
public boolean accept(SingleContractMetadata singleContractMetadata) {
return super.accept(singleContractMetadata) && this.metaData.configProperties
.getTestFramework() != TestFramework.SPOCK;
return super.accept(singleContractMetadata)
&& this.metaData.configProperties.getTestFramework() != TestFramework.SPOCK;
}
}

View File

@@ -23,8 +23,7 @@ class JavaRestAssuredThen extends RestAssuredThen {
private final GeneratedClassMetaData metaData;
JavaRestAssuredThen(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
JavaRestAssuredThen(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
super(blockBuilder, generatedClassMetaData, RestAssuredBodyParser.INSTANCE,
ComparisonBuilder.JAVA_HTTP_INSTANCE);
this.metaData = generatedClassMetaData;
@@ -32,8 +31,8 @@ class JavaRestAssuredThen extends RestAssuredThen {
@Override
public boolean accept(SingleContractMetadata singleContractMetadata) {
return super.accept(singleContractMetadata) && this.metaData.configProperties
.getTestFramework() != TestFramework.SPOCK;
return super.accept(singleContractMetadata)
&& this.metaData.configProperties.getTestFramework() != TestFramework.SPOCK;
}
}

View File

@@ -23,16 +23,15 @@ class JavaRestAssuredWhen extends RestAssuredWhen {
private final GeneratedClassMetaData metaData;
JavaRestAssuredWhen(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
JavaRestAssuredWhen(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
super(blockBuilder, generatedClassMetaData, RestAssuredBodyParser.INSTANCE);
this.metaData = generatedClassMetaData;
}
@Override
public boolean accept(SingleContractMetadata singleContractMetadata) {
return super.accept(singleContractMetadata) && this.metaData.configProperties
.getTestFramework() != TestFramework.SPOCK;
return super.accept(singleContractMetadata)
&& this.metaData.configProperties.getTestFramework() != TestFramework.SPOCK;
}
}

View File

@@ -34,32 +34,29 @@ public class JavaTestGenerator implements SingleTestGenerator {
private static final Log log = LogFactory.getLog(JavaTestGenerator.class);
@Override
public String buildClass(ContractVerifierConfigProperties properties,
Collection<ContractMetadata> listOfFiles, String className,
String classPackage, String includedDirectoryRelativePath) {
public String buildClass(ContractVerifierConfigProperties properties, Collection<ContractMetadata> listOfFiles,
String className, String classPackage, String includedDirectoryRelativePath) {
throw new UnsupportedOperationException("Deprecated method");
}
@Override
public String buildClass(ContractVerifierConfigProperties properties,
Collection<ContractMetadata> listOfFiles,
public String buildClass(ContractVerifierConfigProperties properties, Collection<ContractMetadata> listOfFiles,
String includedDirectoryRelativePath, GeneratedClassData generatedClassData) {
BlockBuilder builder = new BlockBuilder("\t");
GeneratedClassMetaData metaData = new GeneratedClassMetaData(properties,
listOfFiles, includedDirectoryRelativePath, generatedClassData);
GeneratedClassMetaData metaData = new GeneratedClassMetaData(properties, listOfFiles,
includedDirectoryRelativePath, generatedClassData);
return classAsString(builder, metaData);
}
private String classAsString(BlockBuilder builder, GeneratedClassMetaData metaData) {
SingleMethodBuilder methodBuilder = singleMethodBuilder(builder, metaData);
ClassBodyBuilder bodyBuilder = classBodyBuilder(builder, metaData, methodBuilder);
GeneratedTestClass generatedTestClass = generatedTestClass(builder, metaData,
bodyBuilder);
GeneratedTestClass generatedTestClass = generatedTestClass(builder, metaData, bodyBuilder);
return generatedTestClass.asClassString();
}
GeneratedTestClass generatedTestClass(BlockBuilder builder,
GeneratedClassMetaData metaData, ClassBodyBuilder bodyBuilder) {
GeneratedTestClass generatedTestClass(BlockBuilder builder, GeneratedClassMetaData metaData,
ClassBodyBuilder bodyBuilder) {
// @formatter:off
return GeneratedTestClassBuilder.builder(builder, metaData)
.classBodyBuilder(bodyBuilder)
@@ -90,8 +87,8 @@ public class JavaTestGenerator implements SingleTestGenerator {
// @formatter:on
}
ClassBodyBuilder classBodyBuilder(BlockBuilder builder,
GeneratedClassMetaData metaData, SingleMethodBuilder methodBuilder) {
ClassBodyBuilder classBodyBuilder(BlockBuilder builder, GeneratedClassMetaData metaData,
SingleMethodBuilder methodBuilder) {
// @formatter:off
return ClassBodyBuilder.builder(builder, metaData)
.field()
@@ -101,8 +98,7 @@ public class JavaTestGenerator implements SingleTestGenerator {
// @formatter:on
}
SingleMethodBuilder singleMethodBuilder(BlockBuilder builder,
GeneratedClassMetaData metaData) {
SingleMethodBuilder singleMethodBuilder(BlockBuilder builder, GeneratedClassMetaData metaData) {
// @formatter:off
return SingleMethodBuilder.builder(builder, metaData)
.methodAnnotation()

View File

@@ -23,8 +23,8 @@ interface JaxRsAcceptor {
default boolean acceptType(GeneratedClassMetaData generatedClassMetaData,
SingleContractMetadata singleContractMetadata) {
return generatedClassMetaData.configProperties
.getTestMode() == TestMode.JAXRSCLIENT && singleContractMetadata.isHttp();
return generatedClassMetaData.configProperties.getTestMode() == TestMode.JAXRSCLIENT
&& singleContractMetadata.isHttp();
}
}

View File

@@ -26,26 +26,22 @@ class JaxRsImports implements Imports {
private final GeneratedClassMetaData generatedClassMetaData;
private static final String[] IMPORTS = { "javax.ws.rs.client.Entity",
"javax.ws.rs.core.Response" };
private static final String[] IMPORTS = { "javax.ws.rs.client.Entity", "javax.ws.rs.core.Response" };
JaxRsImports(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
JaxRsImports(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@Override
public Imports call() {
Arrays.stream(IMPORTS)
.forEach(s -> this.blockBuilder.addLineWithEnding("import " + s));
Arrays.stream(IMPORTS).forEach(s -> this.blockBuilder.addLineWithEnding("import " + s));
return this;
}
@Override
public boolean accept() {
return this.generatedClassMetaData.configProperties
.getTestMode() == TestMode.JAXRSCLIENT;
return this.generatedClassMetaData.configProperties.getTestMode() == TestMode.JAXRSCLIENT;
}
}

View File

@@ -47,9 +47,8 @@ class JaxRsRequestCookiesWhen implements When {
.filter(cookie -> !cookieOfAbsentType(cookie)).iterator();
while (iterator.hasNext()) {
Cookie cookie = iterator.next();
String value = ".cookie(" + this.bodyParser.quotedShortText(cookie.getKey())
+ ", " + this.bodyParser.quotedShortText(MapConverter
.getTestSideValuesForNonBody(cookie.getServerValue()))
String value = ".cookie(" + this.bodyParser.quotedShortText(cookie.getKey()) + ", "
+ this.bodyParser.quotedShortText(MapConverter.getTestSideValuesForNonBody(cookie.getServerValue()))
+ ")";
if (iterator.hasNext()) {
this.blockBuilder.addLine(value);
@@ -62,20 +61,18 @@ class JaxRsRequestCookiesWhen implements When {
private boolean cookieOfAbsentType(Cookie cookie) {
return cookie.getServerValue() instanceof MatchingStrategy
&& ((MatchingStrategy) cookie.getServerValue())
.getType() == MatchingStrategy.Type.ABSENT;
&& ((MatchingStrategy) cookie.getServerValue()).getType() == MatchingStrategy.Type.ABSENT;
}
@Override
public boolean accept(SingleContractMetadata metadata) {
return metadata.getContract().getRequest().getCookies() != null && !metadata
.getContract().getRequest().getCookies().getEntries().isEmpty()
return metadata.getContract().getRequest().getCookies() != null
&& !metadata.getContract().getRequest().getCookies().getEntries().isEmpty()
&& !hasOnlyAbsentCookies(metadata);
}
private boolean hasOnlyAbsentCookies(SingleContractMetadata metadata) {
Set<Cookie> entries = metadata.getContract().getRequest().getCookies()
.getEntries();
Set<Cookie> entries = metadata.getContract().getRequest().getCookies().getEntries();
long filteredOut = entries.stream().filter(this::cookieOfAbsentType).count();
return filteredOut == entries.size();
}

View File

@@ -44,12 +44,11 @@ class JaxRsRequestHeadersWhen implements When {
}
private void appendHeaders(Request request) {
Iterator<Header> iterator = request.getHeaders().getEntries().stream()
.filter(header -> !headerToIgnore(header)).iterator();
Iterator<Header> iterator = request.getHeaders().getEntries().stream().filter(header -> !headerToIgnore(header))
.iterator();
while (iterator.hasNext()) {
Header header = iterator.next();
String text = ".header(\"" + header.getName() + "\", " + headerValue(header)
+ ")";
String text = ".header(\"" + header.getName() + "\", " + headerValue(header) + ")";
if (iterator.hasNext()) {
this.blockBuilder.addLine(text);
}
@@ -64,8 +63,7 @@ class JaxRsRequestHeadersWhen implements When {
if (headerServerValue instanceof ExecutionProperty) {
return ((ExecutionProperty) headerServerValue).getExecutionCommand();
}
return this.bodyParser.quotedLongText(
MapConverter.getTestSideValuesForNonBody(header.getServerValue()));
return this.bodyParser.quotedLongText(MapConverter.getTestSideValuesForNonBody(header.getServerValue()));
}
private boolean headerToIgnore(Header header) {
@@ -73,26 +71,23 @@ class JaxRsRequestHeadersWhen implements When {
}
private boolean contentTypeOrAccept(Header header) {
return "Content-Type".equalsIgnoreCase(header.getName())
|| "Accept".equalsIgnoreCase(header.getName());
return "Content-Type".equalsIgnoreCase(header.getName()) || "Accept".equalsIgnoreCase(header.getName());
}
private boolean headerOfAbsentType(Header header) {
return header.getServerValue() instanceof MatchingStrategy
&& ((MatchingStrategy) header.getServerValue())
.getType() == MatchingStrategy.Type.ABSENT;
&& ((MatchingStrategy) header.getServerValue()).getType() == MatchingStrategy.Type.ABSENT;
}
@Override
public boolean accept(SingleContractMetadata metadata) {
return metadata.getContract().getRequest().getHeaders() != null && !metadata
.getContract().getRequest().getHeaders().getEntries().isEmpty()
return metadata.getContract().getRequest().getHeaders() != null
&& !metadata.getContract().getRequest().getHeaders().getEntries().isEmpty()
&& !hasHeaderOnlyContentTypeOrAccept(metadata);
}
private boolean hasHeaderOnlyContentTypeOrAccept(SingleContractMetadata metadata) {
Set<Header> entries = metadata.getContract().getRequest().getHeaders()
.getEntries();
Set<Header> entries = metadata.getContract().getRequest().getHeaders().getEntries();
long filteredOut = entries.stream().filter(this::headerToIgnore).count();
return filteredOut == entries.size();
}

View File

@@ -45,10 +45,8 @@ class JaxRsRequestMethodWhen implements When, JaxRsBodyParser {
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();
String contentType = StringUtils.hasText(metadata.getDefinedInputTestContentType())
? metadata.getDefinedInputTestContentType() : type.getMimeType();
Object body = request.getBody().getServerValue();
String value;
if (body instanceof ExecutionProperty) {
@@ -57,16 +55,14 @@ class JaxRsRequestMethodWhen implements When, JaxRsBodyParser {
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);
? 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 + "\"))");
this.blockBuilder.addIndented(
".build(\"" + method.toUpperCase() + "\", entity(" + value + ", \"" + contentType + "\"))");
}
else {
this.blockBuilder.addIndented(".build(\"" + method.toUpperCase() + "\")");

View File

@@ -53,13 +53,12 @@ class JaxRsRequestWhen implements When, JaxRsAcceptor, QueryParamsResolver {
if (request.getHeaders() == null || request.getHeaders().getEntries() == null) {
return "";
}
Header foundHeader = request.getHeaders().getEntries().stream()
.filter(header -> name.equals(header.getName())).findFirst().orElse(null);
Header foundHeader = request.getHeaders().getEntries().stream().filter(header -> name.equals(header.getName()))
.findFirst().orElse(null);
if (foundHeader == null) {
return "";
}
return MapConverter.getTestSideValuesForNonBody(foundHeader.getServerValue())
.toString();
return MapConverter.getTestSideValuesForNonBody(foundHeader.getServerValue()).toString();
}
@Override

View File

@@ -29,8 +29,7 @@ class JaxRsResponseCookiesThen implements Then, MockMvcAcceptor, CookieElementPr
private final BodyParser bodyParser;
JaxRsResponseCookiesThen(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData,
JaxRsResponseCookiesThen(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData,
ComparisonBuilder comparisonBuilder) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;

View File

@@ -53,10 +53,8 @@ class JaxRsResponseHeadersThen implements Then {
Iterator<Header> iterator = headers.getEntries().iterator();
while (iterator.hasNext()) {
Header header = iterator.next();
String text = processHeaderElement(header.getName(),
header.getServerValue() instanceof NotToEscapePattern
? header.getServerValue()
: MapConverter.getTestSideValues(header.getServerValue()));
String text = processHeaderElement(header.getName(), header.getServerValue() instanceof NotToEscapePattern
? header.getServerValue() : MapConverter.getTestSideValues(header.getServerValue()));
if (iterator.hasNext()) {
this.blockBuilder.addLineWithEnding(text);
}
@@ -68,22 +66,17 @@ class JaxRsResponseHeadersThen implements Then {
private String processHeaderElement(String property, Object value) {
if (value instanceof NotToEscapePattern) {
return this.comparisonBuilder
.assertThat("response.getHeaderString(\"" + property + "\")")
+ this.comparisonBuilder.createComparison(
((NotToEscapePattern) value).getServerValue());
return this.comparisonBuilder.assertThat("response.getHeaderString(\"" + property + "\")")
+ this.comparisonBuilder.createComparison(((NotToEscapePattern) value).getServerValue());
}
else if (value instanceof Number) {
return this.comparisonBuilder
.assertThat("response.getHeaderString(\"" + property + "\")", value);
return this.comparisonBuilder.assertThat("response.getHeaderString(\"" + property + "\")", value);
}
else if (value instanceof ExecutionProperty) {
return ((ExecutionProperty) value)
.insertValue("response.getHeaderString(\"" + property + "\")");
return ((ExecutionProperty) value).insertValue("response.getHeaderString(\"" + property + "\")");
}
else {
return this.comparisonBuilder
.assertThat("response.getHeaderString(\"" + property + "\")")
return this.comparisonBuilder.assertThat("response.getHeaderString(\"" + property + "\")")
+ this.comparisonBuilder.createComparison(value);
}
}

View File

@@ -28,23 +28,20 @@ class JaxRsStaticImports implements Imports {
private static final String[] IMPORTS = { "javax.ws.rs.client.Entity.*" };
JaxRsStaticImports(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
JaxRsStaticImports(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@Override
public Imports call() {
Arrays.stream(IMPORTS)
.forEach(s -> this.blockBuilder.addLineWithEnding("import static " + s));
Arrays.stream(IMPORTS).forEach(s -> this.blockBuilder.addLineWithEnding("import static " + s));
return this;
}
@Override
public boolean accept() {
return this.generatedClassMetaData.configProperties
.getTestMode() == TestMode.JAXRSCLIENT;
return this.generatedClassMetaData.configProperties.getTestMode() == TestMode.JAXRSCLIENT;
}
}

View File

@@ -33,9 +33,8 @@ class JaxRsStatusCodeThen implements Then {
@Override
public MethodVisitor<Then> apply(SingleContractMetadata metadata) {
Response response = metadata.getContract().getResponse();
this.blockBuilder
.addIndented(this.comparisonBuilder.assertThat("response.getStatus()",
response.getStatus().getServerValue()))
this.blockBuilder.addIndented(
this.comparisonBuilder.assertThat("response.getStatus()", response.getStatus().getServerValue()))
.addEndingIfNotPresent();
return this;
}

View File

@@ -30,18 +30,14 @@ class JaxRsThen implements Then, BodyMethodVisitor, JaxRsAcceptor {
private final List<Then> thens = new LinkedList<>();
JaxRsThen(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData,
BodyParser bodyParser, ComparisonBuilder comparisonBuilder) {
JaxRsThen(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData, BodyParser bodyParser,
ComparisonBuilder comparisonBuilder) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
this.thens.addAll(Arrays.asList(
new JaxRsStatusCodeThen(this.blockBuilder, comparisonBuilder),
new JaxRsResponseHeadersThen(this.blockBuilder, generatedClassMetaData,
comparisonBuilder),
new JaxRsResponseCookiesThen(this.blockBuilder, generatedClassMetaData,
comparisonBuilder),
new GenericHttpBodyThen(this.blockBuilder, generatedClassMetaData,
bodyParser, comparisonBuilder)));
this.thens.addAll(Arrays.asList(new JaxRsStatusCodeThen(this.blockBuilder, comparisonBuilder),
new JaxRsResponseHeadersThen(this.blockBuilder, generatedClassMetaData, comparisonBuilder),
new JaxRsResponseCookiesThen(this.blockBuilder, generatedClassMetaData, comparisonBuilder),
new GenericHttpBodyThen(this.blockBuilder, generatedClassMetaData, bodyParser, comparisonBuilder)));
}
@Override

View File

@@ -50,8 +50,7 @@ class JaxRsUrlPathWhen implements When, JaxRsAcceptor, QueryParamsResolver {
appendQueryParams(request.getUrl().getQueryParameters());
}
else if (request.getUrlPath() != null) {
this.blockBuilder
.addIndented(".path(" + concreteUrl(request.getUrlPath()) + ")");
this.blockBuilder.addIndented(".path(" + concreteUrl(request.getUrlPath()) + ")");
appendQueryParams(request.getUrlPath().getQueryParameters());
}
}
@@ -69,12 +68,11 @@ class JaxRsUrlPathWhen implements When, JaxRsAcceptor, QueryParamsResolver {
return;
}
this.blockBuilder.addEmptyLine();
Iterator<QueryParameter> iterator = queryParameters.getParameters().stream()
.filter(this::allowedQueryParameter).iterator();
Iterator<QueryParameter> iterator = queryParameters.getParameters().stream().filter(this::allowedQueryParameter)
.iterator();
while (iterator.hasNext()) {
QueryParameter param = iterator.next();
String text = ".queryParam(\"" + param.getName() + "\", \""
+ resolveParamValue(param) + "\")";
String text = ".queryParam(\"" + param.getName() + "\", \"" + resolveParamValue(param) + "\")";
if (iterator.hasNext()) {
this.blockBuilder.addLine(text);
}

View File

@@ -32,18 +32,15 @@ class JaxRsWhen implements When, BodyMethodVisitor, JaxRsAcceptor {
private final List<When> whens = new LinkedList<>();
JaxRsWhen(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData,
JaxRsBodyParser bodyParser) {
JaxRsWhen(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData, JaxRsBodyParser bodyParser) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
this.bodyParser = bodyParser;
this.whens.addAll(Arrays.asList(
new JaxRsUrlPathWhen(this.blockBuilder, this.generatedClassMetaData),
this.whens.addAll(Arrays.asList(new JaxRsUrlPathWhen(this.blockBuilder, this.generatedClassMetaData),
new JaxRsRequestWhen(this.blockBuilder, this.generatedClassMetaData),
new JaxRsRequestHeadersWhen(this.blockBuilder, bodyParser),
new JaxRsRequestCookiesWhen(this.blockBuilder, bodyParser),
new JaxRsRequestMethodWhen(this.blockBuilder,
this.generatedClassMetaData),
new JaxRsRequestMethodWhen(this.blockBuilder, this.generatedClassMetaData),
new JaxRsRequestInvokerWhen(this.blockBuilder)));
}
@@ -55,8 +52,7 @@ class JaxRsWhen implements When, BodyMethodVisitor, JaxRsAcceptor {
indentedBodyBlock(this.blockBuilder, this.whens, singleContractMetadata);
this.blockBuilder.addEmptyLine().endBlock();
if (expectsResponseBody(singleContractMetadata)) {
this.blockBuilder.addLineWithEnding(
"String responseAsString = " + this.bodyParser.readEntity());
this.blockBuilder.addLineWithEnding("String responseAsString = " + this.bodyParser.readEntity());
}
this.blockBuilder.endBlock();
return this;

View File

@@ -69,9 +69,8 @@ class JsonBodyVerificationBuilder implements BodyMethodGeneration, ClassVerifier
// Passing way more arguments here than I would like to, but since we are planning a
// major
// refactoring of this module for Hoxton release, leaving it this way for now
JsonBodyVerificationBuilder(boolean assertJsonSize,
TemplateProcessor templateProcessor, ContractTemplate contractTemplate,
Contract contract, Optional<String> lineSuffix,
JsonBodyVerificationBuilder(boolean assertJsonSize, TemplateProcessor templateProcessor,
ContractTemplate contractTemplate, Contract contract, Optional<String> lineSuffix,
Function<String, String> postProcessJsonPathCall) {
this.assertJsonSize = assertJsonSize;
this.templateProcessor = templateProcessor;
@@ -81,17 +80,15 @@ class JsonBodyVerificationBuilder implements BodyMethodGeneration, ClassVerifier
this.postProcessJsonPathCall = postProcessJsonPathCall;
}
Object addJsonResponseBodyCheck(BlockBuilder bb, Object convertedResponseBody,
BodyMatchers bodyMatchers, String responseString,
boolean shouldCommentOutBDDBlocks) {
Object addJsonResponseBodyCheck(BlockBuilder bb, Object convertedResponseBody, BodyMatchers bodyMatchers,
String responseString, boolean shouldCommentOutBDDBlocks) {
appendJsonPath(bb, responseString);
DocumentContext parsedRequestBody = null;
boolean dontParseStrings = convertedResponseBody instanceof Map;
Closure parsingClosure = dontParseStrings ? Closure.IDENTITY
: MapConverter.JSON_PARSING_CLOSURE;
Closure parsingClosure = dontParseStrings ? Closure.IDENTITY : MapConverter.JSON_PARSING_CLOSURE;
if (hasRequestBody()) {
Object testSideRequestBody = MapConverter
.getTestSideValues(contract.getRequest().getBody(), parsingClosure);
Object testSideRequestBody = MapConverter.getTestSideValues(contract.getRequest().getBody(),
parsingClosure);
parsedRequestBody = JsonPath.parse(testSideRequestBody);
if (convertedResponseBody instanceof String
&& !textContainsJsonPathTemplate(convertedResponseBody.toString())) {
@@ -100,22 +97,20 @@ class JsonBodyVerificationBuilder implements BodyMethodGeneration, ClassVerifier
}
}
Object copiedBody = cloneBody(convertedResponseBody);
convertedResponseBody = JsonToJsonPathsConverter
.removeMatchingJsonPaths(convertedResponseBody, bodyMatchers);
convertedResponseBody = JsonToJsonPathsConverter.removeMatchingJsonPaths(convertedResponseBody, bodyMatchers);
// remove quotes from fromRequest objects before picking json paths
TestSideRequestTemplateModel templateModel = hasRequestBody()
? TestSideRequestTemplateModel.from(contract.getRequest()) : null;
convertedResponseBody = MapConverter.transformValues(convertedResponseBody,
returnReferencedEntries(templateModel), parsingClosure);
JsonPaths jsonPaths = new JsonToJsonPathsConverter(assertJsonSize)
.transformToJsonPathWithTestsSideValues(convertedResponseBody,
parsingClosure);
.transformToJsonPathWithTestsSideValues(convertedResponseBody, parsingClosure);
DocumentContext finalParsedRequestBody = parsedRequestBody;
jsonPaths.forEach(it -> {
String method = it.method();
method = processIfTemplateIsPresent(method, finalParsedRequestBody);
String postProcessedMethod = templateProcessor.containsJsonPathTemplateEntry(
method) ? method : postProcessJsonPathCall.apply(method);
String postProcessedMethod = templateProcessor.containsJsonPathTemplateEntry(method) ? method
: postProcessJsonPathCall.apply(method);
bb.addLine("assertThatJson(parsedJson)" + postProcessedMethod);
addColonIfRequired(lineSuffix, bb);
});
@@ -128,25 +123,20 @@ class JsonBodyVerificationBuilder implements BodyMethodGeneration, ClassVerifier
}
private void checkType(BlockBuilder bb, BodyMatcher it, Object elementFromBody) {
String method = "assertThat((Object) parsedJson.read("
+ quotedAndEscaped(it.path()) + ")).isInstanceOf("
String method = "assertThat((Object) parsedJson.read(" + quotedAndEscaped(it.path()) + ")).isInstanceOf("
+ classToCheck(elementFromBody).getName() + ".class)";
bb.addLine(postProcessJsonPathCall.apply(method));
addColonIfRequired(lineSuffix, bb);
}
// we want to make the type more generic (e.g. not ArrayList but List)
private String sizeCheckMethod(BodyMatcher bodyMatcher,
String quotedAndEscaptedPath) {
private String sizeCheckMethod(BodyMatcher bodyMatcher, String quotedAndEscaptedPath) {
String prefix = sizeCheckPrefix(bodyMatcher, quotedAndEscaptedPath);
if (bodyMatcher.minTypeOccurrence() != null
&& bodyMatcher.maxTypeOccurrence() != null) {
return prefix + "Between(" + bodyMatcher.minTypeOccurrence() + ", "
+ bodyMatcher.maxTypeOccurrence() + ")";
if (bodyMatcher.minTypeOccurrence() != null && bodyMatcher.maxTypeOccurrence() != null) {
return prefix + "Between(" + bodyMatcher.minTypeOccurrence() + ", " + bodyMatcher.maxTypeOccurrence() + ")";
}
else if (bodyMatcher.minTypeOccurrence() != null) {
return prefix + "GreaterThanOrEqualTo(" + bodyMatcher.minTypeOccurrence()
+ ")";
return prefix + "GreaterThanOrEqualTo(" + bodyMatcher.minTypeOccurrence() + ")";
}
else if (bodyMatcher.maxTypeOccurrence() != null) {
return prefix + "LessThanOrEqualTo(" + bodyMatcher.maxTypeOccurrence() + ")";
@@ -154,42 +144,35 @@ class JsonBodyVerificationBuilder implements BodyMethodGeneration, ClassVerifier
return prefix;
}
protected void buildCustomMatchingConditionForEachElement(BlockBuilder bb,
String path, String valueAsParam) {
String method = "assertThat((java.lang.Iterable) parsedJson.read(" + path
+ ", java.util.Collection.class)).as(" + path + ").allElementsMatch("
+ valueAsParam + ")";
protected void buildCustomMatchingConditionForEachElement(BlockBuilder bb, String path, String valueAsParam) {
String method = "assertThat((java.lang.Iterable) parsedJson.read(" + path + ", java.util.Collection.class)).as("
+ path + ").allElementsMatch(" + valueAsParam + ")";
bb.addLine(postProcessJsonPathCall.apply(method));
}
@Override
public void methodForEqualityCheck(BodyMatcher bodyMatcher, BlockBuilder bb,
Object copiedBody) {
public void methodForEqualityCheck(BodyMatcher bodyMatcher, BlockBuilder bb, Object copiedBody) {
String path = quotedAndEscaped(bodyMatcher.path());
Object retrievedValue = value(copiedBody, bodyMatcher);
retrievedValue = retrievedValue instanceof RegexProperty
? ((RegexProperty) retrievedValue).getPattern().pattern()
: retrievedValue;
String valueAsParam = retrievedValue instanceof String
? quotedAndEscaped(retrievedValue.toString())
? ((RegexProperty) retrievedValue).getPattern().pattern() : retrievedValue;
String valueAsParam = retrievedValue instanceof String ? quotedAndEscaped(retrievedValue.toString())
: objectToString(retrievedValue);
if (arrayRelated(path) && MatchingType.regexRelated(bodyMatcher.matchingType())) {
buildCustomMatchingConditionForEachElement(bb, path, valueAsParam);
}
else {
String comparisonMethod = bodyMatcher.matchingType() == MatchingType.EQUALITY
? "isEqualTo" : "matches";
String comparisonMethod = bodyMatcher.matchingType() == MatchingType.EQUALITY ? "isEqualTo" : "matches";
String classToCastTo = className(retrievedValue) + ".class";
String method = "assertThat(parsedJson.read(" + path + ", " + classToCastTo
+ "))." + comparisonMethod + "(" + valueAsParam + ")";
String method = "assertThat(parsedJson.read(" + path + ", " + classToCastTo + "))." + comparisonMethod + "("
+ valueAsParam + ")";
bb.addLine(postProcessJsonPathCall.apply(method));
}
addColonIfRequired(lineSuffix, bb);
}
private String className(Object retrievedValue) {
return retrievedValue.getClass().getName().startsWith("java.lang")
? retrievedValue.getClass().getSimpleName()
return retrievedValue.getClass().getName().startsWith("java.lang") ? retrievedValue.getClass().getSimpleName()
: retrievedValue.getClass().getName();
}
@@ -206,8 +189,7 @@ class JsonBodyVerificationBuilder implements BodyMethodGeneration, ClassVerifier
return String.valueOf(value);
}
protected String processIfTemplateIsPresent(String method,
DocumentContext parsedRequestBody) {
protected String processIfTemplateIsPresent(String method, DocumentContext parsedRequestBody) {
if (textContainsJsonPathTemplate(method) && hasRequestBody()) {
// Unquoting the values of non strings
String jsonPathEntry = templateProcessor.jsonPathFromTemplateEntry(method);
@@ -218,32 +200,27 @@ class JsonBodyVerificationBuilder implements BodyMethodGeneration, ClassVerifier
contractTemplate.escapedOpeningTemplate())
.replace(contractTemplate.escapedClosingTemplate() + '"',
contractTemplate.escapedClosingTemplate())
.replace('"' + contractTemplate.openingTemplate(),
contractTemplate.openingTemplate())
.replace(contractTemplate.closingTemplate() + '"',
contractTemplate.closingTemplate());
.replace('"' + contractTemplate.openingTemplate(), contractTemplate.openingTemplate())
.replace(contractTemplate.closingTemplate() + '"', contractTemplate.closingTemplate());
}
}
return method;
}
@Override
public void methodForCommandExecution(BodyMatcher bodyMatcher, BlockBuilder bb,
Object copiedBody) {
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 + ")")));
bb.addLine(postProcessJsonPathCall.apply(property.insertValue("parsedJson.read(" + path + ")")));
addColonIfRequired(lineSuffix, bb);
}
@Override
public void methodForNullCheck(BodyMatcher bodyMatcher, BlockBuilder bb) {
String quotedAndEscapedPath = quotedAndEscaped(bodyMatcher.path());
String method = "assertThat((Object) parsedJson.read(" + quotedAndEscapedPath
+ ")).isNull()";
String method = "assertThat((Object) parsedJson.read(" + quotedAndEscapedPath + ")).isNull()";
bb.addLine(postProcessJsonPathCall.apply(method));
addColonIfRequired(lineSuffix, bb);
}
@@ -253,16 +230,13 @@ class JsonBodyVerificationBuilder implements BodyMethodGeneration, ClassVerifier
}
@Override
public void methodForTypeCheck(BodyMatcher bodyMatcher, BlockBuilder bb,
Object copiedBody) {
public void methodForTypeCheck(BodyMatcher bodyMatcher, BlockBuilder bb, Object copiedBody) {
Object elementFromBody = value(copiedBody, bodyMatcher);
if (bodyMatcher.minTypeOccurrence() != null
|| bodyMatcher.maxTypeOccurrence() != null) {
if (bodyMatcher.minTypeOccurrence() != null || bodyMatcher.maxTypeOccurrence() != null) {
checkType(bb, bodyMatcher, elementFromBody);
String quotedAndEscaptedPath = quotedAndEscaped(bodyMatcher.path());
String method = "assertThat((java.lang.Iterable) parsedJson.read("
+ quotedAndEscaptedPath + ", java.util.Collection.class))."
+ sizeCheckMethod(bodyMatcher, quotedAndEscaptedPath);
String method = "assertThat((java.lang.Iterable) parsedJson.read(" + quotedAndEscaptedPath
+ ", java.util.Collection.class))." + sizeCheckMethod(bodyMatcher, quotedAndEscaptedPath);
bb.addLine(postProcessJsonPathCall.apply(method));
addColonIfRequired(lineSuffix, bb);
}
@@ -272,8 +246,7 @@ class JsonBodyVerificationBuilder implements BodyMethodGeneration, ClassVerifier
}
private static Object value(Object body, BodyMatcher bodyMatcher) {
if (bodyMatcher.matchingType() == MatchingType.EQUALITY
|| bodyMatcher.value() == null) {
if (bodyMatcher.matchingType() == MatchingType.EQUALITY || bodyMatcher.value() == null) {
return retrieveObjectByPath(body, bodyMatcher.path());
}
return bodyMatcher.value();
@@ -289,31 +262,27 @@ class JsonBodyVerificationBuilder implements BodyMethodGeneration, ClassVerifier
}
}
private Closure<Object> returnReferencedEntries(
TestSideRequestTemplateModel templateModel) {
private Closure<Object> returnReferencedEntries(TestSideRequestTemplateModel templateModel) {
return MapConverter.fromFunction(entry -> {
if (!(entry instanceof String) || templateModel == null) {
return entry;
}
String entryAsString = (String) entry;
if (this.templateProcessor.containsTemplateEntry(entryAsString)
&& !this.templateProcessor
.containsJsonPathTemplateEntry(entryAsString)) {
&& !this.templateProcessor.containsJsonPathTemplateEntry(entryAsString)) {
// TODO: HANDLEBARS LEAKING VIA request.
String justEntry = minus(entryAsString,
contractTemplate.escapedOpeningTemplate());
String justEntry = minus(entryAsString, contractTemplate.escapedOpeningTemplate());
justEntry = minus(justEntry, contractTemplate.openingTemplate());
justEntry = minus(justEntry, contractTemplate.escapedClosingTemplate());
justEntry = minus(justEntry, contractTemplate.closingTemplate());
justEntry = minus(justEntry, FROM_REQUEST_PREFIX);
if (FROM_REQUEST_BODY.equalsIgnoreCase(justEntry)) {
// the body should be transformed by standard mechanism
return contractTemplate.escapedOpeningTemplate() + FROM_REQUEST_PREFIX
+ "escapedBody" + contractTemplate.escapedClosingTemplate();
return contractTemplate.escapedOpeningTemplate() + FROM_REQUEST_PREFIX + "escapedBody"
+ contractTemplate.escapedClosingTemplate();
}
try {
Object result = new PropertyUtilsBean().getProperty(templateModel,
justEntry);
Object result = new PropertyUtilsBean().getProperty(templateModel, justEntry);
// Path from the Test model is an object and we'd like to return its
// String representation
if (FROM_REQUEST_PATH.equals(justEntry)) {
@@ -365,12 +334,11 @@ class JsonBodyVerificationBuilder implements BodyMethodGeneration, ClassVerifier
return prefix + "Size";
}
private void doBodyMatchingIfPresent(BodyMatchers bodyMatchers, BlockBuilder bb,
Object responseBody, boolean shouldCommentOutBDDBlocks) {
private void doBodyMatchingIfPresent(BodyMatchers bodyMatchers, BlockBuilder bb, Object responseBody,
boolean shouldCommentOutBDDBlocks) {
if (bodyMatchers != null && bodyMatchers.hasMatchers()) {
bb.addEmptyLine();
addBodyMatchingBlock(bodyMatchers.matchers(), bb, responseBody,
shouldCommentOutBDDBlocks);
addBodyMatchingBlock(bodyMatchers.matchers(), bb, responseBody, shouldCommentOutBDDBlocks);
}
}

View File

@@ -26,27 +26,23 @@ class JsonPathImports implements Imports {
private final GeneratedClassMetaData generatedClassMetaData;
private static final String[] IMPORTS = { "com.jayway.jsonpath.DocumentContext",
"com.jayway.jsonpath.JsonPath" };
private static final String[] IMPORTS = { "com.jayway.jsonpath.DocumentContext", "com.jayway.jsonpath.JsonPath" };
JsonPathImports(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
JsonPathImports(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@Override
public Imports call() {
Arrays.stream(IMPORTS)
.forEach(s -> this.blockBuilder.addLineWithEnding("import " + s));
Arrays.stream(IMPORTS).forEach(s -> this.blockBuilder.addLineWithEnding("import " + s));
return this;
}
@Override
public boolean accept() {
return this.generatedClassMetaData.listOfFiles.stream()
.anyMatch(metadata -> metadata.getConvertedContractWithMetadata().stream()
.anyMatch(SingleContractMetadata::isJson));
return this.generatedClassMetaData.listOfFiles.stream().anyMatch(metadata -> metadata
.getConvertedContractWithMetadata().stream().anyMatch(SingleContractMetadata::isJson));
}
}

View File

@@ -28,8 +28,8 @@ class MessagingAssertThatThen implements Then {
@Override
public MethodVisitor<Then> apply(SingleContractMetadata metadata) {
this.blockBuilder.addLineWithEnding(metadata.getContract().getOutputMessage()
.getAssertThat().getExecutionCommand());
this.blockBuilder
.addLineWithEnding(metadata.getContract().getOutputMessage().getAssertThat().getExecutionCommand());
return this;
}

View File

@@ -28,8 +28,7 @@ class MessagingAssertThatWhen implements When {
@Override
public MethodVisitor<When> apply(SingleContractMetadata metadata) {
this.blockBuilder.addIndented(
metadata.getContract().getInput().getAssertThat().getExecutionCommand());
this.blockBuilder.addIndented(metadata.getContract().getInput().getAssertThat().getExecutionCommand());
return this;
}

View File

@@ -29,8 +29,7 @@ class MessagingBodyGiven implements Given, MethodVisitor<Given> {
private final BodyParser bodyParser;
MessagingBodyGiven(BlockBuilder blockBuilder, BodyReader bodyReader,
BodyParser bodyParser) {
MessagingBodyGiven(BlockBuilder blockBuilder, BodyReader bodyReader, BodyParser bodyParser) {
this.blockBuilder = blockBuilder;
this.bodyReader = bodyReader;
this.bodyParser = bodyParser;
@@ -50,11 +49,9 @@ class MessagingBodyGiven implements Given, MethodVisitor<Given> {
if (bodyValue instanceof FromFileProperty) {
FromFileProperty fileProperty = (FromFileProperty) bodyValue;
String byteText = fileProperty.isByte()
? this.bodyReader.readBytesFromFileString(metadata, fileProperty,
CommunicationType.REQUEST)
: this.bodyParser.quotedLongText(
this.bodyReader.readStringFromFileString(metadata,
fileProperty, CommunicationType.REQUEST));
? this.bodyReader.readBytesFromFileString(metadata, fileProperty, CommunicationType.REQUEST)
: this.bodyParser.quotedLongText(this.bodyReader.readStringFromFileString(metadata, fileProperty,
CommunicationType.REQUEST));
this.blockBuilder.addIndented(byteText);
}
else {

View File

@@ -34,19 +34,15 @@ class MessagingBodyThen implements Then, BodyMethodVisitor {
private final BodyParser bodyParser;
MessagingBodyThen(BlockBuilder blockBuilder, GeneratedClassMetaData metaData,
ComparisonBuilder comparisonBuilder) {
MessagingBodyThen(BlockBuilder blockBuilder, GeneratedClassMetaData metaData, ComparisonBuilder comparisonBuilder) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = metaData;
this.comparisonBuilder = comparisonBuilder;
this.bodyParser = comparisonBuilder.bodyParser();
this.thens.addAll(Arrays.asList(
new GenericBinaryBodyThen(blockBuilder, metaData, this.bodyParser,
this.comparisonBuilder),
new GenericTextBodyThen(blockBuilder, metaData, this.bodyParser,
this.comparisonBuilder),
new GenericJsonBodyThen(blockBuilder, metaData, this.bodyParser,
this.comparisonBuilder),
new GenericBinaryBodyThen(blockBuilder, metaData, this.bodyParser, this.comparisonBuilder),
new GenericTextBodyThen(blockBuilder, metaData, this.bodyParser, this.comparisonBuilder),
new GenericJsonBodyThen(blockBuilder, metaData, this.bodyParser, this.comparisonBuilder),
new GenericXmlBodyThen(blockBuilder, this.bodyParser)));
}
@@ -61,8 +57,7 @@ class MessagingBodyThen implements Then, BodyMethodVisitor {
@Override
public boolean accept(SingleContractMetadata singleContractMetadata) {
return singleContractMetadata.isMessaging()
&& this.bodyParser.responseBody(singleContractMetadata) != null;
return singleContractMetadata.isMessaging() && this.bodyParser.responseBody(singleContractMetadata) != null;
}
}

View File

@@ -33,11 +33,9 @@ class MessagingBodyWhen implements When {
public MethodVisitor<When> apply(SingleContractMetadata metadata) {
this.bodyReader.storeContractAsYaml(metadata);
this.blockBuilder
.addIndented("contractVerifierMessaging.send(inputMessage, \"" + metadata
.getContract().getInput().getMessageFrom().getServerValue()
+ "\",")
.addEmptyLine().indent()
.addIndented("contract(this, \"" + metadata.methodName() + ".yml\"))")
.addIndented("contractVerifierMessaging.send(inputMessage, \""
+ metadata.getContract().getInput().getMessageFrom().getServerValue() + "\",")
.addEmptyLine().indent().addIndented("contract(this, \"" + metadata.methodName() + ".yml\"))")
.addEndingIfNotPresent().unindent();
return this;
}

View File

@@ -26,12 +26,10 @@ class MessagingFields implements Field {
private final GeneratedClassMetaData generatedClassMetaData;
private static final String[] FIELDS = {
"@Inject ContractVerifierMessaging contractVerifierMessaging",
private static final String[] FIELDS = { "@Inject ContractVerifierMessaging contractVerifierMessaging",
"@Inject ContractVerifierObjectMapper contractVerifierObjectMapper" };
MessagingFields(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
MessagingFields(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@@ -44,9 +42,8 @@ class MessagingFields implements Field {
@Override
public boolean accept() {
return this.generatedClassMetaData.listOfFiles.stream()
.anyMatch(metadata -> metadata.getConvertedContractWithMetadata().stream()
.anyMatch(SingleContractMetadata::isMessaging));
return this.generatedClassMetaData.listOfFiles.stream().anyMatch(metadata -> metadata
.getConvertedContractWithMetadata().stream().anyMatch(SingleContractMetadata::isMessaging));
}
}

View File

@@ -30,35 +30,31 @@ class MessagingGiven implements Given, MethodVisitor<Given>, BodyMethodVisitor {
private final List<Given> givens = new LinkedList<>();
MessagingGiven(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData, BodyParser bodyParser) {
MessagingGiven(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData, BodyParser bodyParser) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
this.givens.addAll(Arrays.asList(
new MessagingBodyGiven(this.blockBuilder,
new BodyReader(this.generatedClassMetaData), bodyParser),
new MessagingBodyGiven(this.blockBuilder, new BodyReader(this.generatedClassMetaData), bodyParser),
new MessagingHeadersGiven(this.blockBuilder)));
}
@Override
public MethodVisitor<Given> apply(SingleContractMetadata metadata) {
startBodyBlock(this.blockBuilder, "given:");
this.blockBuilder.addIndented(
"ContractVerifierMessage inputMessage = contractVerifierMessaging.create(")
this.blockBuilder.addIndented("ContractVerifierMessage inputMessage = contractVerifierMessaging.create(")
.addEmptyLine().indent();
this.givens.stream().filter(given -> given.accept(metadata)).forEach(given -> {
given.apply(metadata);
this.blockBuilder.addEmptyLine();
});
this.blockBuilder.unindent().unindent().startBlock().addIndented(")")
.addEndingIfNotPresent().addEmptyLine().endBlock();
this.blockBuilder.unindent().unindent().startBlock().addIndented(")").addEndingIfNotPresent().addEmptyLine()
.endBlock();
return this;
}
@Override
public boolean accept(SingleContractMetadata metadata) {
return metadata.isMessaging()
&& metadata.getContract().getInput().getTriggeredBy() == null;
return metadata.isMessaging() && metadata.getContract().getInput().getTriggeredBy() == null;
}
}

View File

@@ -41,8 +41,7 @@ class MessagingHeadersGiven implements Given, MethodVisitor<Given> {
}
private String getHeaderString(Header header) {
return ".header(" + getTestSideValue(header.getName()) + ", "
+ getTestSideValue(header.getServerValue()) + ")";
return ".header(" + getTestSideValue(header.getName()) + ", " + getTestSideValue(header.getServerValue()) + ")";
}
private String getTestSideValue(Object object) {

View File

@@ -32,8 +32,7 @@ class MessagingHeadersThen implements Then, BodyMethodVisitor {
private final ComparisonBuilder comparisonBuilder;
MessagingHeadersThen(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData,
MessagingHeadersThen(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData,
ComparisonBuilder comparisonBuilder) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
@@ -44,20 +43,17 @@ class MessagingHeadersThen implements Then, BodyMethodVisitor {
public MethodVisitor<Then> apply(SingleContractMetadata singleContractMetadata) {
endBodyBlock(this.blockBuilder);
startBodyBlock(this.blockBuilder, "and:");
OutputMessage outputMessage = singleContractMetadata.getContract()
.getOutputMessage();
OutputMessage outputMessage = singleContractMetadata.getContract().getOutputMessage();
outputMessage.getHeaders().executeForEachHeader(header -> {
processHeaderElement(header.getName(),
header.getServerValue() instanceof NotToEscapePattern
? header.getServerValue()
: MapConverter.getTestSideValues(header.getServerValue()));
processHeaderElement(header.getName(), header.getServerValue() instanceof NotToEscapePattern
? header.getServerValue() : MapConverter.getTestSideValues(header.getServerValue()));
});
return this;
}
private void appendLineWithHeaderNotNull(String property) {
this.blockBuilder.addLineWithEnding(this.comparisonBuilder
.assertThatIsNotNull("response.getHeader(\"" + property + "\")"));
this.blockBuilder.addLineWithEnding(
this.comparisonBuilder.assertThatIsNotNull("response.getHeader(\"" + property + "\")"));
}
private void processHeaderElement(String property, Object value) {
@@ -77,32 +73,31 @@ class MessagingHeadersThen implements Then, BodyMethodVisitor {
private void processHeaderElement(String property, String value) {
appendLineWithHeaderNotNull(property);
this.blockBuilder.addLineWithEnding(this.comparisonBuilder.assertThat(
"response.getHeader(\"" + property + "\").toString()", value));
this.blockBuilder.addLineWithEnding(
this.comparisonBuilder.assertThat("response.getHeader(\"" + property + "\").toString()", value));
}
private void processHeaderElement(String property, Number value) {
appendLineWithHeaderNotNull(property);
blockBuilder.addLineWithEnding(this.comparisonBuilder
.assertThat("response.getHeader(\"" + property + "\")", value));
blockBuilder.addLineWithEnding(
this.comparisonBuilder.assertThat("response.getHeader(\"" + property + "\")", value));
}
private void processHeaderElement(String property, Pattern pattern) {
appendLineWithHeaderNotNull(property);
blockBuilder.addLineWithEnding(this.comparisonBuilder.assertThat(
"response.getHeader(\"" + property + "\").toString()", pattern));
blockBuilder.addLineWithEnding(
this.comparisonBuilder.assertThat("response.getHeader(\"" + property + "\").toString()", pattern));
}
private void processHeaderElement(String property, ExecutionProperty exec) {
appendLineWithHeaderNotNull(property);
blockBuilder.addLineWithEnding(
exec.insertValue("response.getHeader(\"" + property + "\").toString()"));
blockBuilder.addLineWithEnding(exec.insertValue("response.getHeader(\"" + property + "\").toString()"));
}
@Override
public boolean accept(SingleContractMetadata singleContractMetadata) {
return singleContractMetadata.isMessaging() && singleContractMetadata
.getContract().getOutputMessage().getHeaders() != null;
return singleContractMetadata.isMessaging()
&& singleContractMetadata.getContract().getOutputMessage().getHeaders() != null;
}
}

View File

@@ -31,24 +31,21 @@ class MessagingImports implements Imports {
"org.springframework.cloud.contract.verifier.messaging.internal.ContractVerifierMessage",
"org.springframework.cloud.contract.verifier.messaging.internal.ContractVerifierMessaging" };
MessagingImports(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
MessagingImports(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@Override
public Imports call() {
Arrays.stream(IMPORTS)
.forEach(s -> this.blockBuilder.addLineWithEnding("import " + s));
Arrays.stream(IMPORTS).forEach(s -> this.blockBuilder.addLineWithEnding("import " + s));
return this;
}
@Override
public boolean accept() {
return this.generatedClassMetaData.listOfFiles.stream()
.anyMatch(metadata -> metadata.getConvertedContractWithMetadata().stream()
.anyMatch(SingleContractMetadata::isMessaging));
return this.generatedClassMetaData.listOfFiles.stream().anyMatch(metadata -> metadata
.getConvertedContractWithMetadata().stream().anyMatch(SingleContractMetadata::isMessaging));
}
}

View File

@@ -30,8 +30,7 @@ class MessagingReceiveMessageThen implements Then, BodyMethodVisitor {
private final BodyReader bodyReader;
MessagingReceiveMessageThen(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData,
MessagingReceiveMessageThen(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData,
ComparisonBuilder comparisonBuilder) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
@@ -41,17 +40,15 @@ class MessagingReceiveMessageThen implements Then, BodyMethodVisitor {
@Override
public MethodVisitor<Then> apply(SingleContractMetadata singleContractMetadata) {
OutputMessage outputMessage = singleContractMetadata.getContract()
.getOutputMessage();
OutputMessage outputMessage = singleContractMetadata.getContract().getOutputMessage();
this.bodyReader.storeContractAsYaml(singleContractMetadata);
this.blockBuilder.addIndented(
"ContractVerifierMessage response = contractVerifierMessaging.receive("
this.blockBuilder
.addIndented("ContractVerifierMessage response = contractVerifierMessaging.receive("
+ sentToValue(outputMessage.getSentTo().getServerValue()) + ",")
.addEmptyLine().indent().addIndented("contract(this, \""
+ singleContractMetadata.methodName() + ".yml\"))")
.unindent().addEndingIfNotPresent().addEmptyLine();
this.blockBuilder.addLineWithEnding(
this.comparisonBuilder.assertThatIsNotNull("response"));
.addEmptyLine().indent()
.addIndented("contract(this, \"" + singleContractMetadata.methodName() + ".yml\"))").unindent()
.addEndingIfNotPresent().addEmptyLine();
this.blockBuilder.addLineWithEnding(this.comparisonBuilder.assertThatIsNotNull("response"));
return this;
}
@@ -64,8 +61,8 @@ class MessagingReceiveMessageThen implements Then, BodyMethodVisitor {
@Override
public boolean accept(SingleContractMetadata singleContractMetadata) {
return singleContractMetadata.isMessaging() && singleContractMetadata
.getContract().getOutputMessage().getSentTo() != null;
return singleContractMetadata.isMessaging()
&& singleContractMetadata.getContract().getOutputMessage().getSentTo() != null;
}
}

View File

@@ -25,8 +25,7 @@ class MessagingSpockNoMessageThen implements Then, BodyMethodVisitor {
private final GeneratedClassMetaData generatedClassMetaData;
MessagingSpockNoMessageThen(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
MessagingSpockNoMessageThen(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@@ -39,10 +38,8 @@ class MessagingSpockNoMessageThen implements Then, BodyMethodVisitor {
@Override
public boolean accept(SingleContractMetadata singleContractMetadata) {
return singleContractMetadata.isMessaging()
&& singleContractMetadata.getContract().getOutputMessage() == null
&& this.generatedClassMetaData.configProperties
.getTestFramework() == TestFramework.SPOCK;
return singleContractMetadata.isMessaging() && singleContractMetadata.getContract().getOutputMessage() == null
&& this.generatedClassMetaData.configProperties.getTestFramework() == TestFramework.SPOCK;
}
}

View File

@@ -30,24 +30,21 @@ class MessagingStaticImports implements Imports {
"org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers",
"org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.fileToBytes" };
MessagingStaticImports(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
MessagingStaticImports(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@Override
public Imports call() {
Arrays.stream(IMPORTS)
.forEach(s -> this.blockBuilder.addLineWithEnding("import static " + s));
Arrays.stream(IMPORTS).forEach(s -> this.blockBuilder.addLineWithEnding("import static " + s));
return this;
}
@Override
public boolean accept() {
return this.generatedClassMetaData.listOfFiles.stream()
.anyMatch(metadata -> metadata.getConvertedContractWithMetadata().stream()
.anyMatch(SingleContractMetadata::isMessaging));
return this.generatedClassMetaData.listOfFiles.stream().anyMatch(metadata -> metadata
.getConvertedContractWithMetadata().stream().anyMatch(SingleContractMetadata::isMessaging));
}
}

View File

@@ -28,8 +28,7 @@ class MessagingTriggeredByWhen implements When {
@Override
public MethodVisitor<When> apply(SingleContractMetadata metadata) {
this.blockBuilder.addIndented(
metadata.getContract().getInput().getTriggeredBy().getExecutionCommand())
this.blockBuilder.addIndented(metadata.getContract().getInput().getTriggeredBy().getExecutionCommand())
.addEndingIfNotPresent();
return this;
}

View File

@@ -28,8 +28,7 @@ class MessagingWhen implements When, BodyMethodVisitor {
private final List<When> whens = new LinkedList<>();
MessagingWhen(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
MessagingWhen(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.whens.addAll(Arrays.asList(new MessagingTriggeredByWhen(this.blockBuilder),
new MessagingBodyWhen(this.blockBuilder, generatedClassMetaData),

View File

@@ -32,21 +32,15 @@ class MessagingWithBodyThen implements Then, BodyMethodVisitor {
private final List<Then> thens = new LinkedList<>();
MessagingWithBodyThen(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData,
MessagingWithBodyThen(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData,
ComparisonBuilder comparisonBuilder) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
this.comparisonBuilder = comparisonBuilder;
this.thens.addAll(Arrays.asList(
new MessagingSpockNoMessageThen(this.blockBuilder,
generatedClassMetaData),
new MessagingReceiveMessageThen(this.blockBuilder, generatedClassMetaData,
this.comparisonBuilder),
new MessagingHeadersThen(this.blockBuilder, generatedClassMetaData,
this.comparisonBuilder),
new MessagingBodyThen(this.blockBuilder, generatedClassMetaData,
comparisonBuilder),
this.thens.addAll(Arrays.asList(new MessagingSpockNoMessageThen(this.blockBuilder, generatedClassMetaData),
new MessagingReceiveMessageThen(this.blockBuilder, generatedClassMetaData, this.comparisonBuilder),
new MessagingHeadersThen(this.blockBuilder, generatedClassMetaData, this.comparisonBuilder),
new MessagingBodyThen(this.blockBuilder, generatedClassMetaData, comparisonBuilder),
new MessagingAssertThatThen(this.blockBuilder)));
}
@@ -59,8 +53,7 @@ class MessagingWithBodyThen implements Then, BodyMethodVisitor {
@Override
public boolean accept(SingleContractMetadata singleContractMetadata) {
return singleContractMetadata.isMessaging()
&& singleContractMetadata.getContract().getOutputMessage() != null;
return singleContractMetadata.isMessaging() && singleContractMetadata.getContract().getOutputMessage() != null;
}
}

View File

@@ -31,28 +31,24 @@ class MethodAnnotationBuilder {
}
MethodAnnotationBuilder jUnit4() {
this.singleMethodBuilder.methodAnnotation(
new JUnit4MethodAnnotation(this.builder, this.metaData),
this.singleMethodBuilder.methodAnnotation(new JUnit4MethodAnnotation(this.builder, this.metaData),
new JUnit4IgnoreMethodAnnotation(this.builder, this.metaData));
return this;
}
MethodAnnotationBuilder jUnit5() {
this.singleMethodBuilder.methodAnnotation(
new JUnit5MethodAnnotation(this.builder, this.metaData),
this.singleMethodBuilder.methodAnnotation(new JUnit5MethodAnnotation(this.builder, this.metaData),
new JUnit5IgnoreMethodAnnotation(this.builder, this.metaData));
return this;
}
MethodAnnotationBuilder testNG() {
this.singleMethodBuilder.methodAnnotation(
new TestNGMethodAnnotation(this.builder, this.metaData));
this.singleMethodBuilder.methodAnnotation(new TestNGMethodAnnotation(this.builder, this.metaData));
return this;
}
MethodAnnotationBuilder spock() {
this.singleMethodBuilder.methodAnnotation(
new SpockIgnoreMethodAnnotation(this.builder, this.metaData));
this.singleMethodBuilder.methodAnnotation(new SpockIgnoreMethodAnnotation(this.builder, this.metaData));
return this;
}

View File

@@ -31,14 +31,12 @@ class MethodMetadataBuilder {
}
MethodMetadataBuilder jUnit() {
this.singleMethodBuilder
.methodMetadata(new JUnitMethodMetadata(this.builder, this.metaData));
this.singleMethodBuilder.methodMetadata(new JUnitMethodMetadata(this.builder, this.metaData));
return this;
}
MethodMetadataBuilder spock() {
this.singleMethodBuilder
.methodMetadata(new SpockMethodMetadata(this.builder, this.metaData));
this.singleMethodBuilder.methodMetadata(new SpockMethodMetadata(this.builder, this.metaData));
return this;
}

View File

@@ -21,8 +21,7 @@ import org.springframework.cloud.contract.verifier.file.SingleContractMetadata;
interface MethodPreProcessor extends MethodVisitor<MethodPreProcessor> {
@Override
default MethodVisitor<MethodPreProcessor> apply(
SingleContractMetadata singleContractMetadata) {
default MethodVisitor<MethodPreProcessor> apply(SingleContractMetadata singleContractMetadata) {
return this;
}

View File

@@ -20,7 +20,6 @@ import java.util.function.Function;
import org.springframework.cloud.contract.verifier.file.SingleContractMetadata;
interface MethodVisitor<T>
extends MethodAcceptor, Function<SingleContractMetadata, MethodVisitor<T>> {
interface MethodVisitor<T> extends MethodAcceptor, Function<SingleContractMetadata, MethodVisitor<T>> {
}

View File

@@ -25,8 +25,7 @@ class MockMvcAsyncWhen implements When, MockMvcAcceptor {
private final GeneratedClassMetaData generatedClassMetaData;
MockMvcAsyncWhen(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
MockMvcAsyncWhen(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}

View File

@@ -30,8 +30,7 @@ class MockMvcBodyGiven implements Given {
private final BodyParser bodyParser;
MockMvcBodyGiven(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData, BodyParser bodyParser) {
MockMvcBodyGiven(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData, BodyParser bodyParser) {
this.blockBuilder = blockBuilder;
this.bodyReader = new BodyReader(generatedClassMetaData);
this.bodyParser = bodyParser;
@@ -47,8 +46,7 @@ class MockMvcBodyGiven implements Given {
Object body;
Request request = metadata.getContract().getRequest();
Object serverValue = request.getBody().getServerValue();
if (serverValue instanceof ExecutionProperty
|| serverValue instanceof FromFileProperty) {
if (serverValue instanceof ExecutionProperty || serverValue instanceof FromFileProperty) {
body = request.getBody().getServerValue();
}
else {
@@ -65,10 +63,8 @@ class MockMvcBodyGiven implements Given {
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);
? this.bodyReader.readBytesFromFileString(metadata, fileProperty, CommunicationType.REQUEST)
: this.bodyReader.readStringFromFileString(metadata, fileProperty, CommunicationType.REQUEST);
}
else {
String escaped = escapeRequestSpecialChars(metadata, body.toString());
@@ -77,8 +73,7 @@ class MockMvcBodyGiven implements Given {
return ".body(" + value + ")";
}
private String escapeRequestSpecialChars(SingleContractMetadata metadata,
String string) {
private String escapeRequestSpecialChars(SingleContractMetadata metadata, String string) {
if (metadata.getInputTestContentType() == ContentType.JSON) {
return string.replaceAll("\\\\n", "\\\\\\\\n");
}

View File

@@ -54,15 +54,13 @@ class MockMvcCookiesGiven implements Given {
}
private String string(Cookie cookie) {
return ".cookie(" + ContentHelper.getTestSideForNonBodyValue(cookie.getKey())
+ ", " + ContentHelper.getTestSideForNonBodyValue(cookie.getServerValue())
+ ")";
return ".cookie(" + ContentHelper.getTestSideForNonBodyValue(cookie.getKey()) + ", "
+ ContentHelper.getTestSideForNonBodyValue(cookie.getServerValue()) + ")";
}
private boolean ofAbsentType(Cookie cookie) {
return cookie.getServerValue() instanceof MatchingStrategy
&& MatchingStrategy.Type.ABSENT
.equals(((MatchingStrategy) cookie.getServerValue()).getType());
&& MatchingStrategy.Type.ABSENT.equals(((MatchingStrategy) cookie.getServerValue()).getType());
}
@Override

View File

@@ -56,17 +56,15 @@ class MockMvcHeadersGiven implements Given {
}
private String string(Header header) {
return ".header(" + ContentHelper.getTestSideForNonBodyValue(header.getName())
+ ", "
+ ContentHelper.getTestSideForNonBodyValue(
MapConverter.getTestSideValuesForNonBody(header.getServerValue()))
return ".header("
+ ContentHelper.getTestSideForNonBodyValue(header.getName()) + ", " + ContentHelper
.getTestSideForNonBodyValue(MapConverter.getTestSideValuesForNonBody(header.getServerValue()))
+ ")";
}
private boolean ofAbsentType(Header header) {
return header.getServerValue() instanceof MatchingStrategy
&& MatchingStrategy.Type.ABSENT
.equals(((MatchingStrategy) header.getServerValue()).getType());
&& MatchingStrategy.Type.ABSENT.equals(((MatchingStrategy) header.getServerValue()).getType());
}
@Override

View File

@@ -36,8 +36,8 @@ class MockMvcMultipartGiven implements Given {
private final BodyParser bodyParser;
MockMvcMultipartGiven(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData, BodyParser bodyParser) {
MockMvcMultipartGiven(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData,
BodyParser bodyParser) {
this.blockBuilder = blockBuilder;
this.bodyReader = new BodyReader(generatedClassMetaData);
this.bodyParser = bodyParser;
@@ -46,46 +46,40 @@ class MockMvcMultipartGiven implements Given {
@Override
public MethodVisitor<Given> apply(SingleContractMetadata metadata) {
getMultipartParameters(metadata).entrySet().forEach(entry -> this.blockBuilder
.addLine(getMultipartParameterLine(metadata, entry)));
getMultipartParameters(metadata).entrySet()
.forEach(entry -> this.blockBuilder.addLine(getMultipartParameterLine(metadata, entry)));
return this;
}
private String getMultipartParameterLine(SingleContractMetadata metadata,
Map.Entry<String, Object> parameter) {
private String getMultipartParameterLine(SingleContractMetadata metadata, Map.Entry<String, Object> parameter) {
if (parameter.getValue() instanceof NamedProperty) {
return ".multiPart(" + getMultipartFileParameterContent(metadata,
parameter.getKey(), (NamedProperty) parameter.getValue()) + ")";
return ".multiPart(" + getMultipartFileParameterContent(metadata, parameter.getKey(),
(NamedProperty) parameter.getValue()) + ")";
}
return getParameterString(parameter);
}
@SuppressWarnings("unchecked")
private Map<String, Object> getMultipartParameters(SingleContractMetadata metadata) {
return (Map<String, Object>) metadata.getContract().getRequest().getMultipart()
.getServerValue();
return (Map<String, Object>) metadata.getContract().getRequest().getMultipart().getServerValue();
}
private String getMultipartFileParameterContent(SingleContractMetadata metadata,
String propertyName, NamedProperty propertyValue) {
private String getMultipartFileParameterContent(SingleContractMetadata metadata, String propertyName,
NamedProperty propertyValue) {
return getJavaMultipartFileParameterContent(propertyName, propertyValue,
fileProp -> this.bodyReader.readBytesFromFileString(metadata, fileProp,
CommunicationType.REQUEST));
fileProp -> this.bodyReader.readBytesFromFileString(metadata, fileProp, CommunicationType.REQUEST));
}
private String getParameterString(Map.Entry<String, Object> parameter) {
return ".param(" + this.bodyParser.quotedShortText(parameter.getKey()) + ", "
+ this.bodyParser.quotedShortText(
MapConverter.getTestSideValuesForNonBody(parameter.getValue()))
+ ")";
+ this.bodyParser.quotedShortText(MapConverter.getTestSideValuesForNonBody(parameter.getValue())) + ")";
}
@Override
public boolean accept(SingleContractMetadata metadata) {
Request request = metadata.getContract().getRequest();
return request != null && request.getMultipart() != null
&& this.generatedClassMetaData.configProperties
.getTestFramework() != TestFramework.SPOCK;
&& this.generatedClassMetaData.configProperties.getTestFramework() != TestFramework.SPOCK;
}
}

View File

@@ -59,9 +59,8 @@ class MockMvcQueryParamsWhen implements When, MockMvcAcceptor, QueryParamsResolv
}
private void addQueryParameters(Url buildUrl) {
List<QueryParameter> queryParameters = buildUrl.getQueryParameters()
.getParameters().stream().filter(this::allowedQueryParameter)
.collect(Collectors.toList());
List<QueryParameter> queryParameters = buildUrl.getQueryParameters().getParameters().stream()
.filter(this::allowedQueryParameter).collect(Collectors.toList());
Iterator<QueryParameter> iterator = queryParameters.iterator();
while (iterator.hasNext()) {
QueryParameter parameter = iterator.next();
@@ -86,10 +85,9 @@ class MockMvcQueryParamsWhen implements When, MockMvcAcceptor, QueryParamsResolv
}
private String addQueryParameter(QueryParameter queryParam) {
return "." + QUERY_PARAM_METHOD + "("
+ this.bodyParser.quotedLongText(queryParam.getName()) + ","
+ this.bodyParser.quotedLongText(resolveParamValue(
MapConverter.getTestSideValuesForNonBody(queryParam)))
return "." + QUERY_PARAM_METHOD + "(" + this.bodyParser.quotedLongText(queryParam.getName()) + ","
+ this.bodyParser
.quotedLongText(resolveParamValue(MapConverter.getTestSideValuesForNonBody(queryParam)))
+ ")";
}

View File

@@ -35,24 +35,21 @@ class MockMvcRestAssuredImports implements Imports, RestAssuredVerifier {
"io.restassured.module.mockmvc.specification.MockMvcRequestSpecification",
"io.restassured.response.ResponseOptions" };
MockMvcRestAssuredImports(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
MockMvcRestAssuredImports(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@Override
public Imports call() {
Arrays.stream(
isRestAssured2Present() ? REST_ASSURED_2_IMPORTS : REST_ASSURED_3_IMPORTS)
Arrays.stream(isRestAssured2Present() ? REST_ASSURED_2_IMPORTS : REST_ASSURED_3_IMPORTS)
.forEach(s -> this.blockBuilder.addLineWithEnding("import " + s));
return this;
}
@Override
public boolean accept() {
return this.generatedClassMetaData.configProperties
.getTestMode() == TestMode.MOCKMVC
return this.generatedClassMetaData.configProperties.getTestMode() == TestMode.MOCKMVC
&& this.generatedClassMetaData.isAnyHttp();
}

View File

@@ -29,27 +29,23 @@ class MockMvcRestAssuredStaticImports implements Imports, RestAssuredVerifier {
private static final String[] REST_ASSURED_2_IMPORTS = {
"com.jayway.restassured.module.mockmvc.RestAssuredMockMvc.*" };
private static final String[] REST_ASSURED_3_IMPORTS = {
"io.restassured.module.mockmvc.RestAssuredMockMvc.*" };
private static final String[] REST_ASSURED_3_IMPORTS = { "io.restassured.module.mockmvc.RestAssuredMockMvc.*" };
MockMvcRestAssuredStaticImports(BlockBuilder blockBuilder,
GeneratedClassMetaData generatedClassMetaData) {
MockMvcRestAssuredStaticImports(BlockBuilder blockBuilder, GeneratedClassMetaData generatedClassMetaData) {
this.blockBuilder = blockBuilder;
this.generatedClassMetaData = generatedClassMetaData;
}
@Override
public Imports call() {
Arrays.stream(
isRestAssured2Present() ? REST_ASSURED_2_IMPORTS : REST_ASSURED_3_IMPORTS)
Arrays.stream(isRestAssured2Present() ? REST_ASSURED_2_IMPORTS : REST_ASSURED_3_IMPORTS)
.forEach(s -> this.blockBuilder.addLineWithEnding("import static " + s));
return this;
}
@Override
public boolean accept() {
return this.generatedClassMetaData.configProperties
.getTestMode() == TestMode.MOCKMVC
return this.generatedClassMetaData.configProperties.getTestMode() == TestMode.MOCKMVC
&& this.generatedClassMetaData.isAnyHttp();
}

View File

@@ -34,8 +34,7 @@ class NameProvider {
private static final Log log = LogFactory.getLog(NameProvider.class);
String methodName(SingleContractMetadata singleContractMetadata) {
return ContractVerifierUtil.TEST_METHOD_PREFIX
+ generateMethodName(singleContractMetadata);
return ContractVerifierUtil.TEST_METHOD_PREFIX + generateMethodName(singleContractMetadata);
}
private String generateMethodName(SingleContractMetadata singleContractMetadata) {
@@ -43,8 +42,7 @@ class NameProvider {
File stubsFile = contractMetadata.getPath().toFile();
Contract stubContent = singleContractMetadata.getContract();
if (StringUtils.hasText(stubContent.getName())) {
String name = NamesUtil.camelCase(
NamesUtil.convertIllegalPackageChars(stubContent.getName()));
String name = NamesUtil.camelCase(NamesUtil.convertIllegalPackageChars(stubContent.getName()));
if (log.isDebugEnabled()) {
log.debug("Overriding the default test name with [" + name + "]");
}
@@ -77,8 +75,8 @@ class NameProvider {
}
private String camelCasedMethodFromFileName(File stubsFile) {
return NamesUtil.camelCase(NamesUtil.convertIllegalMethodNameChars(NamesUtil
.toLastDot(NamesUtil.afterLast(stubsFile.getPath(), File.separator))));
return NamesUtil.camelCase(NamesUtil.convertIllegalMethodNameChars(
NamesUtil.toLastDot(NamesUtil.afterLast(stubsFile.getPath(), File.separator))));
}
}

View File

@@ -25,8 +25,7 @@ class RestAssuredCookiesThen implements Then, MockMvcAcceptor, CookieElementProc
private final ComparisonBuilder comparisonBuilder;
RestAssuredCookiesThen(BlockBuilder blockBuilder,
ComparisonBuilder comparisonBuilder) {
RestAssuredCookiesThen(BlockBuilder blockBuilder, ComparisonBuilder comparisonBuilder) {
this.blockBuilder = blockBuilder;
this.comparisonBuilder = comparisonBuilder;
}

Some files were not shown because too many files have changed in this diff Show More