title: Mocking Unmarshaller
body: <p>I am writing a <code>JUnit</code> for a method which unmarshalling an <code>Object</code>. It is throwing <code>IllegalArgumentException</code> while unmarshalling the Object.I cannot post the entire method.</p>
  
  <p>Method under test</p>
  
  <pre><code>public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
      MultivaluedMap&lt;String, String&gt; headers = responseContext.getHeaders();
      String contentType = headers.getFirst( CONTENT_TYPE_HEADER );
  
      if( contentType != null &amp;&amp; contentType.startsWith( TEXT_XML ) ) {
          if( 200 == responseContext.getStatus() ) {
              if( requestContext.getUri().toString().contains( "Policy/Retrieve" ) ) {
                  try {
                      GetPolicyResponse p = (GetPolicyResponse)EISClientJAXBContextFactory.getUnmarshaller( GetPolicyResponse.class ).unmarshal( responseContext.getEntityStream() );
  
  }
  </code></pre>
  
  <p>While debugging I found that <code>is</code> is null but I am passing <code>inputStream</code></p>
  
  <pre><code>public final Object unmarshal( java.io.InputStream is )
      throws JAXBException {
  
      if( is == null ) {
          throw new IllegalArgumentException(
              Messages.format( Messages.MUST_NOT_BE_NULL, "is" ) );
      }
  
      InputSource isrc = new InputSource( is );
      return unmarshal( isrc );
  }
  </code></pre>
  
  <p>JUnit</p>
  
  <pre><code>@Test
  public void testPersonalAutoDriver() throws Exception {
   ClientRequestContext requestContext = mock(ClientRequestContext.class);
      ClientResponseContext responseContext = mock(ClientResponseContext.class);
      MultivaluedMap&lt;String, String&gt; headers = mock(MultivaluedMap.class);
      URI uri = new URI("Policy/Retrieve");
      Unmarshaller unmarshaller = mock(Unmarshaller.class);
  
      when( responseContext.getHeaders() ).thenReturn( headers );
      when( headers.getFirst(Mockito.eq( "Content-Type" )) ).thenReturn( "text/xml" );
      when( responseContext.getStatus() ).thenReturn( 200 );
      when( requestContext.getUri()).thenReturn(uri);
  
      JAXBContext context = JAXBContext.newInstance(GetPolicyResponse.class);
      Marshaller marshaller = context.createMarshaller();
  
      Policy policy = new Policy();
      policy.setPolicyType( PolicyTypeEnum.PERSONAL_AUTO );
  
      GetPolicyResponse policyResponse = new GetPolicyResponse();
      policyResponse.setPolicy(policy);
  
      StringWriter writer = new StringWriter();
      marshaller.marshal( policyResponse, writer );
      System.out.println( "**** Object Marshalled Successfully ****" );
  
      InputStream inputStream = new ByteArrayInputStream(writer.toString().getBytes());
      when(unmarshaller.unmarshal(inputStream)).thenReturn(policyResponse);
  
  //  EISClientJAXBContextFactory.getUnmarshaller( GetPolicyResponse.class );
  //  Unmarshaller unmarshaller = context.createUnmarshaller();
  //  GetPolicyResponse policyResponse2 = ( GetPolicyResponse ) unmarshaller.unmarshal( inputStream );
  
  //  assertNotNull(policyResponse2);
  
      filter.filter( requestContext, responseContext );
      System.out.println( "**** Object Unmarshalled Successfully ****" );
  }
  </code></pre>