Rest-assured: log().ifError() is not printing the response body in case of failure

Created on 3 Mar 2017  路  5Comments  路  Source: rest-assured/rest-assured

I've below code

    @Test(timeout=10000)
    public void test_xxxx_endpoint(){
                                             given().
                                                   log().all().
                                                           header("Accept", "application/json; version=1.0").
                                                           header("Authorization", "JWT "+ token ).
                                               when().
                                                           get(urlValue +"/transitions/").
                                               then().
                                                          statusCode(200).
                                                          //log().all().  this also has same issue
                                                          log().ifError().
                                                          time(lessThan(maxResponseTime), TimeUnit.MILLISECONDS);   
}

When the response is not 200, it doesn't print the response body instead I get exception throw.

Please review

Most helpful comment

You need to place logging before you start your assertions, i.e. before statusCode(..)

All 5 comments

That's why there's "log().ifFailure()". Error means "http error", i.e. a response whose status code is not 200.

@johanhaleby sorry I didn't get your last answer. As per documentl "log().ifFailure() should print the response body and it's not printing.

Isn't it a bug in this case ?

I only get below error

`java.lang.AssertionError: 1 expectation failed.
Expected status code <200> but was <404>.

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83)
at org.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:77)
at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrap.callConstructor(ConstructorSite.java:84)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:60)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:235)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:247)
at io.restassured.internal.ResponseSpecificationImpl$HamcrestAssertionClosure.validate(ResponseSpecificationImpl.groovy:471)
at io.restassured.internal.ResponseSpecificationImpl$HamcrestAssertionClosure$validate$1.call(Unknown Source)
at io.restassured.internal.ResponseSpecificationImpl.validateResponseIfRequired(ResponseSpecificationImpl.groovy:636)
at sun.reflect.GeneratedMethodAccessor66.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)
at io.restassured.internal.ResponseSpecificationImpl.statusCode(ResponseSpecificationImpl.groovy:122)
at io.restassured.specification.ResponseSpecification$statusCode$0.callCurrent(Unknown Source)
at io.restassured.internal.ResponseSpecificationImpl.statusCode(ResponseSpecificationImpl.groovy:130)
at io.restassured.internal.ValidatableResponseOptionsImpl.statusCode(ValidatableResponseOptionsImpl.java:117)`

You need to place logging before you start your assertions, i.e. before statusCode(..)

Thanks for clarification, verified this is not a bug.

Dont find log().ifFailure() at all.. Is it log().ifValidationFails()

Was this page helpful?
0 / 5 - 0 ratings