Fixed the quotes in JaxRs entities
without this change we're adding an unnecessary quote around a JaxRs entity with this change we're ensuring that the quote is not there fixes #261
This commit is contained in:
@@ -506,7 +506,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
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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,44 @@ 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) }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -310,7 +310,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")
|
||||
@@ -698,7 +698,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"() {
|
||||
@@ -1163,7 +1163,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')
|
||||
|
||||
Reference in New Issue
Block a user