Forum Discussion
This is the raw response i'm getting:
HTTP/1.1 500 Invalid URI - /xyz/abc/123"
Content-Type: text/xml
X-Backside-Transport: FAIL FAIL
Connection: close
I want to check whether the raw response has "Invalid URI". If it has Invalid URI in response assertion should fail.
Thank you.
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.
- rvteja19909 years agoOccasional Contributor
Thanks for your response. I really appreciate your help Anton. Your piece of code works as expected.
I need a small change in this,
Is there any way that we can fail this assertion when it matches with expected HTTP Response (InvalidURI)?
I mean, since its matching with expected HTTPResponse, assertion is valid and its displaying as 'Green'. I would like to see 'Red' color whenever InvalidURI encounters in response. For the rest of all the other responses it should show as 'Green'
- nmrao9 years ago
Champion Level 1
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"
- rvteja19909 years agoOccasional Contributor
Thank you so much Rao. Your piece of code is working as expected. It seems both scripts are working as expected.I have a question, what is different from your piece of code and Anton code.
- AntonE9 years ago
Alumni
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.
- rvteja19909 years agoOccasional Contributor
Thanks again. Its working as expected. Yes i have already looked into invalid HTTP status code but here i would like to check for string irrespective of HTTP codes. Hope your code will work in all the scenarios. Thank you.