Assertion for raw response
I have been trying to create an assertion for raw response. I got a requirement in which whenever i see a response with Invalid URI in headers, it should fail. This is how it is displayed in response "HTTP/1.1 500 Invalid URI - /xyz/abc/123".
In the above header whenever i see "Invalid URI" assertion should fail.
When i checked forums i found a script assertion, with which i have modified it like this. However its failing since the URI part is not mentioned in expectedHTTPResponse. I would like to make it generic, such a way that whatever may be the URI, whenever i encounter Invalid URI it should fail the assertion.
Below is the piece of code:
def expectedHTTPResponse = ['HTTP/1.1 500 Invalid URI']
def headers = messageExchange.response.responseHeaders
def actualHTTPResponse = headers['#status#']
assert expectedHTTPResponse == actualHTTPResponse, "Invalid URI"
Can anyone help me with this? Any other possible solutions to achieve this?
You can use startsWith method to check that a string has a required beginning:
def expectedHTTPResponse = 'HTTP/1.1 500 Invalid URI'
def headers = messageExchange.response.responseHeaders
def actualHTTPResponse = headers['#status#']
assert actualHTTPResponse.size() == 1 && actualHTTPResponse[0].startsWith(expectedHTTPResponse), "Invalid URI"Note that I removed square brackets in expectedHTTPResponse as we compare just one element now.
For Groovy assertion to fail its asserted value should be false, so I guess you can just invert the condition:
assert !(actualHTTPResponse.size() == 1 && actualHTTPResponse[0].startsWith(expectedHTTPRespo
nse)), "Invalid URI" Also, you may want to look at Invalid HTTP Status Code assertion instead. It won't check the string, but if code 500 is a sure sign that the test failed, it will work. You should enter one or more wrong HTTP codes there.
Not sure why it is closed though your issue is not solved.
Here is the change needed:
def unExpectedHTTPResponse = 'HTTP/1.1 500 Invalid URI' def headers = messageExchange.response.responseHeaders def actualHTTPResponse = headers['#status#'] assert !(actualHTTPResponse[0].contains(unExpectedHTTPResponse)), "Found Invalid URI in the response"