Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[java rest-assured] prevent reqSpec reuse between requests #3375

Merged
merged 2 commits into from
Jul 18, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -34,13 +34,13 @@ public class ApiClient {
{{#apiInfo}}
{{#apis}}
public {{classname}} {{classVarName}}() {
return {{classname}}.{{classVarName}}(config.baseReqSpec.get());
return {{classname}}.{{classVarName}}(config.reqSpecSupplier);
}
{{/apis}}
{{/apiInfo}}

public static class Config {
private Supplier<RequestSpecBuilder> baseReqSpec = () -> new RequestSpecBuilder()
private Supplier<RequestSpecBuilder> reqSpecSupplier = () -> new RequestSpecBuilder()
{{#basePath}}.setBaseUri(BASE_URI){{/basePath}}
.setConfig(config().objectMapperConfig(objectMapperConfig().defaultObjectMapper(gson())));

@@ -50,7 +50,7 @@ public class ApiClient {
* @return configuration
*/
public Config reqSpecSupplier(Supplier<RequestSpecBuilder> supplier) {
this.baseReqSpec = supplier;
this.reqSpecSupplier = supplier;
return this;
}

Original file line number Diff line number Diff line change
@@ -31,14 +31,23 @@ import static io.restassured.http.Method.*;
@Api(value = "{{{baseName}}}")
public class {{classname}} {

private RequestSpecBuilder reqSpec;
private Supplier<RequestSpecBuilder> reqSpecSupplier;
private Consumer<RequestSpecBuilder> reqSpecCustomizer;

private {{classname}}(RequestSpecBuilder reqSpec) {
this.reqSpec = reqSpec;
private {{classname}}(Supplier<RequestSpecBuilder> reqSpecSupplier) {
this.reqSpecSupplier = reqSpecSupplier;
}

public static {{classname}} {{classVarName}}(RequestSpecBuilder reqSpec) {
return new {{classname}}(reqSpec);
public static {{classname}} {{classVarName}}(Supplier<RequestSpecBuilder> reqSpecSupplier) {
return new {{classname}}(reqSpecSupplier);
}

private RequestSpecBuilder createReqSpec() {
RequestSpecBuilder reqSpec = reqSpecSupplier.get();
if(reqSpecCustomizer != null) {
reqSpecCustomizer.accept(reqSpec);
}
return reqSpec;
}

{{#operations}}
@@ -54,18 +63,18 @@ public class {{classname}} {
@Deprecated
{{/isDeprecated}}
public {{operationIdCamelCase}}Oper {{operationId}}() {
return new {{operationIdCamelCase}}Oper(reqSpec);
return new {{operationIdCamelCase}}Oper(createReqSpec());
}
{{/operation}}
{{/operations}}

/**
* Customise request specification
* @param consumer consumer
* Customize request specification
* @param reqSpecCustomizer consumer to modify the RequestSpecBuilder
* @return api
*/
public {{classname}} reqSpec(Consumer<RequestSpecBuilder> consumer) {
consumer.accept(reqSpec);
public {{classname}} reqSpec(Consumer<RequestSpecBuilder> reqSpecCustomizer) {
this.reqSpecCustomizer = reqSpecCustomizer;
return this;
}

@@ -216,22 +225,22 @@ public class {{classname}} {
{{/formParams}}

/**
* Customise request specification
* @param consumer consumer
* Customize request specification
* @param reqSpecCustomizer consumer to modify the RequestSpecBuilder
* @return operation
*/
public {{operationIdCamelCase}}Oper reqSpec(Consumer<RequestSpecBuilder> consumer) {
consumer.accept(reqSpec);
public {{operationIdCamelCase}}Oper reqSpec(Consumer<RequestSpecBuilder> reqSpecCustomizer) {
reqSpecCustomizer.accept(reqSpec);
return this;
}

/**
* Customise response specification
* @param consumer consumer
* Customize response specification
* @param respSpecCustomizer consumer to modify the ResponseSpecBuilder
* @return operation
*/
public {{operationIdCamelCase}}Oper respSpec(Consumer<ResponseSpecBuilder> consumer) {
consumer.accept(respSpec);
public {{operationIdCamelCase}}Oper respSpec(Consumer<ResponseSpecBuilder> respSpecCustomizer) {
respSpecCustomizer.accept(respSpec);
return this;
}
}
Original file line number Diff line number Diff line change
@@ -37,26 +37,26 @@ public static ApiClient api(Config config) {
}

public AnotherFakeApi anotherFake() {
return AnotherFakeApi.anotherFake(config.baseReqSpec.get());
return AnotherFakeApi.anotherFake(config.reqSpecSupplier);
}
public FakeApi fake() {
return FakeApi.fake(config.baseReqSpec.get());
return FakeApi.fake(config.reqSpecSupplier);
}
public FakeClassnameTags123Api fakeClassnameTags123() {
return FakeClassnameTags123Api.fakeClassnameTags123(config.baseReqSpec.get());
return FakeClassnameTags123Api.fakeClassnameTags123(config.reqSpecSupplier);
}
public PetApi pet() {
return PetApi.pet(config.baseReqSpec.get());
return PetApi.pet(config.reqSpecSupplier);
}
public StoreApi store() {
return StoreApi.store(config.baseReqSpec.get());
return StoreApi.store(config.reqSpecSupplier);
}
public UserApi user() {
return UserApi.user(config.baseReqSpec.get());
return UserApi.user(config.reqSpecSupplier);
}

public static class Config {
private Supplier<RequestSpecBuilder> baseReqSpec = () -> new RequestSpecBuilder()
private Supplier<RequestSpecBuilder> reqSpecSupplier = () -> new RequestSpecBuilder()
.setBaseUri(BASE_URI)
.setConfig(config().objectMapperConfig(objectMapperConfig().defaultObjectMapper(gson())));

@@ -66,7 +66,7 @@ public static class Config {
* @return configuration
*/
public Config reqSpecSupplier(Supplier<RequestSpecBuilder> supplier) {
this.baseReqSpec = supplier;
this.reqSpecSupplier = supplier;
return this;
}

Original file line number Diff line number Diff line change
@@ -39,14 +39,23 @@
@Api(value = "AnotherFake")
public class AnotherFakeApi {

private RequestSpecBuilder reqSpec;
private Supplier<RequestSpecBuilder> reqSpecSupplier;
private Consumer<RequestSpecBuilder> reqSpecCustomizer;

private AnotherFakeApi(RequestSpecBuilder reqSpec) {
this.reqSpec = reqSpec;
private AnotherFakeApi(Supplier<RequestSpecBuilder> reqSpecSupplier) {
this.reqSpecSupplier = reqSpecSupplier;
}

public static AnotherFakeApi anotherFake(RequestSpecBuilder reqSpec) {
return new AnotherFakeApi(reqSpec);
public static AnotherFakeApi anotherFake(Supplier<RequestSpecBuilder> reqSpecSupplier) {
return new AnotherFakeApi(reqSpecSupplier);
}

private RequestSpecBuilder createReqSpec() {
RequestSpecBuilder reqSpec = reqSpecSupplier.get();
if(reqSpecCustomizer != null) {
reqSpecCustomizer.accept(reqSpec);
}
return reqSpec;
}


@@ -57,16 +66,16 @@ public static AnotherFakeApi anotherFake(RequestSpecBuilder reqSpec) {
@ApiResponses(value = {
@ApiResponse(code = 200, message = "successful operation") })
public Call123testSpecialTagsOper call123testSpecialTags() {
return new Call123testSpecialTagsOper(reqSpec);
return new Call123testSpecialTagsOper(createReqSpec());
}

/**
* Customise request specification
* @param consumer consumer
* Customize request specification
* @param reqSpecCustomizer consumer to modify the RequestSpecBuilder
* @return api
*/
public AnotherFakeApi reqSpec(Consumer<RequestSpecBuilder> consumer) {
consumer.accept(reqSpec);
public AnotherFakeApi reqSpec(Consumer<RequestSpecBuilder> reqSpecCustomizer) {
this.reqSpecCustomizer = reqSpecCustomizer;
return this;
}

@@ -122,22 +131,22 @@ public Call123testSpecialTagsOper body(Client body) {
}

/**
* Customise request specification
* @param consumer consumer
* Customize request specification
* @param reqSpecCustomizer consumer to modify the RequestSpecBuilder
* @return operation
*/
public Call123testSpecialTagsOper reqSpec(Consumer<RequestSpecBuilder> consumer) {
consumer.accept(reqSpec);
public Call123testSpecialTagsOper reqSpec(Consumer<RequestSpecBuilder> reqSpecCustomizer) {
reqSpecCustomizer.accept(reqSpec);
return this;
}

/**
* Customise response specification
* @param consumer consumer
* Customize response specification
* @param respSpecCustomizer consumer to modify the ResponseSpecBuilder
* @return operation
*/
public Call123testSpecialTagsOper respSpec(Consumer<ResponseSpecBuilder> consumer) {
consumer.accept(respSpec);
public Call123testSpecialTagsOper respSpec(Consumer<ResponseSpecBuilder> respSpecCustomizer) {
respSpecCustomizer.accept(respSpec);
return this;
}
}
Loading