Skip to content

Commit 97ba4ef

Browse files
authored
#71 Fix AsyncApi Message testing. (#75)
1 parent 777a99d commit 97ba4ef

File tree

5 files changed

+22
-16
lines changed

5 files changed

+22
-16
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>net.coru</groupId>
88
<artifactId>scc-multiapi-converter</artifactId>
9-
<version>3.0.2</version>
9+
<version>3.1.0</version>
1010
<name>SCC-MultiApi-Converter</name>
1111
<description>Generates Spring Cloud Contracts based on an OpenApi and AsyncApi document</description>
1212
<url>https://github.com/corunet/scc-multiapi-converter</url>

src/main/java/net/coru/multiapi/converter/MultiApiContractConverter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public final class MultiApiContractConverter implements ContractConverter<Collec
3030
@Override
3131
public boolean isAccepted(final File file) {
3232
final String name = file.getName();
33-
boolean isAccepted = name.endsWith(".yml") || name.endsWith(".yaml");
33+
boolean isAccepted = name.endsWith(".yml") || name.endsWith(".yaml") || name.endsWith(".json");
3434
if (isAccepted) {
3535
try {
3636
final JsonNode node;

src/main/java/net/coru/multiapi/converter/asyncapi/AsyncApiContractConverter.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public Collection<Contract> convertFrom(final File file) {
6262

6363
final String topicName = topicIterator.next();
6464
if (operationType.equals(BasicTypeConstants.SUBSCRIBE)) {
65-
processSubscribeOperation(contract, bodyProcessed, topicName);
65+
processSubscribeOperation(contract, bodyProcessed, topicName, operationId);
6666
} else if (operationType.equals(BasicTypeConstants.PUBLISH)) {
6767
processPublishOperation(contract, operationId, responseBodyMatchers, bodyProcessed, topicName);
6868
}
@@ -88,11 +88,12 @@ private void processPublishOperation(
8888
contract.setOutputMessage(outputMessage);
8989
}
9090

91-
private void processSubscribeOperation(final Contract contract, final Map<String, Object> bodyProcessed, final String topicName) {
91+
private void processSubscribeOperation(final Contract contract, final Map<String, Object> bodyProcessed, final String topicName, final String operationId) {
9292
final Input input = new Input();
9393
input.messageFrom(topicName);
9494
input.messageBody(bodyProcessed);
9595
input.messageHeaders(headers -> headers.accept("application/json"));
96+
input.assertThat(operationId + "Validation()");
9697
contract.setInput(input);
9798
}
9899

src/main/java/net/coru/multiapi/converter/asyncapi/AsyncApiContractConverterUtils.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import java.util.List;
1212
import java.util.Map;
1313
import java.util.Objects;
14+
import java.util.regex.Pattern;
1415

1516
import com.fasterxml.jackson.core.JsonProcessingException;
1617
import com.fasterxml.jackson.databind.JsonNode;
@@ -19,6 +20,7 @@
1920
import net.coru.multiapi.converter.utils.RandomGenerator;
2021
import org.apache.commons.lang3.RandomStringUtils;
2122
import org.apache.commons.lang3.RandomUtils;
23+
import org.springframework.cloud.contract.spec.internal.RegexProperty;
2224
import org.springframework.cloud.contract.spec.internal.ResponseBodyMatchers;
2325

2426
public final class AsyncApiContractConverterUtils {
@@ -103,7 +105,11 @@ public static void processStringPropertyType(
103105
messageBody.put(property, RandomStringUtils.random(5, true, false));
104106
}
105107
} else {
106-
responseBodyMatchers.jsonPath(path, responseBodyMatchers.byRegex(BasicTypeConstants.STRING_REGEX));
108+
if (!properties.get(property).has("pattern")) {
109+
responseBodyMatchers.jsonPath(path, responseBodyMatchers.byRegex(BasicTypeConstants.STRING_REGEX));
110+
} else {
111+
responseBodyMatchers.jsonPath(path, responseBodyMatchers.byRegex(new RegexProperty(Pattern.compile(properties.get(property).get("pattern").asText())).asString()));
112+
}
107113
messageBody.put(property, RandomStringUtils.random(5, true, false));
108114
}
109115
}
@@ -309,9 +315,9 @@ public static JsonNode getInternalProperties(final JsonNode properties, final St
309315

310316
public static String getType(final JsonNode node) {
311317
final String type;
312-
if (node.get(BasicTypeConstants.FORMAT) != null) {
318+
if (node.has(BasicTypeConstants.FORMAT)) {
313319
type = node.get(BasicTypeConstants.FORMAT).asText();
314-
} else if (node.get(BasicTypeConstants.TYPE) != null) {
320+
} else if (node.has(BasicTypeConstants.TYPE)) {
315321
type = node.get(BasicTypeConstants.TYPE).asText();
316322
} else {
317323
type = node.get(node.fieldNames().next()).get(BasicTypeConstants.TYPE).asText();

src/main/java/net/coru/multiapi/converter/openapi/OpenApiContractConverterUtils.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,21 @@
99
import java.util.HashMap;
1010
import java.util.Map;
1111
import java.util.Objects;
12+
import java.util.regex.Pattern;
1213

1314
import io.swagger.v3.oas.models.examples.Example;
1415
import io.swagger.v3.oas.models.media.ArraySchema;
1516
import io.swagger.v3.oas.models.media.Schema;
1617
import io.swagger.v3.oas.models.parameters.Parameter;
1718
import net.coru.multiapi.converter.utils.BasicTypeConstants;
1819
import org.apache.commons.lang3.tuple.Pair;
20+
import org.codehaus.plexus.util.StringUtils;
1921
import org.springframework.cloud.contract.spec.internal.Body;
2022
import org.springframework.cloud.contract.spec.internal.BodyMatchers;
2123
import org.springframework.cloud.contract.spec.internal.MatchingStrategy;
2224
import org.springframework.cloud.contract.spec.internal.MatchingStrategy.Type;
2325
import org.springframework.cloud.contract.spec.internal.QueryParameters;
26+
import org.springframework.cloud.contract.spec.internal.RegexProperty;
2427
import org.springframework.cloud.contract.spec.internal.Response;
2528

2629
public final class OpenApiContractConverterUtils {
@@ -93,7 +96,11 @@ public static void processBasicQueryParameterTypeBody(final QueryParameters quer
9396
final String type = parameter.getSchema().getType();
9497
switch (type) {
9598
case BasicTypeConstants.STRING:
96-
queryParameters.parameter(parameter.getName(), BasicTypeConstants.STRING_REGEX);
99+
if (StringUtils.isEmpty(parameter.getSchema().getPattern())) {
100+
queryParameters.parameter(parameter.getName(), BasicTypeConstants.STRING_REGEX);
101+
} else {
102+
queryParameters.parameter(parameter.getName(), new RegexProperty(Pattern.compile(parameter.getSchema().getFormat())).asString());
103+
}
97104
break;
98105
case BasicTypeConstants.INTEGER:
99106
OpenApiContractConverterUtils.processIntegerFormat(queryParameters, parameter);
@@ -111,10 +118,6 @@ public static void processBasicQueryParameterTypeBody(final QueryParameters quer
111118
}
112119
}
113120

114-
public static void processNumberFormat(final Response response, final Schema schema) {
115-
response.body(processNumberFormat(schema.getFormat(), schema.getName()));
116-
}
117-
118121
public static Map<String, Object> processNumberFormat(final Schema schema) {
119122
return processNumberFormat(schema.getFormat(), schema.getName());
120123
}
@@ -135,10 +138,6 @@ private static Map<String, Object> processNumberFormat(final String format, fina
135138
return parameter;
136139
}
137140

138-
public static void processIntegerFormat(final Response response, final Schema schema) {
139-
response.body(processIntegerFormat(schema.getFormat(), schema.getName()));
140-
}
141-
142141
public static Map<String, Object> processIntegerFormat(final Schema schema) {
143142
return processIntegerFormat(schema.getFormat(), schema.getName());
144143
}

0 commit comments

Comments
 (0)