Null Pointer Exception on Header contract validation

Issue #192 resolved
Former user created an issue

Creating a Null Pointer exception when swagger-request-validator trying to validate the following scenario

My Contract has: "Content-Type", "application/json;charset=UTF-8" in my response header My API Response gives : "Content-Type", "application/json;charset=UTF-8" in my response header

But i see in this mostSpecificMatch get has value with space between the header values like between application/json and charset have a space which make it not able to find the code eg: "Content-Type", "application/json; charset=UTF-8"

java.lang.NullPointerException
                at com.atlassian.oai.validator.interaction.response.ResponseValidator.validateResponseBody(ResponseValidator.java:124)
                at com.atlassian.oai.validator.interaction.response.ResponseValidator.validateResponse(ResponseValidator.java:86)
                at com.atlassian.oai.validator.OpenApiInteractionValidator.lambda$validate$0(OpenApiInteractionValidator.java:182)
                at java.util.function.Function.lambda$andThen$1(Function.java:88)
                at com.atlassian.oai.validator.OpenApiInteractionValidator.validateOnApiOperation(OpenApiInteractionValidator.java:262)
                at com.atlassian.oai.validator.OpenApiInteractionValidator.validate(OpenApiInteractionValidator.java:177)
                at com.atlassian.oai.validator.restassured.OpenApiValidationFilter.filter(OpenApiValidationFilter.java:58)
                at io.restassured.filter.Filter$filter.call(Unknown Source)
                at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:143)
                at io.restassured.internal.filter.FilterContextImpl.next(FilterContextImpl.groovy:72)
                at io.restassured.filter.FilterContext$next.call(Unknown Source)
                at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:135)
                at io.restassured.internal.RequestSpecificationImpl.applyPathParamsAndSendRequest(RequestSpecificationImpl.groovy:1749)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:498)
                at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:104)
                at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:326)
                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1217)
                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1041)
                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:821)
                at io.restassured.internal.RequestSpecificationImpl.invokeMethod(RequestSpecificationImpl.groovy)
                at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:47)
                at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:57)
                at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51)
                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:156)
                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:184)
                at io.restassured.internal.RequestSpecificationImpl.applyPathParamsAndSendRequest(RequestSpecificationImpl.groovy:1755)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:498)
                at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:104)
                at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:326)
                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1217)
                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1041)
                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:821)
                at io.restassured.internal.RequestSpecificationImpl.invokeMethod(RequestSpecificationImpl.groovy)
                at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:47)
                at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:57)
                at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51)
                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:156)
                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:184)
                at io.restassured.internal.RequestSpecificationImpl.get(RequestSpecificationImpl.groovy:171)
                at io.restassured.internal.RequestSpecificationImpl.get(RequestSpecificationImpl.groovy)

                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:498)
                at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
                at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
                at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
                at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
                at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
                at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
                at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
                at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
                at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
                at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
                at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
                at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
                at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
                at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
                at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
                at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
                at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538)
                at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
                at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
                at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)

Comments (5)

  1. Brian Fox

    This is an issue for me as well. Is this something someone can look at? I think the other issue not called out is this library is expecting UTF-8 to be utf-8

  2. James Navin

    I have added tests to the latest version (v2.10.2) and have been unable to replicate the problem (matching appears to work fine now with case and whitespace differences). Please re-open the issue if the problem is still present in the latest version.

  3. Log in to comment