@Test public void callStopCarteRestService() throws Exception { WebResource status = mock( WebResource.class ); doReturn( "<serverstatus>" ).when( status ).get( String.class ); WebResource stop = mock( WebResource.class ); doReturn( "Shutting Down" ).when( stop ).get( String.class ); Client client = mock( Client.class ); doCallRealMethod().when( client ).addFilter( any( HTTPBasicAuthFilter.class ) ); doCallRealMethod().when( client ).getHeadHandler(); doReturn( status ).when( client ).resource( "http://localhost:8080/kettle/status/?xml=Y" ); doReturn( stop ).when( client ).resource( "http://localhost:8080/kettle/stopCarte" ); mockStatic( Client.class ); when( Client.create( any( ClientConfig.class ) ) ).thenReturn( client ); Carte.callStopCarteRestService( "localhost", "8080", "admin", "Encrypted 2be98afc86aa7f2e4bb18bd63c99dbdde" ); // the expected value is: "Basic <base64 encoded username:password>" assertEquals( "Basic " + new String( Base64.getEncoder().encode( "admin:password".getBytes( "utf-8" ) ) ), getInternalState( client.getHeadHandler(), "authentication" ) ); } }
@Override public ClientResponse handle(final ClientRequest request) throws ClientHandlerException { Map<String, Object> effectiveProperties = new HashMap<String, Object>(properties); effectiveProperties.put(Client.class.getName(), this); effectiveProperties.putAll(request.getProperties()); request.setProperties(effectiveProperties); final ClientResponse response = getHeadHandler().handle(request); response.getProperties().put(Client.class.getName(), this); return response; }
@Override public ClientResponse handle(final ClientRequest request) throws ClientHandlerException { Map<String, Object> effectiveProperties = new HashMap<String, Object>(properties); effectiveProperties.put(Client.class.getName(), this); effectiveProperties.putAll(request.getProperties()); request.setProperties(effectiveProperties); final ClientResponse response = getHeadHandler().handle(request); response.getProperties().put(Client.class.getName(), this); return response; }
public S3EncryptionClient(S3Config s3Config, ClientHandler clientHandler, EncryptionConfig encryptionConfig) { super(s3Config, clientHandler); this.encryptionConfig = encryptionConfig; // create an encode chain based on parameters CodecChain encodeChain = encryptionConfig.isCompressionEnabled() ? new CodecChain(encryptionConfig.getCompressionSpec(), encryptionConfig.getEncryptionSpec()) : new CodecChain(encryptionConfig.getEncryptionSpec()); encodeChain.setProperties(encryptionConfig.getCodecProperties()); // insert codec filter into chain before the authorization filter // as usual, Jersey makes this quite hard // first, make a list of the filters List<ClientFilter> filters = new ArrayList<ClientFilter>(); ClientHandler handler = client.getHeadHandler(); while (handler instanceof ClientFilter) { ClientFilter filter = (ClientFilter) handler; if (filter instanceof AuthorizationFilter) { // insert codec filter before checksum filter filters.add(new CodecFilter(encodeChain).withCodecProperties(encryptionConfig.getCodecProperties())); } filters.add(filter); handler = filter.getNext(); } // then re-create the filter list (must reverse the list because filters are inserted back to front) Collections.reverse(filters); client.removeAllFilters(); for (ClientFilter filter : filters) { client.addFilter(filter); } }