Merge branch '1.0.x'

This commit is contained in:
Marcin Grzejszczak
2017-04-18 09:53:32 +02:00
3 changed files with 85 additions and 6 deletions

View File

@@ -549,7 +549,13 @@ abstract class MethodBodyBuilder {
* Removes unnecessary quotes
*/
protected String trimRepeatedQuotes(String toTrim) {
return toTrim.startsWith('"') ? toTrim.replaceAll('"', '') : toTrim
if (toTrim.startsWith('"')) {
return toTrim.replaceAll('"', '')
//#261
} else if (toTrim.startsWith('\\"') && toTrim.endsWith('\\"')) {
return toTrim.substring(2, toTrim.length() - 2)
}
return toTrim
}
/**

View File

@@ -235,7 +235,7 @@ class JaxRsClientMethodBuilderSpec extends Specification implements WireMockStub
where:
methodBuilderName | methodBuilder | bodyString
"JaxRsClientSpockMethodRequestProcessingBodyBuilder" | { org.springframework.cloud.contract.spec.Contract dsl -> new JaxRsClientSpockMethodRequestProcessingBodyBuilder(dsl, properties) } | """entity('property1=VAL1', 'application/octet-stream')"""
"JaxRsClientJUnitMethodBodyBuilder" | { org.springframework.cloud.contract.spec.Contract dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl, properties) } | 'entity("\\"property1=VAL1\\"", "application/octet-stream")'
"JaxRsClientJUnitMethodBodyBuilder" | { org.springframework.cloud.contract.spec.Contract dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl, properties) } | 'entity("property1=VAL1", "application/octet-stream")'
}
def "should generate assertions for array in response body with #methodBuilderName"() {
@@ -617,7 +617,7 @@ class JaxRsClientMethodBuilderSpec extends Specification implements WireMockStub
where:
methodBuilderName | methodBuilder | bodyString
"JaxRsClientSpockMethodRequestProcessingBodyBuilder" | { org.springframework.cloud.contract.spec.Contract dsl -> new JaxRsClientSpockMethodRequestProcessingBodyBuilder(dsl, properties) } | "entity('', 'application/octet-stream')"
"JaxRsClientJUnitMethodBodyBuilder" | { org.springframework.cloud.contract.spec.Contract dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl, properties) } | 'entity("\\"\\"", "application/octet-stream"'
"JaxRsClientJUnitMethodBodyBuilder" | { org.springframework.cloud.contract.spec.Contract dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl, properties) } | 'entity("", "application/octet-stream"'
}
def "should generate test for String in response body with #methodBodyName"() {
@@ -1113,4 +1113,77 @@ class JaxRsClientMethodBuilderSpec extends Specification implements WireMockStub
"JaxRsClientSpockMethodRequestProcessingBodyBuilder" | { org.springframework.cloud.contract.spec.Contract dsl -> new JaxRsClientSpockMethodRequestProcessingBodyBuilder(dsl, properties) }
"JaxRsClientJUnitMethodBodyBuilder" | { org.springframework.cloud.contract.spec.Contract dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl, properties) }
}
@Issue('#261')
@Unroll
def "should not produce any additional quotes for [#methodBuilderName]"() {
given:
Contract contractDsl = Contract.make {
request {
method "POST"
url "/v2/applications/a-TEST-upload/documents"
headers {
header 'Authorization': "foo"
header 'Content-Type': "multipart/form-data;boundary=Boundary_1_1831312172_1491482784697"
}
body $('''
--Boundary_1_1831312172_1491482784697
Content-Disposition: form-data; name="file"
DATA
--Boundary_1_1831312172_1491482784697--
''')
}
response {
status 400
body "File name is required"
}
}
MethodBodyBuilder builder = methodBuilder(contractDsl)
BlockBuilder blockBuilder = new BlockBuilder(" ")
when:
builder.appendTo(blockBuilder)
def test = blockBuilder.toString()
then:
!test.contains('entity("\\"\\n')
test.contains('''entity("\\n--Boundary_1_1831312172_1491482784697\\nContent-Disposition: form-data; name=\\"file\\"\\n\\nDATA\\n--Boundary_1_1831312172_1491482784697--\\n", "multipart/form-data;boundary=Boundary_1_1831312172_1491482784697"))''')
and:
SyntaxChecker.tryToCompile(methodBuilderName, blockBuilder.toString())
where:
methodBuilderName | methodBuilder
"JaxRsClientJUnitMethodBodyBuilder" | { org.springframework.cloud.contract.spec.Contract dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl, properties) }
}
@Issue('#261')
@Unroll
def "should not produce any additional quotes for json body [#methodBuilderName]"() {
given:
Contract contractDsl = Contract.make {
request {
method "POST"
url "/foo"
headers {
header 'Content-Type': "application/json"
}
body $('''{ "foo": "bar"}''')
}
response {
status 400
body "File name is required"
}
}
MethodBodyBuilder builder = methodBuilder(contractDsl)
BlockBuilder blockBuilder = new BlockBuilder(" ")
when:
builder.appendTo(blockBuilder)
def test = blockBuilder.toString()
then:
!test.contains('entity("\\"\\n')
test.contains('''.method("POST", entity("{\\"foo\\":\\"bar\\"}", "application/json"))''')
and:
SyntaxChecker.tryToCompile(methodBuilderName, blockBuilder.toString())
where:
methodBuilderName | methodBuilder
"JaxRsClientJUnitMethodBodyBuilder" | { org.springframework.cloud.contract.spec.Contract dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl, properties) }
}
}

View File

@@ -309,7 +309,7 @@ class MockMvcMethodBodyBuilderSpec extends Specification implements WireMockStub
where:
methodBuilderName | methodBuilder | bodyString
"MockMvcSpockMethodBuilder" | { Contract dsl -> new MockMvcSpockMethodRequestProcessingBodyBuilder(dsl, properties) } | """.body('''property1=VAL1''')"""
"MockMvcJUnitMethodBuilder" | { Contract dsl -> new MockMvcJUnitMethodBodyBuilder(dsl, properties) } | '.body("\\"property1=VAL1\\"")'
"MockMvcJUnitMethodBuilder" | { Contract dsl -> new MockMvcJUnitMethodBodyBuilder(dsl, properties) } | '.body("property1=VAL1")'
}
@Issue("185")
@@ -697,7 +697,7 @@ class MockMvcMethodBodyBuilderSpec extends Specification implements WireMockStub
where:
methodBuilderName | methodBuilder | bodyString
"MockMvcSpockMethodBuilder" | { Contract dsl -> new MockMvcSpockMethodRequestProcessingBodyBuilder(dsl, properties) } | ".body('''''')"
"MockMvcJUnitMethodBuilder" | { Contract dsl -> new MockMvcJUnitMethodBodyBuilder(dsl, properties) } | ".body(\"\\\"\\\"\")"
"MockMvcJUnitMethodBuilder" | { Contract dsl -> new MockMvcJUnitMethodBodyBuilder(dsl, properties) } | '.body("")'
}
def "should generate test for String in response body with #methodBuilderName"() {
@@ -1162,7 +1162,7 @@ World.''')
methodBuilderName | methodBuilder | bodyString
"MockMvcSpockMethodBuilder" | { Contract dsl -> new MockMvcSpockMethodRequestProcessingBodyBuilder(dsl, properties) } | """'''hello,
World.'''"""
"MockMvcJUnitMethodBuilder" | { Contract dsl -> new MockMvcJUnitMethodBodyBuilder(dsl, properties) } | '\\"hello,\\nWorld.\\"'
"MockMvcJUnitMethodBuilder" | { Contract dsl -> new MockMvcJUnitMethodBodyBuilder(dsl, properties) } | '"hello,\\nWorld."'
}
@Issue('180')