StandardHttpProducer extends HttpProducer<HttpURLConnection, HttpURLConnection> { private void fail(int responseCode, InputStreamWithEncoding data) throws ProduceException { if (log.isTraceEnabled()) { try { try ( OutputStream slf4j = new Slf4jLoggingOutputStream(log, Slf4jLoggingOutputStream.LogLevel.TRACE); InputStream in = new BufferedInputStream(data.inputStream); PrintStream out = data.encoding == null ? new PrintStream(slf4j) : new PrintStream(slf4j, false, data.encoding)) { out.println("Error Data from remote server :"); IOUtils.copy(in, out); } } catch (IOException e) { log.trace("No Error Data available"); } } throw new ProduceException("Failed to send payload, got " + responseCode); } StandardHttpProducer();   }
@Test @SuppressWarnings("deprecation") public void testProduce_WithUsernamePassword_BadCredentials() throws Exception { String threadName = Thread.currentThread().getName(); Thread.currentThread().setName(getName()); ConfigurableSecurityHandler csh = new ConfigurableSecurityHandler(); HashLoginServiceFactory hsl = new HashLoginServiceFactory("InterlokJetty", PROPERTIES.getProperty(HttpConsumerTest.JETTY_USER_REALM)); csh.setLoginService(hsl); SecurityConstraint securityConstraint = new SecurityConstraint(); securityConstraint.setMustAuthenticate(true); securityConstraint.setRoles("user"); csh.setSecurityConstraints(Arrays.asList(securityConstraint)); HttpConnection jc = HttpHelper.createConnection(); jc.setSecurityHandler(csh); MockMessageProducer mockProducer = new MockMessageProducer(); JettyMessageConsumer consumer = JettyHelper.createConsumer(HttpHelper.URL_TO_POST_TO); Channel channel = JettyHelper.createChannel(jc, consumer, mockProducer); HttpAuthenticator auth = getAuthenticator(getName(), getName()); StandardHttpProducer stdHttp = new StandardHttpProducer().withURL(HttpHelper.createURL(channel)); stdHttp.setIgnoreServerResponseCode(false); stdHttp.registerConnection(new NullConnection()); stdHttp.setAuthenticator(auth); try { start(channel); AdaptrisMessage msg = AdaptrisMessageFactory.getDefaultInstance().newMessage(TEXT); start(stdHttp); AdaptrisMessage reply = stdHttp.request(msg); fail(); } catch (ProduceException expected) { } finally { stop(stdHttp); HttpHelper.stopChannelAndRelease(channel); Thread.currentThread().setName(threadName); } }
@Test public void testRequest_GetMethod_WithErrorResponse() throws Exception { MockMessageProducer mock = new MockMessageProducer(); HttpConnection jc = HttpHelper.createConnection(); JettyMessageConsumer mc = createConsumer(HttpHelper.URL_TO_POST_TO); ServiceList services = new ServiceList(); services.add(new StandaloneProducer(new StandardResponseProducer(HttpStatus.UNAUTHORIZED_401))); Channel c = createChannel(jc, createWorkflow(mc, mock, services)); StandardHttpProducer stdHttp = new StandardHttpProducer().withURL(HttpHelper.createURL(c));; stdHttp.setMethodProvider(new ConfiguredRequestMethodProvider(RequestMethodProvider.RequestMethod.GET)); StandaloneRequestor producer = new StandaloneRequestor(stdHttp); AdaptrisMessage msg = new DefaultMessageFactory().newMessage(ALT_TEXT); try { start(c); start(producer); producer.doService(msg); fail(); } catch (ServiceException expected) { } finally { stop(c); stop(producer); } assertEquals(1, mock.messageCount()); }
@Test public void testRequest_Get_ExpectHeader() throws Exception { MockMessageProducer mock = new MockMessageProducer(); HttpConnection jc = HttpHelper.createConnection(); JettyMessageConsumer mc = createConsumer(HttpHelper.URL_TO_POST_TO); mc.setSendProcessingInterval(new TimeInterval(100L, TimeUnit.MILLISECONDS)); ServiceList services = new ServiceList(); services.add(new PayloadFromTemplateService().withTemplate(TEXT)); services.add(new WaitService(new TimeInterval(2L, TimeUnit.SECONDS))); services.add(new StandaloneProducer(new StandardResponseProducer(HttpStatus.OK_200))); Channel c = createChannel(jc, createWorkflow(mc, mock, services)); StandardWorkflow workflow = (StandardWorkflow) c.getWorkflowList().get(0); workflow.getServiceCollection().add(new StandaloneProducer(new StandardResponseProducer(HttpStatus.OK_200))); StandardHttpProducer stdHttp = new StandardHttpProducer().withURL(HttpHelper.createURL(c));; stdHttp.setMethodProvider(new ConfiguredRequestMethodProvider(RequestMethodProvider.RequestMethod.GET)); stdHttp.setRequestHeaderProvider( new ConfiguredRequestHeaders().withHeaders(new KeyValuePair(HttpConstants.EXPECT, "102-Processing"))); StandaloneRequestor producer = new StandaloneRequestor(stdHttp); AdaptrisMessage msg = new DefaultMessageFactory().newMessage(ALT_TEXT); try { start(c); start(producer); producer.doService(msg); fail(); } catch (ProduceException | ServiceException e) { assertTrue(e.getMessage().contains("Failed to send payload, got 102")); } finally { stop(c); stop(producer); } }