Skip to content

Commit

Permalink
feat: added support for path parameters methods (#1723)
Browse files Browse the repository at this point in the history
* feat: added support for path parameters

* fix: adjusted tests and assertions.

---------

Co-authored-by: Johan Haleby <johan.haleby@gmail.com>
  • Loading branch information
javadev-jef and johanhaleby committed Sep 5, 2023
1 parent fe3f0f0 commit dd4e100
Show file tree
Hide file tree
Showing 35 changed files with 1,472 additions and 186 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,25 @@
import java.nio.charset.Charset;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Scanner;

import static org.apache.commons.lang3.SystemUtils.LINE_SEPARATOR;

public class RequestLogger {
public final class RequestLogger {

public static void logParamsAndHeaders(final RequestSpecificationImpl reqSpec, String method, String uri,
Object[] unnamedPathParams, Map<String, Object> params, Map<String,
Object> queryParams, Map<String, Object> formParams,
Headers headers, Cookies cookies) {
private RequestLogger() { }

public static void logParamsAndHeaders(
final RequestSpecificationImpl reqSpec,
final String method, String uri,
final Object[] unnamedPathParams,
final Map<String, Object> params,
final Map<String, Object> namedPathParams,
final Map<String, Object> queryParams,
final Map<String, Object> formParams,
final Headers headers, Cookies cookies
) {
reqSpec.setMethod(method);
reqSpec.path(uri);
reqSpec.buildUnnamedPathParameterTuples(unnamedPathParams);
Expand All @@ -58,6 +67,14 @@ protected void logParam(String paramName, Object paramValue) {
}.logParams();
}

if (Objects.nonNull(namedPathParams)) {
new ParamLogger(namedPathParams) {
protected void logParam(String paramName, Object paramValue) {
reqSpec.pathParams(paramName, paramValue);
}
}.logParams();
}

if (formParams != null) {
new ParamLogger(formParams) {
protected void logParam(String paramName, Object paramValue) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@

import java.lang.reflect.Field;

public class ConfigConverter {
public final class ConfigConverter {

private ConfigConverter() { }

public static RestAssuredConfig convertToRestAssuredConfig(SpecificationConfig specificationConfig) {
return new RestAssuredConfig().jsonConfig(specificationConfig.getJsonConfig()).xmlConfig(specificationConfig.getXmlConfig()).sessionConfig(specificationConfig.getSessionConfig()).
Expand All @@ -31,7 +33,7 @@ public static RestAssuredConfig convertToRestAssuredConfig(SpecificationConfig s
}

private static ParamConfig toParamConfig(ParamConfig baseConfig) {
ParamConfig config = new ParamConfig(baseConfig.queryParamsUpdateStrategy(),
ParamConfig config = new ParamConfig(baseConfig.queryParamsUpdateStrategy(), baseConfig.pathParamsUpdateStrategy(),
baseConfig.formParamsUpdateStrategy(), baseConfig.requestParamsUpdateStrategy());
// We need to set the user configured flag to false if needed
if (!baseConfig.isUserConfigured()) {
Expand Down
11 changes: 9 additions & 2 deletions modules/spring-mock-mvc/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>4.3.23.RELEASE</spring.version>
<spring.version>5.1.13.RELEASE</spring.version>
<spring.security.version>4.2.17.RELEASE</spring.security.version>
</properties>

Expand All @@ -37,6 +37,13 @@
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>5.3.2-SNAPSHOT</version>
<exclusions>
<exclusion>
<!-- Spring provides its own JCL implementation -->
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
Expand Down Expand Up @@ -119,7 +126,7 @@
<dependency>
<groupId>org.springframework.restdocs</groupId>
<artifactId>spring-restdocs-mockmvc</artifactId>
<version>1.0.0.RELEASE</version>
<version>2.0.2.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public class MockMvcParamConfig extends ParamConfig implements Config {

private final boolean userConfigured;
private final UpdateStrategy queryParamsUpdateStrategy;
private final UpdateStrategy pathParamsUpdateStrategy;
private final UpdateStrategy formParamsUpdateStrategy;
private final UpdateStrategy requestParameterUpdateStrategy;
private final UpdateStrategy attributeUpdateStrategy;
Expand All @@ -40,7 +41,7 @@ public class MockMvcParamConfig extends ParamConfig implements Config {
* Create a new instance where all parameters are merged
*/
public MockMvcParamConfig() {
this(MERGE, MERGE, MERGE, MERGE, MERGE, false);
this(MERGE, REPLACE, MERGE, MERGE, MERGE, MERGE, false);
}

/**
Expand All @@ -52,22 +53,31 @@ public MockMvcParamConfig() {
* @param sessionUpdateStrategy The update strategy for session parameters
*/
public MockMvcParamConfig(UpdateStrategy queryParamsUpdateStrategy,
UpdateStrategy pathParamsUpdateStrategy,
UpdateStrategy formParamsUpdateStrategy,
UpdateStrategy requestParameterUpdateStrategy,
UpdateStrategy attributeUpdateStrategy,
UpdateStrategy sessionUpdateStrategy) {
this(queryParamsUpdateStrategy, formParamsUpdateStrategy, requestParameterUpdateStrategy, attributeUpdateStrategy, sessionUpdateStrategy, true);
}

private MockMvcParamConfig(UpdateStrategy queryParamsUpdateStrategy, UpdateStrategy formParamsUpdateStrategy,
UpdateStrategy requestParameterUpdateStrategy, UpdateStrategy attributeUpdateStrategy,
UpdateStrategy sessionUpdateStrategy, boolean userConfigured) {
this(queryParamsUpdateStrategy, pathParamsUpdateStrategy, formParamsUpdateStrategy, requestParameterUpdateStrategy, attributeUpdateStrategy, sessionUpdateStrategy, true);
}

private MockMvcParamConfig(
UpdateStrategy queryParamsUpdateStrategy,
UpdateStrategy pathParamsUpdateStrategy,
UpdateStrategy formParamsUpdateStrategy,
UpdateStrategy requestParameterUpdateStrategy,
UpdateStrategy attributeUpdateStrategy,
UpdateStrategy sessionUpdateStrategy,
boolean userConfigured
) {
notNull(queryParamsUpdateStrategy, "Query param update strategy");
notNull(pathParamsUpdateStrategy, "Path param update strategy");
notNull(requestParameterUpdateStrategy, "Request param update strategy");
notNull(formParamsUpdateStrategy, "Form param update strategy");
notNull(attributeUpdateStrategy, "Attribute update strategy");
notNull(sessionUpdateStrategy, "Session update strategy");
this.queryParamsUpdateStrategy = queryParamsUpdateStrategy;
this.pathParamsUpdateStrategy = pathParamsUpdateStrategy;
this.formParamsUpdateStrategy = formParamsUpdateStrategy;
this.requestParameterUpdateStrategy = requestParameterUpdateStrategy;
this.attributeUpdateStrategy = attributeUpdateStrategy;
Expand All @@ -81,7 +91,7 @@ private MockMvcParamConfig(UpdateStrategy queryParamsUpdateStrategy, UpdateStrat
* @return A new instance of {@link MockMvcParamConfig}
*/
public MockMvcParamConfig mergeAllParameters() {
return new MockMvcParamConfig(MERGE, MERGE, MERGE, MERGE, MERGE, true);
return new MockMvcParamConfig(MERGE, REPLACE, MERGE, MERGE, MERGE, MERGE, true);
}

/**
Expand All @@ -90,7 +100,7 @@ public MockMvcParamConfig mergeAllParameters() {
* @return A new instance of {@link MockMvcParamConfig}
*/
public MockMvcParamConfig replaceAllParameters() {
return new MockMvcParamConfig(REPLACE, REPLACE, REPLACE, REPLACE, REPLACE, true);
return new MockMvcParamConfig(REPLACE, REPLACE, REPLACE, REPLACE, REPLACE, REPLACE, true);
}

/**
Expand All @@ -100,7 +110,7 @@ public MockMvcParamConfig replaceAllParameters() {
* @return A new instance of {@link MockMvcParamConfig}
*/
public MockMvcParamConfig formParamsUpdateStrategy(UpdateStrategy updateStrategy) {
return new MockMvcParamConfig(queryParamsUpdateStrategy, updateStrategy, requestParameterUpdateStrategy, attributeUpdateStrategy, sessionUpdateStrategy, true);
return new MockMvcParamConfig(queryParamsUpdateStrategy, pathParamsUpdateStrategy, updateStrategy, requestParameterUpdateStrategy, attributeUpdateStrategy, sessionUpdateStrategy, true);
}

/**
Expand All @@ -114,7 +124,7 @@ public MockMvcParamConfig formParamsUpdateStrategy(UpdateStrategy updateStrategy
* @return A new instance of {@link MockMvcParamConfig}
*/
public MockMvcParamConfig requestParamsUpdateStrategy(UpdateStrategy updateStrategy) {
return new MockMvcParamConfig(queryParamsUpdateStrategy, formParamsUpdateStrategy, updateStrategy, attributeUpdateStrategy, sessionUpdateStrategy, true);
return new MockMvcParamConfig(queryParamsUpdateStrategy, pathParamsUpdateStrategy, formParamsUpdateStrategy, updateStrategy, attributeUpdateStrategy, sessionUpdateStrategy, true);
}

/**
Expand All @@ -124,7 +134,7 @@ public MockMvcParamConfig requestParamsUpdateStrategy(UpdateStrategy updateStrat
* @return A new instance of {@link MockMvcParamConfig}
*/
public MockMvcParamConfig queryParamsUpdateStrategy(UpdateStrategy updateStrategy) {
return new MockMvcParamConfig(updateStrategy, formParamsUpdateStrategy, requestParameterUpdateStrategy, attributeUpdateStrategy, sessionUpdateStrategy, true);
return new MockMvcParamConfig(updateStrategy, pathParamsUpdateStrategy, formParamsUpdateStrategy, requestParameterUpdateStrategy, attributeUpdateStrategy, sessionUpdateStrategy, true);
}

/**
Expand All @@ -134,7 +144,7 @@ public MockMvcParamConfig queryParamsUpdateStrategy(UpdateStrategy updateStrateg
* @return A new instance of {@link MockMvcParamConfig}
*/
public MockMvcParamConfig attributeUpdateStrategy(UpdateStrategy updateStrategy) {
return new MockMvcParamConfig(queryParamsUpdateStrategy, formParamsUpdateStrategy, requestParameterUpdateStrategy, updateStrategy, sessionUpdateStrategy, true);
return new MockMvcParamConfig(queryParamsUpdateStrategy, pathParamsUpdateStrategy, formParamsUpdateStrategy, requestParameterUpdateStrategy, updateStrategy, sessionUpdateStrategy, true);
}

/**
Expand All @@ -144,7 +154,7 @@ public MockMvcParamConfig attributeUpdateStrategy(UpdateStrategy updateStrategy)
* @return A new instance of {@link MockMvcParamConfig}
*/
public MockMvcParamConfig sessionAttributesUpdateStrategy(UpdateStrategy updateStrategy) {
return new MockMvcParamConfig(queryParamsUpdateStrategy, formParamsUpdateStrategy, requestParameterUpdateStrategy, attributeUpdateStrategy, updateStrategy, true);
return new MockMvcParamConfig(queryParamsUpdateStrategy, pathParamsUpdateStrategy, formParamsUpdateStrategy, requestParameterUpdateStrategy, attributeUpdateStrategy, updateStrategy, true);
}

/**
Expand Down Expand Up @@ -175,6 +185,13 @@ public UpdateStrategy queryParamsUpdateStrategy() {
return queryParamsUpdateStrategy;
}

/**
* @return The update strategy for path parameters
*/
public UpdateStrategy pathParamsUpdateStrategy() {
return pathParamsUpdateStrategy;
}

/**
* @return The update strategy for query parameters
*/
Expand Down
Loading

0 comments on commit dd4e100

Please sign in to comment.