Skip to content

Commit 652fb2e

Browse files
author
Thorsten Schlathoelter
committed
feat: implement MR feedback
1 parent 8c3c7a5 commit 652fb2e

File tree

136 files changed

+595
-328
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

136 files changed

+595
-328
lines changed

catalog/citrus-bom/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@
245245
</dependency>
246246
<dependency>
247247
<groupId>org.citrusframework</groupId>
248-
<artifactId>citrus-test-api-generator-core</artifactId>
248+
<artifactId>citrus-openapi-codegen</artifactId>
249249
<version>4.7.0-SNAPSHOT</version>
250250
</dependency>
251251
<dependency>

connectors/citrus-openapi/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,12 @@
7373
<version>${project.version}</version>
7474
<scope>test</scope>
7575
</dependency>
76+
<dependency>
77+
<groupId>org.citrusframework</groupId>
78+
<artifactId>citrus-validation-text</artifactId>
79+
<version>${project.version}</version>
80+
<scope>provided</scope>
81+
</dependency>
7682
<dependency>
7783
<groupId>org.citrusframework</groupId>
7884
<artifactId>citrus-validation-hamcrest</artifactId>

connectors/citrus-openapi/src/main/java/org/citrusframework/openapi/actions/OpenApiClientResponseActionBuilder.java

Lines changed: 1 addition & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,13 @@
1616

1717
package org.citrusframework.openapi.actions;
1818

19-
import java.util.Collection;
2019
import java.util.HashMap;
2120
import java.util.Map;
2221
import java.util.Optional;
2322
import java.util.regex.Pattern;
2423

2524
import io.apicurio.datamodels.openapi.models.OasOperation;
2625
import io.apicurio.datamodels.openapi.models.OasResponse;
27-
import io.apicurio.datamodels.openapi.models.OasSchema;
28-
import jakarta.annotation.Nullable;
29-
import org.citrusframework.CitrusSettings;
3026
import org.citrusframework.actions.ReceiveMessageAction;
3127
import org.citrusframework.context.TestContext;
3228
import org.citrusframework.exceptions.CitrusRuntimeException;
@@ -42,11 +38,9 @@
4238
import org.citrusframework.openapi.validation.OpenApiValidationContext;
4339
import org.springframework.http.HttpStatus;
4440

45-
import static org.citrusframework.message.MessageType.JSON;
4641
import static org.citrusframework.openapi.OpenApiMessageType.RESPONSE;
47-
import static org.citrusframework.openapi.model.OasModelHelper.resolveSchema;
42+
import static org.citrusframework.openapi.util.OpenApiUtils.fillMessageTypeFromResponse;
4843
import static org.citrusframework.openapi.validation.OpenApiMessageValidationContext.Builder.openApi;
49-
import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
5044

5145
/**
5246
* @since 4.1
@@ -87,40 +81,6 @@ public OpenApiSpecificationSource getOpenApiSpecificationSource() {
8781
return openApiSpecificationSource;
8882
}
8983

90-
public static void fillMessageTypeFromResponse(OpenApiSpecification openApiSpecification,
91-
HttpMessage httpMessage,
92-
@Nullable OasOperation operation,
93-
@Nullable OasResponse response) {
94-
if (operation == null || response == null) {
95-
return;
96-
}
97-
98-
Optional<OasSchema> responseSchema = OasModelHelper.getSchema(response);
99-
responseSchema.ifPresent(oasSchema -> {
100-
OasSchema resolvedSchema = resolveSchema(openApiSpecification.getOpenApiDoc(null), oasSchema);
101-
if (OasModelHelper.isObjectType(resolvedSchema) || OasModelHelper.isObjectArrayType(resolvedSchema)) {
102-
Collection<String> responseTypes = OasModelHelper.getResponseTypes(operation,response);
103-
if (responseTypes.contains(APPLICATION_JSON_VALUE)) {
104-
httpMessage.setType(JSON);
105-
}
106-
}
107-
}
108-
);
109-
}
110-
111-
/**
112-
* Overridden to change the default message type to JSON, as Json is more common in OpenAPI context.
113-
*/
114-
@Override
115-
protected HttpMessageBuilderSupport createHttpMessageBuilderSupport() {
116-
HttpMessageBuilderSupport support = super.createHttpMessageBuilderSupport();
117-
support.type(CitrusSettings.getPropertyEnvOrDefault(
118-
CitrusSettings.DEFAULT_MESSAGE_TYPE_PROPERTY,
119-
CitrusSettings.DEFAULT_MESSAGE_TYPE_ENV,
120-
JSON.toString()));
121-
return support;
122-
}
123-
12484
@Override
12585
protected void reconcileValidationContexts() {
12686
super.reconcileValidationContexts();

connectors/citrus-openapi/src/main/java/org/citrusframework/openapi/actions/OpenApiServerRequestActionBuilder.java

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package org.citrusframework.openapi.actions;
1818

19-
import org.citrusframework.CitrusSettings;
2019
import org.citrusframework.actions.ReceiveMessageAction;
2120
import org.citrusframework.context.TestContext;
2221
import org.citrusframework.http.actions.HttpServerRequestActionBuilder;
@@ -28,7 +27,6 @@
2827
import org.citrusframework.openapi.validation.OpenApiOperationToMessageHeadersProcessor;
2928
import org.citrusframework.openapi.validation.OpenApiValidationContext;
3029

31-
import static org.citrusframework.message.MessageType.JSON;
3230
import static org.citrusframework.openapi.OpenApiMessageType.REQUEST;
3331
import static org.citrusframework.openapi.validation.OpenApiMessageValidationContext.Builder.openApi;
3432

@@ -79,19 +77,6 @@ protected void reconcileValidationContexts() {
7977
}
8078
}
8179

82-
/**
83-
* Overridden to change the default message type to JSON, as Json is more common in OpenAPI context.
84-
*/
85-
@Override
86-
protected HttpMessageBuilderSupport createMessageBuilderSupport() {
87-
HttpMessageBuilderSupport support = super.createMessageBuilderSupport();
88-
support.type(CitrusSettings.getPropertyEnvOrDefault(
89-
CitrusSettings.DEFAULT_MESSAGE_TYPE_PROPERTY,
90-
CitrusSettings.DEFAULT_MESSAGE_TYPE_ENV,
91-
JSON.toString()));
92-
return support;
93-
}
94-
9580
@Override
9681
public ReceiveMessageAction doBuild() {
9782
OpenApiSpecification openApiSpecification = openApiSpecificationSource.resolve(referenceResolver);

connectors/citrus-openapi/src/main/java/org/citrusframework/openapi/util/OpenApiUtils.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,27 @@
1616

1717
package org.citrusframework.openapi.util;
1818

19+
import java.util.Collection;
20+
import java.util.Optional;
21+
1922
import io.apicurio.datamodels.openapi.models.OasOperation;
23+
import io.apicurio.datamodels.openapi.models.OasResponse;
2024
import io.apicurio.datamodels.openapi.models.OasSchema;
2125
import jakarta.annotation.Nonnull;
2226
import jakarta.annotation.Nullable;
27+
import org.citrusframework.http.message.HttpMessage;
2328
import org.citrusframework.openapi.OpenApiConstants;
2429
import org.citrusframework.openapi.OpenApiRepository;
30+
import org.citrusframework.openapi.OpenApiSpecification;
31+
import org.citrusframework.openapi.model.OasModelHelper;
2532
import org.citrusframework.spi.ReferenceResolver;
2633

2734
import static java.lang.String.format;
2835
import static java.util.stream.Collectors.joining;
36+
import static org.citrusframework.message.MessageType.JSON;
37+
import static org.citrusframework.openapi.model.OasModelHelper.resolveSchema;
2938
import static org.citrusframework.util.StringUtils.hasText;
39+
import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
3040

3141
public final class OpenApiUtils {
3242

@@ -87,4 +97,26 @@ public static String getKnownOpenApiAliases(ReferenceResolver resolver) {
8797
.collect(joining(", "));
8898
}
8999

100+
public static void fillMessageTypeFromResponse(OpenApiSpecification openApiSpecification,
101+
HttpMessage httpMessage,
102+
@Nullable OasOperation operation,
103+
@Nullable OasResponse response) {
104+
if (operation == null || response == null) {
105+
return;
106+
}
107+
108+
Optional<OasSchema> responseSchema = OasModelHelper.getSchema(response);
109+
responseSchema.ifPresent(oasSchema -> {
110+
OasSchema resolvedSchema = resolveSchema(openApiSpecification.getOpenApiDoc(null), oasSchema);
111+
if (OasModelHelper.isObjectType(resolvedSchema) || OasModelHelper.isObjectArrayType(resolvedSchema)) {
112+
Collection<String> responseTypes = OasModelHelper.getResponseTypes(operation,response);
113+
114+
if (responseTypes.contains(APPLICATION_JSON_VALUE)) {
115+
httpMessage.setType(JSON);
116+
}
117+
}
118+
}
119+
);
120+
}
121+
90122
}

connectors/citrus-openapi/src/test/java/org/citrusframework/openapi/groovy/OpenApiClientTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@
4545
import org.citrusframework.util.SocketUtils;
4646
import org.citrusframework.validation.DefaultMessageHeaderValidator;
4747
import org.citrusframework.validation.DefaultTextEqualsMessageValidator;
48+
import org.citrusframework.validation.context.DefaultMessageValidationContext;
4849
import org.citrusframework.validation.context.DefaultValidationContext;
4950
import org.citrusframework.validation.context.HeaderValidationContext;
50-
import org.citrusframework.validation.json.JsonMessageValidationContext;
5151
import org.mockito.Mockito;
5252
import org.springframework.http.HttpMethod;
5353
import org.springframework.http.HttpStatus;
@@ -187,7 +187,7 @@ public void shouldLoadOpenApiClientActions() {
187187
assertListContains(receiveMessageAction.getValidationContexts(),
188188
OpenApiMessageValidationContext.class::isInstance, "List must contain OpenApiMessageValidationContext");
189189
assertListContains(receiveMessageAction.getValidationContexts(),
190-
JsonMessageValidationContext.class::isInstance, "List must contain JsonMessageValidationContext");
190+
DefaultMessageValidationContext.class::isInstance, "List must contain DefaultMessageValidationContext");
191191

192192
httpMessageBuilder = ((HttpMessageBuilder) receiveMessageAction.getMessageBuilder());
193193
assertNotNull(httpMessageBuilder);
@@ -226,7 +226,7 @@ public void shouldLoadOpenApiClientActions() {
226226
assertListContains(receiveMessageAction.getValidationContexts(),
227227
OpenApiMessageValidationContext.class::isInstance, "List must contain OpenApiMessageValidationContext");
228228
assertListContains(receiveMessageAction.getValidationContexts(),
229-
JsonMessageValidationContext.class::isInstance, "List must contain JsonMessageValidationContext");
229+
DefaultMessageValidationContext.class::isInstance, "List must contain DefaultMessageValidationContext");
230230

231231
httpMessageBuilder = ((HttpMessageBuilder) receiveMessageAction.getMessageBuilder());
232232
assertNotNull(httpMessageBuilder);

connectors/citrus-openapi/src/test/java/org/citrusframework/openapi/groovy/OpenApiServerTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636
import org.citrusframework.message.MessageQueue;
3737
import org.citrusframework.openapi.validation.OpenApiMessageValidationContext;
3838
import org.citrusframework.spi.BindToRegistry;
39+
import org.citrusframework.validation.context.DefaultMessageValidationContext;
3940
import org.citrusframework.validation.context.HeaderValidationContext;
40-
import org.citrusframework.validation.json.JsonMessageValidationContext;
4141
import org.mockito.Mockito;
4242
import org.springframework.http.HttpMethod;
4343
import org.testng.Assert;
@@ -56,6 +56,7 @@ public class OpenApiServerTest extends AbstractGroovyActionDslTest {
5656

5757
@BindToRegistry
5858
final TestActor testActor = Mockito.mock(TestActor.class);
59+
5960
private final MessageQueue inboundQueue = new DefaultMessageQueue("inboundQueue");
6061
private final EndpointAdapter endpointAdapter = new DirectEndpointAdapter(direct()
6162
.synchronous()
@@ -132,7 +133,7 @@ public void shouldLoadOpenApiServerActions() {
132133
assertListContains(receiveMessageAction.getValidationContexts(),
133134
OpenApiMessageValidationContext.class::isInstance, "List must contain OpenApiMessageValidationContext");
134135
assertListContains(receiveMessageAction.getValidationContexts(),
135-
JsonMessageValidationContext.class::isInstance, "List must contain JsonMessageValidationContext");
136+
DefaultMessageValidationContext.class::isInstance, "List must contain DefaultMessageValidationContext");
136137
assertEquals(receiveMessageAction.getReceiveTimeout(), 0L);
137138

138139
assertTrue(receiveMessageAction.getMessageBuilder() instanceof HttpMessageBuilder);
@@ -168,7 +169,7 @@ public void shouldLoadOpenApiServerActions() {
168169
assertListContains(receiveMessageAction.getValidationContexts(),
169170
OpenApiMessageValidationContext.class::isInstance, "List must contain OpenApiMessageValidationContext");
170171
assertListContains(receiveMessageAction.getValidationContexts(),
171-
JsonMessageValidationContext.class::isInstance, "List must contain JsonMessageValidationContext");
172+
DefaultMessageValidationContext.class::isInstance, "List must contain DefaultMessageValidationContext");
172173
assertEquals(receiveMessageAction.getReceiveTimeout(), 2000L);
173174

174175
httpMessageBuilder = ((HttpMessageBuilder) receiveMessageAction.getMessageBuilder());

connectors/citrus-openapi/src/test/java/org/citrusframework/openapi/xml/OpenApiClientTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@
4747
import org.citrusframework.util.SocketUtils;
4848
import org.citrusframework.validation.DefaultMessageHeaderValidator;
4949
import org.citrusframework.validation.DefaultTextEqualsMessageValidator;
50+
import org.citrusframework.validation.context.DefaultMessageValidationContext;
5051
import org.citrusframework.validation.context.DefaultValidationContext;
5152
import org.citrusframework.validation.context.HeaderValidationContext;
52-
import org.citrusframework.validation.json.JsonMessageValidationContext;
5353
import org.citrusframework.xml.XmlTestLoader;
5454
import org.citrusframework.xml.actions.XmlTestActionBuilder;
5555
import org.mockito.Mockito;
@@ -194,7 +194,7 @@ public void shouldLoadOpenApiClientActions() throws IOException {
194194
assertListContains(receiveMessageAction.getValidationContexts(),
195195
OpenApiMessageValidationContext.class::isInstance, "List must contain OpenApiMessageValidationContext");
196196
assertListContains(receiveMessageAction.getValidationContexts(),
197-
JsonMessageValidationContext.class::isInstance, "List must contain JsonMessageValidationContext");
197+
DefaultMessageValidationContext.class::isInstance, "List must contain DefaultMessageValidationContext");
198198

199199
httpMessageBuilder = ((HttpMessageBuilder) receiveMessageAction.getMessageBuilder());
200200
assertNotNull(httpMessageBuilder);
@@ -233,7 +233,7 @@ public void shouldLoadOpenApiClientActions() throws IOException {
233233
assertListContains(receiveMessageAction.getValidationContexts(),
234234
OpenApiMessageValidationContext.class::isInstance, "List must contain OpenApiMessageValidationContext");
235235
assertListContains(receiveMessageAction.getValidationContexts(),
236-
JsonMessageValidationContext.class::isInstance, "List must contain JsonMessageValidationContext");
236+
DefaultMessageValidationContext.class::isInstance, "List must contain DefaultMessageValidationContext");
237237

238238
httpMessageBuilder = ((HttpMessageBuilder) receiveMessageAction.getMessageBuilder());
239239
assertNotNull(httpMessageBuilder);

connectors/citrus-openapi/src/test/java/org/citrusframework/openapi/xml/OpenApiServerTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@
3535
import org.citrusframework.message.MessageQueue;
3636
import org.citrusframework.openapi.validation.OpenApiMessageValidationContext;
3737
import org.citrusframework.spi.BindToRegistry;
38+
import org.citrusframework.validation.context.DefaultMessageValidationContext;
3839
import org.citrusframework.validation.context.HeaderValidationContext;
39-
import org.citrusframework.validation.json.JsonMessageValidationContext;
4040
import org.citrusframework.xml.XmlTestLoader;
4141
import org.mockito.Mockito;
4242
import org.springframework.http.HttpMethod;
@@ -132,7 +132,7 @@ public void shouldLoadOpenApiServerActions() {
132132
assertListContains(receiveMessageAction.getValidationContexts(),
133133
OpenApiMessageValidationContext.class::isInstance, "List must contain OpenApiMessageValidationContext");
134134
assertListContains(receiveMessageAction.getValidationContexts(),
135-
JsonMessageValidationContext.class::isInstance, "List must contain JsonMessageValidationContext");
135+
DefaultMessageValidationContext.class::isInstance, "List must contain DefaultMessageValidationContext");
136136

137137
assertEquals(receiveMessageAction.getReceiveTimeout(), 0L);
138138

@@ -169,7 +169,7 @@ public void shouldLoadOpenApiServerActions() {
169169
assertListContains(receiveMessageAction.getValidationContexts(),
170170
OpenApiMessageValidationContext.class::isInstance, "List must contain OpenApiMessageValidationContext");
171171
assertListContains(receiveMessageAction.getValidationContexts(),
172-
JsonMessageValidationContext.class::isInstance, "List must contain JsonMessageValidationContext");
172+
DefaultMessageValidationContext.class::isInstance, "List must contain DefaultMessageValidationContext");
173173
assertEquals(receiveMessageAction.getReceiveTimeout(), 2000L);
174174

175175
httpMessageBuilder = ((HttpMessageBuilder) receiveMessageAction.getMessageBuilder());

connectors/citrus-testcontainers/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
<name>Citrus :: Connectors :: Testcontainers</name>
1515

1616
<properties>
17+
<!-- Container tests typically do not run behind a company proxy. Set this property if required, when building locally-->
1718
<skipContainerTests>false</skipContainerTests>
1819
</properties>
1920

0 commit comments

Comments
 (0)