diff --git a/accurest-core/src/main/groovy/io/codearte/accurest/SingleTestGenerator.groovy b/accurest-core/src/main/groovy/io/codearte/accurest/SingleTestGenerator.groovy index ba23ee1bdb..42ca73417c 100644 --- a/accurest-core/src/main/groovy/io/codearte/accurest/SingleTestGenerator.groovy +++ b/accurest-core/src/main/groovy/io/codearte/accurest/SingleTestGenerator.groovy @@ -52,6 +52,9 @@ class SingleTestGenerator { if (configProperties.testMode == TestMode.JAXRSCLIENT) { clazz.addStaticImport('javax.ws.rs.client.Entity.*') + if (configProperties.targetFramework == TestFramework.JUNIT) { + clazz.addImport('import javax.ws.rs.core.Response') + } } else if (configProperties.testMode == TestMode.MOCKMVC) { clazz.addStaticImport('com.jayway.restassured.module.mockmvc.RestAssuredMockMvc.*') } else { diff --git a/accurest-core/src/main/groovy/io/codearte/accurest/builder/JaxRsClientJUnitMethodBodyBuilder.groovy b/accurest-core/src/main/groovy/io/codearte/accurest/builder/JaxRsClientJUnitMethodBodyBuilder.groovy new file mode 100644 index 0000000000..79180caf54 --- /dev/null +++ b/accurest-core/src/main/groovy/io/codearte/accurest/builder/JaxRsClientJUnitMethodBodyBuilder.groovy @@ -0,0 +1,108 @@ +package io.codearte.accurest.builder + +import io.codearte.accurest.dsl.GroovyDsl +import io.codearte.accurest.dsl.internal.Header +import io.codearte.accurest.dsl.internal.QueryParameter +import io.codearte.accurest.dsl.internal.QueryParameters + +/** + * @author Olga Maciaszek-Sharma + @since 21.02.16 + */ +class JaxRsClientJUnitMethodBodyBuilder extends JUnitMethodBodyBuilder { + + JaxRsClientJUnitMethodBodyBuilder(GroovyDsl stubDefinition) { + super(stubDefinition) + } + + @Override + protected void given(BlockBuilder bb) {} + + @Override + protected void givenBlock(BlockBuilder bb) { + } + + @Override + protected void when(BlockBuilder bb) { + bb.addLine("Response response = webTarget") + bb.indent() + + appendUrlPathAndQueryParameters(bb) + appendRequestWithRequiredResponseContentType(bb) + appendHeaders(bb) + appendMethodAndBody(bb) + bb.addAtTheEnd(';') + + bb.unindent() + + bb.addEmptyLine() + bb.addLine("String responseAsString = response.readEntity(String.class);") + } + + protected void appendUrlPathAndQueryParameters(BlockBuilder bb) { + if (request.url) { + bb.addLine(".path(\"$request.url.serverValue\")") + appendQueryParams(request.url.queryParameters, bb) + } else if (request.urlPath) { + bb.addLine(".path(\"$request.urlPath.serverValue\")") + appendQueryParams(request.urlPath.queryParameters, bb) + } + } + + private void appendQueryParams(QueryParameters queryParameters, BlockBuilder bb) { + if (!queryParameters?.parameters) { + return + } + queryParameters.parameters.findAll(this.&allowedQueryParameter).each { QueryParameter param -> + bb.addLine(".queryParam(\"$param.name\", \"${resolveParamValue(param).toString()}\")") + } + } + + protected void appendMethodAndBody(BlockBuilder bb) { + String method = request.method.serverValue.toString().toLowerCase() + if (request.body) { + String contentType = getHeader('Content-Type') ?: getRequestContentType().mimeType + bb.addLine(".method(\"${method.toUpperCase()}\", entity(\"$bodyAsString\", \"$contentType\"))") + } else { + bb.addLine(".method(\"${method.toUpperCase()}\")") + } + } + + protected appendHeaders(BlockBuilder bb) { + request.headers?.collect { Header header -> + if (header.name == 'Content-Type' || header.name == 'Accept') return + bb.addLine(".header(\"${header.name}\", \"${header.serverValue}\")") + } + } + + protected void appendRequestWithRequiredResponseContentType(BlockBuilder bb) { + String acceptHeader = getHeader("Accept") + if (acceptHeader) { + bb.addLine(".request(\"$acceptHeader\")") + } else { + bb.addLine(".request()") + } + } + + @Override + protected void validateResponseCodeBlock(BlockBuilder bb) { + bb.addLine("assertThat(response.getStatus()).isEqualTo($response.status.serverValue);") + } + + @Override + protected void validateResponseHeadersBlock(BlockBuilder bb) { + response.headers?.collect { Header header -> + bb.addLine("assertThat(response.getHeaderString(\"$header.name\")).isEqualTo(\"$header.serverValue\");") + } + } + + protected String getHeader(String name) { + return request.headers?.entries.find { it.name == name }?.serverValue + } + + @Override + protected String getResponseAsString() { + return 'responseAsString' + } + +} diff --git a/accurest-core/src/test/groovy/io/codearte/accurest/builder/JaxRsClientSpockMethodBuilderSpec.groovy b/accurest-core/src/test/groovy/io/codearte/accurest/builder/JaxRsClientSpockMethodBuilderSpec.groovy index 81cfcb2755..e2fdca8146 100644 --- a/accurest-core/src/test/groovy/io/codearte/accurest/builder/JaxRsClientSpockMethodBuilderSpec.groovy +++ b/accurest-core/src/test/groovy/io/codearte/accurest/builder/JaxRsClientSpockMethodBuilderSpec.groovy @@ -6,10 +6,12 @@ import io.codearte.accurest.dsl.WireMockStubVerifier import io.codearte.accurest.file.Contract import spock.lang.Issue import spock.lang.Specification +import spock.lang.Unroll class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMockStubVerifier { - def "should generate assertions for simple response body"() { + @Unroll + def "should generate assertions for simple response body with #methodBuilderName"() { given: GroovyDsl contractDsl = GroovyDsl.make { request { @@ -24,7 +26,7 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc }""" } } - JaxRsClientSpockMethodBodyBuilder builder = new JaxRsClientSpockMethodBodyBuilder(contractDsl) + MethodBodyBuilder builder = methodBuilder(contractDsl) BlockBuilder blockBuilder = new BlockBuilder(" ") when: builder.appendTo(blockBuilder) @@ -32,11 +34,16 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc blockBuilder.toString().contains("""assertThatJson(parsedJson).field("property1").isEqualTo("a")""") blockBuilder.toString().contains("""assertThatJson(parsedJson).field("property2").isEqualTo("b")""") and: - stubMappingIsValidWireMockStub(new WireMockStubStrategy("Test", new Contract(null, false, 0, null), contractDsl).toWireMockClientStub()) + stubMappingIsValidWireMockStub(contractDsl) + where: + methodBuilderName | methodBuilder + "JaxRsClientSpockMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientSpockMethodBodyBuilder(dsl) } + "JaxRsClientJUnitMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl) } } @Issue("#187") - def "should generate assertions for null and boolean values"() { + @Unroll + def "should generate assertions for null and boolean values with #methodBuilderName"() { given: GroovyDsl contractDsl = GroovyDsl.make { request { @@ -52,7 +59,7 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc }""" } } - JaxRsClientSpockMethodBodyBuilder builder = new JaxRsClientSpockMethodBodyBuilder(contractDsl) + MethodBodyBuilder builder = methodBuilder(contractDsl) BlockBuilder blockBuilder = new BlockBuilder(" ") when: builder.appendTo(blockBuilder) @@ -62,10 +69,15 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc blockBuilder.toString().contains("""assertThatJson(parsedJson).field("property1").isEqualTo("true")""") and: stubMappingIsValidWireMockStub(new WireMockStubStrategy("Test", new Contract(null, false, 0, null), contractDsl).toWireMockClientStub()) + where: + methodBuilderName | methodBuilder + "JaxRsClientSpockMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientSpockMethodBodyBuilder(dsl) } + "JaxRsClientJUnitMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl) } } @Issue("#79") - def "should generate assertions for simple response body constructed from map with a list"() { + @Unroll + def "should generate assertions for simple response body constructed from map with a list with #methodBuilderName"() { given: GroovyDsl contractDsl = GroovyDsl.make { request { @@ -83,7 +95,7 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc ) } } - JaxRsClientSpockMethodBodyBuilder builder = new JaxRsClientSpockMethodBodyBuilder(contractDsl) + MethodBodyBuilder builder = methodBuilder(contractDsl) BlockBuilder blockBuilder = new BlockBuilder(" ") when: builder.appendTo(blockBuilder) @@ -93,10 +105,15 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc blockBuilder.toString().contains("""assertThatJson(parsedJson).array("property2").contains("b").isEqualTo("sthElse")""") and: stubMappingIsValidWireMockStub(new WireMockStubStrategy("Test", new Contract(null, false, 0, null), contractDsl).toWireMockClientStub()) + where: + methodBuilderName | methodBuilder + "JaxRsClientSpockMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientSpockMethodBodyBuilder(dsl) } + "JaxRsClientJUnitMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl) } } @Issue("#82") - def "should generate proper request when body constructed from map with a list"() { + @Unroll + def "should generate proper request when body constructed from map with a list with #methodBuilderName"() { given: GroovyDsl contractDsl = GroovyDsl.make { request { @@ -110,18 +127,23 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc status 200 } } - JaxRsClientSpockMethodBodyBuilder builder = new JaxRsClientSpockMethodBodyBuilder(contractDsl) + MethodBodyBuilder builder = methodBuilder(contractDsl) BlockBuilder blockBuilder = new BlockBuilder(" ") when: builder.appendTo(blockBuilder) then: - blockBuilder.toString().contains("""entity('{\"items\":[\"HOP\"]}', 'application/json')""") + blockBuilder.toString().contains(bodyString) and: - stubMappingIsValidWireMockStub(new WireMockStubStrategy("Test", new Contract(null, false, 0, null), contractDsl).toWireMockClientStub()) + stubMappingIsValidWireMockStub(contractDsl) + where: + methodBuilderName | methodBuilder | bodyString + "JaxRsClientSpockMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientSpockMethodBodyBuilder(dsl) } | """entity('{\"items\":[\"HOP\"]}', 'application/json')""" + "JaxRsClientJUnitMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl) } | 'entity("{\\"items\\":[\\"HOP\\"]}", "application/json")' } @Issue("#88") - def "should generate proper request when body constructed from GString"() { + @Unroll + def "should generate proper request when body constructed from GString with #methodBuilderName"() { given: GroovyDsl contractDsl = GroovyDsl.make { request { @@ -135,17 +157,22 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc status 200 } } - JaxRsClientSpockMethodBodyBuilder builder = new JaxRsClientSpockMethodBodyBuilder(contractDsl) + MethodBodyBuilder builder = methodBuilder(contractDsl) BlockBuilder blockBuilder = new BlockBuilder(" ") when: builder.appendTo(blockBuilder) then: - blockBuilder.toString().contains("""entity('property1=VAL1', 'application/octet-stream')""") + blockBuilder.toString().contains(bodyString) and: - stubMappingIsValidWireMockStub(new WireMockStubStrategy("Test", new Contract(null, false, 0, null), contractDsl).toWireMockClientStub()) + stubMappingIsValidWireMockStub(contractDsl) + where: + methodBuilderName | methodBuilder | bodyString + "JaxRsClientSpockMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientSpockMethodBodyBuilder(dsl) } | """entity('property1=VAL1', 'application/octet-stream')""" + "JaxRsClientJUnitMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl) } | 'entity("\\"property1=VAL1\\"", "application/octet-stream")' } - def "should generate assertions for array in response body"() { + @Unroll + def "should generate assertions for array in response body with #methodBuilderName"() { given: GroovyDsl contractDsl = GroovyDsl.make { request { @@ -163,7 +190,7 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc }]""" } } - JaxRsClientSpockMethodBodyBuilder builder = new JaxRsClientSpockMethodBodyBuilder(contractDsl) + MethodBodyBuilder builder = methodBuilder(contractDsl) BlockBuilder blockBuilder = new BlockBuilder(" ") when: builder.appendTo(blockBuilder) @@ -171,10 +198,15 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc blockBuilder.toString().contains("""assertThatJson(parsedJson).array().contains("property1").isEqualTo("a")""") blockBuilder.toString().contains("""assertThatJson(parsedJson).array().contains("property2").isEqualTo("b")""") and: - stubMappingIsValidWireMockStub(new WireMockStubStrategy("Test", new Contract(null, false, 0, null), contractDsl).toWireMockClientStub()) + stubMappingIsValidWireMockStub(contractDsl) + where: + methodBuilderName | methodBuilder + "JaxRsClientSpockMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientSpockMethodBodyBuilder(dsl) } + "JaxRsClientJUnitMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl) } } - def "should generate assertions for array inside response body element"() { + @Unroll + def "should generate assertions for array inside response body element with #methodBuilderName"() { given: GroovyDsl contractDsl = GroovyDsl.make { request { @@ -191,7 +223,7 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc }""" } } - JaxRsClientSpockMethodBodyBuilder builder = new JaxRsClientSpockMethodBodyBuilder(contractDsl) + MethodBodyBuilder builder = methodBuilder(contractDsl) BlockBuilder blockBuilder = new BlockBuilder(" ") when: builder.appendTo(blockBuilder) @@ -199,10 +231,15 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc blockBuilder.toString().contains("""assertThatJson(parsedJson).array("property1").contains("property2").isEqualTo("test1")""") blockBuilder.toString().contains("""assertThatJson(parsedJson).array("property1").contains("property3").isEqualTo("test2")""") and: - stubMappingIsValidWireMockStub(new WireMockStubStrategy("Test", new Contract(null, false, 0, null), contractDsl).toWireMockClientStub()) + stubMappingIsValidWireMockStub(contractDsl) + where: + methodBuilderName | methodBuilder + "JaxRsClientSpockMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientSpockMethodBodyBuilder(dsl) } + "JaxRsClientJUnitMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl) } } - def "should generate assertions for nested objects in response body"() { + @Unroll + def "should generate assertions for nested objects in response body with #methodBuilderName"() { given: GroovyDsl contractDsl = GroovyDsl.make { request { @@ -219,7 +256,7 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc ''' } } - JaxRsClientSpockMethodBodyBuilder builder = new JaxRsClientSpockMethodBodyBuilder(contractDsl) + MethodBodyBuilder builder = methodBuilder(contractDsl) BlockBuilder blockBuilder = new BlockBuilder(" ") when: builder.appendTo(blockBuilder) @@ -227,10 +264,15 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc blockBuilder.toString().contains("""assertThatJson(parsedJson).field("property2").field("property3").isEqualTo("b")""") blockBuilder.toString().contains("""assertThatJson(parsedJson).field("property1").isEqualTo("a")""") and: - stubMappingIsValidWireMockStub(new WireMockStubStrategy("Test", new Contract(null, false, 0, null), contractDsl).toWireMockClientStub()) + stubMappingIsValidWireMockStub(contractDsl) + where: + methodBuilderName | methodBuilder + "JaxRsClientSpockMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientSpockMethodBodyBuilder(dsl) } + "JaxRsClientJUnitMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl) } } - def "should generate regex assertions for map objects in response body"() { + @Unroll + def "should generate regex assertions for map objects in response body with #methodBodyName"() { given: GroovyDsl contractDsl = GroovyDsl.make { request { @@ -253,7 +295,7 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc } } - JaxRsClientSpockMethodBodyBuilder builder = new JaxRsClientSpockMethodBodyBuilder(contractDsl) + MethodBodyBuilder builder = methodBuilder(contractDsl) BlockBuilder blockBuilder = new BlockBuilder(" ") when: builder.appendTo(blockBuilder) @@ -261,10 +303,15 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc blockBuilder.toString().contains("""assertThatJson(parsedJson).field("property2").matches("[0-9]{3}")""") blockBuilder.toString().contains("""assertThatJson(parsedJson).field("property1").isEqualTo("a")""") and: - stubMappingIsValidWireMockStub(new WireMockStubStrategy("Test", new Contract(null, false, 0, null), contractDsl).toWireMockClientStub()) + stubMappingIsValidWireMockStub(contractDsl) + where: + methodBuilderName | methodBuilder + "JaxRsClientSpockMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientSpockMethodBodyBuilder(dsl) } + "JaxRsClientJUnitMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl) } } - def "should generate regex assertions for string objects in response body"() { + @Unroll + def "should generate regex assertions for string objects in response body with #methodBuilderName"() { given: GroovyDsl contractDsl = GroovyDsl.make { request { @@ -281,7 +328,7 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc } } - JaxRsClientSpockMethodBodyBuilder builder = new JaxRsClientSpockMethodBodyBuilder(contractDsl) + MethodBodyBuilder builder = methodBuilder(contractDsl) BlockBuilder blockBuilder = new BlockBuilder(" ") when: builder.appendTo(blockBuilder) @@ -289,10 +336,15 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc blockBuilder.toString().contains("""assertThatJson(parsedJson).field("property2").matches("[0-9]{3}")""") blockBuilder.toString().contains("""assertThatJson(parsedJson).field("property1").isEqualTo("a")""") and: - stubMappingIsValidWireMockStub(new WireMockStubStrategy("Test", new Contract(null, false, 0, null), contractDsl).toWireMockClientStub()) + stubMappingIsValidWireMockStub(contractDsl) + where: + methodBuilderName | methodBuilder + "JaxRsClientSpockMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientSpockMethodBodyBuilder(dsl) } + "JaxRsClientJUnitMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl) } } - def "should ignore 'Accept' header and use 'request' method"() { + @Unroll + def "should ignore 'Accept' header and use 'request' method with #methodBuilderName"() { given: GroovyDsl contractDsl = GroovyDsl.make { request { @@ -306,17 +358,22 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc status 200 } } - JaxRsClientSpockMethodBodyBuilder builder = new JaxRsClientSpockMethodBodyBuilder(contractDsl) + MethodBodyBuilder builder = methodBuilder(contractDsl) BlockBuilder blockBuilder = new BlockBuilder(" ") when: builder.appendTo(blockBuilder) then: - blockBuilder.toString().contains("request('text/plain')") + blockBuilder.toString().contains(requestString) and: - stubMappingIsValidWireMockStub(new WireMockStubStrategy("Test", new Contract(null, false, 0, null), contractDsl).toWireMockClientStub()) + stubMappingIsValidWireMockStub(contractDsl) + where: + methodBuilderName | methodBuilder | requestString + "JaxRsClientSpockMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientSpockMethodBodyBuilder(dsl) } | "request('text/plain')" + "JaxRsClientJUnitMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl) } | 'request("text/plain")' } - def "should ignore 'Content-Type' header and use 'entity' method"() { + @Unroll + def "should ignore 'Content-Type' header and use 'entity' method with #methodBuilderName"() { given: GroovyDsl contractDsl = GroovyDsl.make { request { @@ -332,19 +389,25 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc status 200 } } - JaxRsClientSpockMethodBodyBuilder builder = new JaxRsClientSpockMethodBodyBuilder(contractDsl) + MethodBodyBuilder builder = methodBuilder(contractDsl) BlockBuilder blockBuilder = new BlockBuilder(" ") when: builder.appendTo(blockBuilder) then: - blockBuilder.toString().contains("""entity('', 'text/plain')""") - blockBuilder.toString().contains("""header('Timer', '123')""") - !blockBuilder.toString().contains("""header('Content-Type'""") + for (String requestString : requestStrings) { + blockBuilder.toString().contains(requestString) + } + !blockBuilder.toString().contains("""Content Type""") and: - stubMappingIsValidWireMockStub(new WireMockStubStrategy("Test", new Contract(null, false, 0, null), contractDsl).toWireMockClientStub()) + stubMappingIsValidWireMockStub(contractDsl) + where: + methodBuilderName | methodBuilder | requestStrings + "JaxRsClientSpockMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientSpockMethodBodyBuilder(dsl) } | ["""entity('', 'text/plain')""", """header('Timer', '123')"""] + "JaxRsClientJUnitMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl) } | ['entity("\\"\\"", "text/plain")', 'header("Timer", "123")'] } - def "should generate a call with an url path and query parameters"() { + @Unroll + def "should generate a call with an url path and query parameters with #methodBuilderName"() { given: GroovyDsl contractDsl = GroovyDsl.make { request { @@ -374,28 +437,33 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc """ } } - JaxRsClientSpockMethodBodyBuilder builder = new JaxRsClientSpockMethodBodyBuilder(contractDsl) + MethodBodyBuilder builder = methodBuilder(contractDsl) BlockBuilder blockBuilder = new BlockBuilder(" ") when: builder.appendTo(blockBuilder) - def spockTest = blockBuilder.toString() + def test = blockBuilder.toString() then: - spockTest.contains("queryParam('limit', '10'") - spockTest.contains("queryParam('offset', '20'") - spockTest.contains("queryParam('filter', 'email'") - spockTest.contains("queryParam('sort', 'name'") - spockTest.contains("queryParam('search', '55'") - spockTest.contains("queryParam('age', '99'") - spockTest.contains("queryParam('name', 'Denis.Stepanov'") - spockTest.contains("queryParam('email', 'bob@email.com'") - spockTest.contains("""assertThatJson(parsedJson).field("property1").isEqualTo("a")""") - spockTest.contains("""assertThatJson(parsedJson).field("property2").isEqualTo("b")""") + test.contains(modifyStringIfRequired.call("queryParam('limit', '10'")) + test.contains(modifyStringIfRequired.call("queryParam('offset', '20'")) + test.contains(modifyStringIfRequired.call("queryParam('filter', 'email'")) + test.contains(modifyStringIfRequired.call("queryParam('sort', 'name'")) + test.contains(modifyStringIfRequired.call("queryParam('search', '55'")) + test.contains(modifyStringIfRequired.call("queryParam('age', '99'")) + test.contains(modifyStringIfRequired.call("queryParam('name', 'Denis.Stepanov'")) + test.contains(modifyStringIfRequired.call("queryParam('email', 'bob@email.com'")) + test.contains(modifyStringIfRequired.call("""assertThatJson(parsedJson).field("property1").isEqualTo("a")""")) + test.contains(modifyStringIfRequired.call("""assertThatJson(parsedJson).field("property2").isEqualTo("b")""")) and: - stubMappingIsValidWireMockStub(new WireMockStubStrategy("Test", new Contract(null, false, 0, null), contractDsl).toWireMockClientStub()) + stubMappingIsValidWireMockStub(contractDsl) + where: + methodBuilderName | methodBuilder | modifyStringIfRequired + "JaxRsClientSpockMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientSpockMethodBodyBuilder(dsl) } | { String paramString -> paramString } + "JaxRsClientJUnitMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl) } | { String paramString -> paramString.replace("'", "\"") } } @Issue('#169') - def "should generate a call with an url path and query parameters with url containing a pattern"() { + @Unroll + def "should generate a call with an url path and query parameters with url containing a pattern with #methodBuilderName"() { given: GroovyDsl contractDsl = GroovyDsl.make { request { @@ -425,27 +493,32 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc """ } } - JaxRsClientSpockMethodBodyBuilder builder = new JaxRsClientSpockMethodBodyBuilder(contractDsl) + MethodBodyBuilder builder = methodBuilder(contractDsl) BlockBuilder blockBuilder = new BlockBuilder(" ") when: builder.appendTo(blockBuilder) - def spockTest = blockBuilder.toString() + def test = blockBuilder.toString() then: - spockTest.contains("queryParam('limit', '10'") - spockTest.contains("queryParam('offset', '20'") - spockTest.contains("queryParam('filter', 'email'") - spockTest.contains("queryParam('sort', 'name'") - spockTest.contains("queryParam('search', '55'") - spockTest.contains("queryParam('age', '99'") - spockTest.contains("queryParam('name', 'Denis.Stepanov'") - spockTest.contains("queryParam('email', 'bob@email.com'") - spockTest.contains("""assertThatJson(parsedJson).field("property1").isEqualTo("a")""") - spockTest.contains("""assertThatJson(parsedJson).field("property2").isEqualTo("b")""") + test.contains(modifyStringIfRequired.call("queryParam('limit', '10'")) + test.contains(modifyStringIfRequired.call("queryParam('offset', '20'")) + test.contains(modifyStringIfRequired.call("queryParam('filter', 'email'")) + test.contains(modifyStringIfRequired.call("queryParam('sort', 'name'")) + test.contains(modifyStringIfRequired.call("queryParam('search', '55'")) + test.contains(modifyStringIfRequired.call("queryParam('age', '99'")) + test.contains(modifyStringIfRequired.call("queryParam('name', 'Denis.Stepanov'")) + test.contains(modifyStringIfRequired.call("queryParam('email', 'bob@email.com'")) + test.contains(modifyStringIfRequired.call("""assertThatJson(parsedJson).field("property1").isEqualTo("a")""")) + test.contains(modifyStringIfRequired.call("""assertThatJson(parsedJson).field("property2").isEqualTo("b")""")) and: - stubMappingIsValidWireMockStub(new WireMockStubStrategy("Test", new Contract(null, false, 0, null), contractDsl).toWireMockClientStub()) + stubMappingIsValidWireMockStub(contractDsl) + where: + methodBuilderName | methodBuilder | modifyStringIfRequired + "JaxRsClientSpockMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientSpockMethodBodyBuilder(dsl) } | { String paramString -> paramString } + "JaxRsClientJUnitMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl) } | { String paramString -> paramString.replace("'", "\"") } } - def "should generate test for empty body"() { + @Unroll + def "should generate test for empty body with #methodBuilderName"() { given: GroovyDsl contractDsl = GroovyDsl.make { request { @@ -457,18 +530,24 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc status 406 } } - JaxRsClientSpockMethodBodyBuilder builder = new JaxRsClientSpockMethodBodyBuilder(contractDsl) + + MethodBodyBuilder builder = methodBuilder(contractDsl) BlockBuilder blockBuilder = new BlockBuilder(" ") when: builder.appendTo(blockBuilder) def spockTest = blockBuilder.toString() then: - spockTest.contains("entity('', 'application/octet-stream')") + spockTest.contains(bodyString) and: - stubMappingIsValidWireMockStub(new WireMockStubStrategy("Test", new Contract(null, false, 0, null), contractDsl).toWireMockClientStub()) + stubMappingIsValidWireMockStub(contractDsl) + where: + methodBuilderName | methodBuilder | bodyString + "JaxRsClientSpockMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientSpockMethodBodyBuilder(dsl) } | "entity('', 'application/octet-stream')" + "JaxRsClientJUnitMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl) } | 'entity("\\"\\"", "application/octet-stream"' } - def "should generate test for String in response body"() { + @Unroll + def "should generate test for String in response body with #methodBodyName"() { given: GroovyDsl contractDsl = GroovyDsl.make { request { @@ -480,20 +559,25 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc body "test" } } - JaxRsClientSpockMethodBodyBuilder builder = new JaxRsClientSpockMethodBodyBuilder(contractDsl) + MethodBodyBuilder builder = methodBuilder(contractDsl) BlockBuilder blockBuilder = new BlockBuilder(" ") when: builder.appendTo(blockBuilder) - def spockTest = blockBuilder.toString() + def test = blockBuilder.toString() then: - spockTest.contains("String responseAsString = response.readEntity(String)") - spockTest.contains('responseBody == "test"') + test.contains(bodyDefinitionString) + test.contains(bodyEvaluationString) and: - stubMappingIsValidWireMockStub(new WireMockStubStrategy("Test", new Contract(null, false, 0, null), contractDsl).toWireMockClientStub()) + stubMappingIsValidWireMockStub(contractDsl) + where: + methodBuilderName | methodBuilder | bodyDefinitionString | bodyEvaluationString + "JaxRsClientSpockMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientSpockMethodBodyBuilder(dsl) } | "String responseAsString = response.readEntity(String)" | 'responseBody == "test"' + "JaxRsClientJUnitMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl) } | 'Object responseBody = (responseAsString);' | 'assertThat(responseBody).isEqualTo("test");' } @Issue('#171') - def "should generate test with uppercase method name"() { + @Unroll + def "should generate test with uppercase method name with #methodBuilderName"() { given: GroovyDsl contractDsl = GroovyDsl.make { request { @@ -510,15 +594,19 @@ class JaxRsClientSpockMethodBuilderSpec extends Specification implements WireMoc """ } } - JaxRsClientSpockMethodBodyBuilder builder = new JaxRsClientSpockMethodBodyBuilder(contractDsl) + MethodBodyBuilder builder = methodBuilder(contractDsl) BlockBuilder blockBuilder = new BlockBuilder(" ") when: builder.appendTo(blockBuilder) def spockTest = blockBuilder.toString() then: - spockTest.contains(".method('GET')") + spockTest.contains(methodString) and: - stubMappingIsValidWireMockStub(new WireMockStubStrategy("Test", new Contract(null, false, 0, null), contractDsl).toWireMockClientStub()) + stubMappingIsValidWireMockStub(contractDsl) + where: + methodBuilderName | methodBuilder | methodString + "JaxRsClientSpockMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientSpockMethodBodyBuilder(dsl) } | ".method('GET')" + "JaxRsClientJUnitMethodBodyBuilder" | { GroovyDsl dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl) } | 'method("GET")' } } diff --git a/accurest-core/src/test/groovy/io/codearte/accurest/builder/MockMvcMethodBuilderSpec.groovy b/accurest-core/src/test/groovy/io/codearte/accurest/builder/MockMvcMethodBodyBuilderSpec.groovy similarity index 83% rename from accurest-core/src/test/groovy/io/codearte/accurest/builder/MockMvcMethodBuilderSpec.groovy rename to accurest-core/src/test/groovy/io/codearte/accurest/builder/MockMvcMethodBodyBuilderSpec.groovy index 14153a93d6..d2390e5cca 100644 --- a/accurest-core/src/test/groovy/io/codearte/accurest/builder/MockMvcMethodBuilderSpec.groovy +++ b/accurest-core/src/test/groovy/io/codearte/accurest/builder/MockMvcMethodBodyBuilderSpec.groovy @@ -14,7 +14,7 @@ import java.util.regex.Pattern /** * @author Jakub Kubrynski */ -class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVerifier { +class MockMvcMethodBodyBuilderSpec extends Specification implements WireMockStubVerifier { @Shared GroovyDsl dslWithOptionalsInString = GroovyDsl.make { @@ -103,8 +103,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri stubMappingIsValidWireMockStub(contractDsl) where: methodBuilderName | methodBuilder - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } } @Issue("#187") @@ -137,8 +137,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri stubMappingIsValidWireMockStub(contractDsl) where: methodBuilderName | methodBuilder - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } } @Issue("#79") @@ -173,8 +173,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri stubMappingIsValidWireMockStub(contractDsl) where: methodBuilderName | methodBuilder - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } } @Issue("#82") @@ -203,8 +203,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri stubMappingIsValidWireMockStub(contractDsl) where: methodBuilderName | methodBuilder | bodyString - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } | """.body('''{\"items\":[\"HOP\"]}''')""" - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } | '.body("{\\"items\\":[\\"HOP\\"]}")' + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } | """.body('''{\"items\":[\"HOP\"]}''')""" + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } | '.body("{\\"items\\":[\\"HOP\\"]}")' } @Issue("#88") @@ -233,8 +233,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri stubMappingIsValidWireMockStub(contractDsl) where: methodBuilderName | methodBuilder | bodyString - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } | """.body('''property1=VAL1''')""" - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } | '.body("\\"property1=VAL1\\"")' + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } | """.body('''property1=VAL1''')""" + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } | '.body("\\"property1=VAL1\\"")' } @Issue("185") @@ -267,8 +267,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri stubMappingIsValidWireMockStub(contractDsl) where: methodBuilderName | methodBuilder - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } } @Unroll @@ -301,8 +301,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri stubMappingIsValidWireMockStub(contractDsl) where: methodBuilderName | methodBuilder - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } } @Unroll @@ -334,8 +334,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri stubMappingIsValidWireMockStub(contractDsl) where: methodBuilderName | methodBuilder - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } } @Unroll @@ -367,8 +367,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri stubMappingIsValidWireMockStub(contractDsl) where: methodBuilderName | methodBuilder - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } } @Unroll @@ -404,8 +404,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri stubMappingIsValidWireMockStub(contractDsl) where: methodBuilderName | methodBuilder - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } } @Unroll @@ -435,8 +435,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri stubMappingIsValidWireMockStub(contractDsl) where: methodBuilderName | methodBuilder - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } } @Issue(["#126", "#143"]) @@ -466,8 +466,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri stubMappingIsValidWireMockStub(contractDsl) where: methodBuilderName | methodBuilder - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } } @Unroll @@ -514,8 +514,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri stubMappingIsValidWireMockStub(contractDsl) where: methodBuilderName | methodBuilder - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } } @Issue('#169') @@ -563,8 +563,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri stubMappingIsValidWireMockStub(contractDsl) where: methodBuilderName | methodBuilder - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } } @Unroll @@ -591,8 +591,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri stubMappingIsValidWireMockStub(contractDsl) where: methodBuilderName | methodBuilder | bodyString - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } | ".body('''''')" - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } | ".body(\"\\\"\\\"\")" + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } | ".body('''''')" + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } | ".body(\"\\\"\\\"\")" } @Unroll @@ -620,8 +620,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri stubMappingIsValidWireMockStub(contractDsl) where: methodBuilderName | methodBuilder | bodyDefinitionString | bodyEvaluationString - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } | 'def responseBody = (response.body.asString())' | 'responseBody == "test"' - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } | 'Object responseBody = (response.getBody().asString());' | 'assertThat(responseBody).isEqualTo("test");' + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } | 'def responseBody = (response.body.asString())' | 'responseBody == "test"' + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } | 'Object responseBody = (response.getBody().asString());' | 'assertThat(responseBody).isEqualTo("test");' } @Issue('113') @@ -660,8 +660,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri stubMappingIsValidWireMockStub(contractDsl) where: methodBuilderName | methodBuilder | headerEvaluationString - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } | '''response.header('Location') ==~ java.util.regex.Pattern.compile('http://localhost/partners/[0-9]+/users/[0-9]+')''' - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } | 'assertThat(response.header("Location")).matches("http://localhost/partners/[0-9]+/users/[0-9]+");' + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } | '''response.header('Location') ==~ java.util.regex.Pattern.compile('http://localhost/partners/[0-9]+/users/[0-9]+')''' + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } | 'assertThat(response.header("Location")).matches("http://localhost/partners/[0-9]+/users/[0-9]+");' } @Issue('115') @@ -700,8 +700,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri stubMappingIsValidWireMockStub(contractDsl) where: methodBuilderName | methodBuilder | headerEvaluationString - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } | '''response.header('Location') ==~ java.util.regex.Pattern.compile('^((http[s]?|ftp):\\/)\\/?([^:\\/\\s]+)(:[0-9]{1,5})?/partners/[0-9]+/users/[0-9]+')''' - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } | 'assertThat(response.header("Location")).matches("^((http[s]?|ftp):/)/?([^:/s]+)(:[0-9]{1,5})?/partners/[0-9]+/users/[0-9]+");' + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } | '''response.header('Location') ==~ java.util.regex.Pattern.compile('^((http[s]?|ftp):\\/)\\/?([^:\\/\\s]+)(:[0-9]{1,5})?/partners/[0-9]+/users/[0-9]+')''' + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } | 'assertThat(response.header("Location")).matches("^((http[s]?|ftp):/)/?([^:/s]+)(:[0-9]{1,5})?/partners/[0-9]+/users/[0-9]+");' } @Unroll @@ -742,8 +742,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri stubMappingIsValidWireMockStub(contractDsl) where: methodBuilderName | methodBuilder - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } } @Unroll @@ -776,8 +776,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri stubMappingIsValidWireMockStub(contractDsl) where: methodBuilderName | methodBuilder - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } } @Unroll @@ -816,8 +816,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri test.contains("""assertThatJson(parsedJson).field("message").matches("User not found by email = \\\\\\\\[[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\\\\\.[a-zA-Z]{2,4}\\\\\\\\]")""") where: methodBuilderName | methodBuilder - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } } @Issue('42') @@ -898,8 +898,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri test.contains(assertionString) where: methodBuilderName | methodBuilder | assertionString - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } | '''assertThatRejectionReasonIsNull(parsedJson.read('$.rejectionReason'))''' - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } | '''assertThatRejectionReasonIsNull(parsedJson.read("$.rejectionReason"))''' + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } | '''assertThatRejectionReasonIsNull(parsedJson.read('$.rejectionReason'))''' + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } | '''assertThatRejectionReasonIsNull(parsedJson.read("$.rejectionReason"))''' } @Unroll @@ -966,8 +966,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri !test.contains("cursor") where: methodBuilderName | methodBuilder | bodyString - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } | '"street":"Light Street"' - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } | '\\"street\\":\\"Light Street\\"' + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } | '"street":"Light Street"' + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } | '\\"street\\":\\"Light Street\\"' } @@ -1006,8 +1006,8 @@ class MockMvcMethodBuilderSpec extends Specification implements WireMockStubVeri !test.contains("\\u041f") where: methodBuilderName | methodBuilder - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } } @Issue('177') @@ -1034,9 +1034,9 @@ World.''') test.contains(bodyString) where: methodBuilderName | methodBuilder | bodyString - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } | """'''hello, + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } | """'''hello, World.'''""" - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } | '\\"hello,\\nWorld.\\"' + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } | '\\"hello,\\nWorld.\\"' } @Issue('180') @@ -1071,11 +1071,11 @@ World.'''""" } where: methodBuilderName | methodBuilder | requestStrings - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } | ["""'content-type', 'multipart/form-data;boundary=AaB03x'""", + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } | ["""'content-type', 'multipart/form-data;boundary=AaB03x'""", """.param('formParameter', '"formParameterValue"'""", """.param('someBooleanParameter', 'true')""", """.multiPart('file', 'filename.csv', 'file content'.bytes)"""] - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } | ['"content-type", "multipart/form-data;boundary=AaB03x"', + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } | ['"content-type", "multipart/form-data;boundary=AaB03x"', '.param("formParameter", "\\"formParameterValue\\"")', '.param("someBooleanParameter", "true")', '.multiPart("file", "filename.csv", "file content".getBytes());'] @@ -1110,12 +1110,8 @@ World.'''""" test.contains('.multiPart') where: methodBuilderName | methodBuilder - "MockMvcSpockMethodBuilder" | { dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } - "MockMvcJUnitMethodBuilder" | { dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } + "MockMvcSpockMethodBuilder" | { GroovyDsl dsl -> new MockMvcSpockMethodBodyBuilder(dsl) } + "MockMvcJUnitMethodBuilder" | { GroovyDsl dsl -> new MockMvcJUnitMethodBodyBuilder(dsl) } } - - protected void stubMappingIsValidWireMockStub(GroovyDsl contractDsl) { - stubMappingIsValidWireMockStub(new WireMockStubStrategy("Test", new Contract(null, false, 0, null), contractDsl).toWireMockClientStub()) - } } diff --git a/accurest-core/src/test/groovy/io/codearte/accurest/dsl/WireMockStubVerifier.groovy b/accurest-core/src/test/groovy/io/codearte/accurest/dsl/WireMockStubVerifier.groovy index 6665a642e9..bb4ec0e18d 100644 --- a/accurest-core/src/test/groovy/io/codearte/accurest/dsl/WireMockStubVerifier.groovy +++ b/accurest-core/src/test/groovy/io/codearte/accurest/dsl/WireMockStubVerifier.groovy @@ -1,6 +1,7 @@ package io.codearte.accurest.dsl import com.github.tomakehurst.wiremock.stubbing.StubMapping +import io.codearte.accurest.file.Contract import java.util.regex.Pattern @@ -14,4 +15,8 @@ trait WireMockStubVerifier { assert !mappingDefinition.contains('io.codearte.accurest.dsl.internal') } + void stubMappingIsValidWireMockStub(GroovyDsl contractDsl) { + stubMappingIsValidWireMockStub(new WireMockStubStrategy("Test", new Contract(null, false, 0, null), contractDsl).toWireMockClientStub()) + } + }