Search in sources :

Example 16 with AdaptrisMessage

use of com.adaptris.core.AdaptrisMessage in project interlok by adaptris.

the class HttpConsumerTest method testConsumeWorkflow_PreserveObjectParams_NoPrefix.

@Test
public void testConsumeWorkflow_PreserveObjectParams_NoPrefix() throws Exception {
    HttpConnection connection = createConnection(null);
    MockMessageProducer mockProducer = new MockMessageProducer();
    JettyMessageConsumer consumer = JettyHelper.createConsumer("/*");
    consumer.setHeaderHandler(new ObjectMetadataHeaderHandler("Http_Header_"));
    consumer.setParameterHandler(new ObjectMetadataParameterHandler());
    Channel channel = JettyHelper.createChannel(connection, consumer, mockProducer);
    try {
        channel.requestStart();
        AdaptrisMessage msg = AdaptrisMessageFactory.getDefaultInstance().newMessage(XML_PAYLOAD);
        msg.addMetadata(CONTENT_TYPE_METADATA_KEY, "text/xml");
        String dest = createProduceDestinationUrl(connection.getPort());
        dest += "?queryParam1=1&queryParam2=2&queryParam3=3";
        httpProducer.setUrl(dest);
        start(httpProducer);
        AdaptrisMessage reply = httpProducer.request(msg);
        assertEquals("Reply Payloads", XML_PAYLOAD, reply.getContent());
        AdaptrisMessage receivedMsg = doAssertions(mockProducer);
        System.out.println("XXX - " + receivedMsg);
        assertTrue(receivedMsg.containsKey(JettyConstants.JETTY_QUERY_STRING));
        assertEquals("queryParam1=1&queryParam2=2&queryParam3=3", receivedMsg.getMetadataValue(JettyConstants.JETTY_QUERY_STRING));
        assertEquals("1", receivedMsg.getObjectHeaders().get("queryParam1"));
        assertEquals("2", receivedMsg.getObjectHeaders().get("queryParam2"));
        assertEquals("3", receivedMsg.getObjectHeaders().get("queryParam3"));
    } finally {
        stop(httpProducer);
        channel.requestClose();
        PortManager.release(connection.getPort());
    }
}
Also used : MockMessageProducer(com.adaptris.core.stubs.MockMessageProducer) StaticMockMessageProducer(com.adaptris.core.stubs.StaticMockMessageProducer) AdaptrisMessage(com.adaptris.core.AdaptrisMessage) Channel(com.adaptris.core.Channel) Test(org.junit.Test)

Example 17 with AdaptrisMessage

use of com.adaptris.core.AdaptrisMessage in project interlok by adaptris.

the class HttpConsumerTest method doAssertions.

protected AdaptrisMessage doAssertions(MockMessageProducer mockProducer) throws Exception {
    waitForMessages(mockProducer, 1);
    assertEquals("Only 1 message consumed", 1, mockProducer.getMessages().size());
    AdaptrisMessage msg = mockProducer.getMessages().get(0);
    assertEquals("Consumed Payload", XML_PAYLOAD, msg.getContent());
    assertTrue(msg.containsKey(JettyConstants.JETTY_URI));
    assertEquals(URL_TO_POST_TO, msg.getMetadataValue(JettyConstants.JETTY_URI));
    assertTrue(msg.containsKey(JettyConstants.JETTY_URL));
    Map objMetadata = msg.getObjectHeaders();
    assertNotNull(objMetadata.get(JettyConstants.JETTY_WRAPPER));
    return msg;
}
Also used : AdaptrisMessage(com.adaptris.core.AdaptrisMessage) Map(java.util.Map)

Example 18 with AdaptrisMessage

use of com.adaptris.core.AdaptrisMessage in project interlok by adaptris.

the class HttpConsumerTest method testConsume_WithACL_WithNoRoles.

@Test
public void testConsume_WithACL_WithNoRoles() throws Exception {
    String threadName = Thread.currentThread().getName();
    Thread.currentThread().setName(getName());
    ConfigurableSecurityHandler csh = new ConfigurableSecurityHandler();
    HashLoginServiceFactory hsl = new HashLoginServiceFactory("InterlokJetty", PROPERTIES.getProperty(JETTY_USER_REALM));
    csh.setLoginService(hsl);
    SecurityConstraint securityConstraint = new SecurityConstraint();
    securityConstraint.setMustAuthenticate(true);
    securityConstraint.setPaths(Arrays.asList("/"));
    csh.setSecurityConstraints(Arrays.asList(securityConstraint));
    HttpConnection connection = createConnection(csh);
    MockMessageProducer mockProducer = new MockMessageProducer();
    JettyMessageConsumer consumer = JettyHelper.createConsumer(URL_TO_POST_TO);
    Channel adapter = JettyHelper.createChannel(connection, consumer, mockProducer);
    try {
        adapter.requestStart();
        AdaptrisMessage msg = AdaptrisMessageFactory.getDefaultInstance().newMessage(XML_PAYLOAD);
        msg.addMetadata("content.type", "text/xml");
        httpProducer.setUserName("user");
        httpProducer.setPassword("password");
        httpProducer.setUrl(createProduceDestinationUrl(connection.getPort()));
        start(httpProducer);
        AdaptrisMessage reply = httpProducer.request(msg);
        assertEquals("0 message consumed", 0, mockProducer.getMessages().size());
        assertTrue("Reply Response Code present", reply.containsKey(CoreConstants.HTTP_PRODUCER_RESPONSE_CODE));
        int rc = Integer.valueOf(reply.getMetadataValue(CoreConstants.HTTP_PRODUCER_RESPONSE_CODE)).intValue();
        assertTrue("Reply Response Value 401 || 403", rc == HttpURLConnection.HTTP_UNAUTHORIZED || rc == HttpURLConnection.HTTP_FORBIDDEN);
    } catch (Exception e) {
        e.printStackTrace();
        // This is expected actually,.
        if (e.getCause() instanceof IOException) {
            String s = ((IOException) e.getCause()).getMessage();
            String httpString = "Server returned HTTP response code: ";
            if (s.startsWith(httpString)) {
                int rc = Integer.parseInt(s.substring(httpString.length(), httpString.length() + 3));
                assertTrue(rc == HttpURLConnection.HTTP_UNAUTHORIZED || rc == HttpURLConnection.HTTP_FORBIDDEN);
            } else {
                throw e;
            }
        } else {
            throw e;
        }
    } finally {
        stop(httpProducer);
        adapter.requestClose();
        Thread.currentThread().setName(threadName);
        PortManager.release(connection.getPort());
        assertEquals(0, AdapterResourceAuthenticator.getInstance().currentAuthenticators().size());
    }
}
Also used : MockMessageProducer(com.adaptris.core.stubs.MockMessageProducer) StaticMockMessageProducer(com.adaptris.core.stubs.StaticMockMessageProducer) AdaptrisMessage(com.adaptris.core.AdaptrisMessage) Channel(com.adaptris.core.Channel) IOException(java.io.IOException) Constraint(org.eclipse.jetty.util.security.Constraint) ProduceException(com.adaptris.core.ProduceException) IOException(java.io.IOException) FileNotFoundException(java.io.FileNotFoundException) CoreException(com.adaptris.core.CoreException) Test(org.junit.Test)

Example 19 with AdaptrisMessage

use of com.adaptris.core.AdaptrisMessage in project interlok by adaptris.

the class HttpConsumerTest method testConsume_WithACL.

@Test
public void testConsume_WithACL() throws Exception {
    String threadName = Thread.currentThread().getName();
    Thread.currentThread().setName(getName());
    ConfigurableSecurityHandler csh = new ConfigurableSecurityHandler();
    HashLoginServiceFactory hsl = new HashLoginServiceFactory("InterlokJetty", PROPERTIES.getProperty(JETTY_USER_REALM));
    csh.setLoginService(hsl);
    csh.setAuthenticator(new BasicAuthenticatorFactory());
    SecurityConstraint securityConstraint = new SecurityConstraint();
    securityConstraint.setMustAuthenticate(true);
    securityConstraint.setRoles("user");
    securityConstraint.setConstraintName(Constraint.__BASIC_AUTH);
    csh.setSecurityConstraints(Arrays.asList(securityConstraint));
    HttpConnection connection = createConnection(csh);
    MockMessageProducer mockProducer = new MockMessageProducer();
    JettyMessageConsumer consumer = JettyHelper.createConsumer(URL_TO_POST_TO);
    Channel adapter = JettyHelper.createChannel(connection, consumer, mockProducer);
    try {
        adapter.requestStart();
        AdaptrisMessage msg = AdaptrisMessageFactory.getDefaultInstance().newMessage(XML_PAYLOAD);
        msg.addMetadata("content.type", "text/xml");
        httpProducer.setUserName("user");
        httpProducer.setPassword("password");
        httpProducer.setUrl(createProduceDestinationUrl(connection.getPort()));
        start(httpProducer);
        AdaptrisMessage reply = httpProducer.request(msg);
        assertEquals("Reply Payloads", XML_PAYLOAD, reply.getContent());
        AdaptrisMessage consumedMessage = doAssertions(mockProducer);
        assertTrue(consumedMessage.headersContainsKey(JettyConstants.JETTY_USER_ROLES));
        List<String> roles = Arrays.asList(consumedMessage.getMetadataValue(JettyConstants.JETTY_USER_ROLES).split(","));
        assertTrue(roles.contains("user"));
        assertTrue(roles.contains("anotherRole"));
    } finally {
        stop(httpProducer);
        adapter.requestClose();
        Thread.currentThread().setName(threadName);
        PortManager.release(connection.getPort());
        assertEquals(0, AdapterResourceAuthenticator.getInstance().currentAuthenticators().size());
    }
}
Also used : MockMessageProducer(com.adaptris.core.stubs.MockMessageProducer) StaticMockMessageProducer(com.adaptris.core.stubs.StaticMockMessageProducer) AdaptrisMessage(com.adaptris.core.AdaptrisMessage) Channel(com.adaptris.core.Channel) Test(org.junit.Test)

Example 20 with AdaptrisMessage

use of com.adaptris.core.AdaptrisMessage in project interlok by adaptris.

the class HttpConsumerTest method testPoolingWorkflow_TimeoutAction_TimeoutExceeded.

@Test
public void testPoolingWorkflow_TimeoutAction_TimeoutExceeded() throws Exception {
    HttpConnection connection = createConnection(null);
    MockMessageProducer mockProducer = new StaticMockMessageProducer();
    mockProducer.getMessages().clear();
    JettyMessageConsumer consumer = JettyHelper.createConsumer(URL_TO_POST_TO);
    consumer.setAdditionalDebug(false);
    consumer.setTimeoutAction(new TimeoutAction(new TimeInterval(100L, TimeUnit.MILLISECONDS)));
    PoolingWorkflow workflow = new PoolingWorkflow();
    workflow.setShutdownWaitTime(new TimeInterval(100L, TimeUnit.MILLISECONDS));
    StandardResponseProducer responder = new StandardResponseProducer(HttpStatus.OK_200);
    workflow.setConsumer(consumer);
    workflow.getServiceCollection().add(new WaitService(new TimeInterval(5L, TimeUnit.SECONDS)));
    workflow.getServiceCollection().add(new StandaloneProducer(mockProducer));
    workflow.getServiceCollection().add(new StandaloneProducer(responder));
    workflow.addInterceptor(new JettyPoolingWorkflowInterceptor());
    Channel channel = JettyHelper.createChannel(connection, workflow);
    try {
        channel.requestStart();
        AdaptrisMessage msg = AdaptrisMessageFactory.getDefaultInstance().newMessage(XML_PAYLOAD);
        msg.addMetadata(CONTENT_TYPE_METADATA_KEY, "text/xml");
        httpProducer.setUrl(createProduceDestinationUrl(connection.getPort()));
        start(httpProducer);
        AdaptrisMessage reply = httpProducer.request(msg);
        assertEquals(Integer.valueOf(HttpStatus.ACCEPTED_202.getStatusCode()), Integer.valueOf(reply.getMetadataValue(CoreConstants.HTTP_PRODUCER_RESPONSE_CODE)));
    } finally {
        stop(httpProducer);
        channel.requestClose();
    }
}
Also used : WaitService(com.adaptris.core.services.WaitService) MockMessageProducer(com.adaptris.core.stubs.MockMessageProducer) StaticMockMessageProducer(com.adaptris.core.stubs.StaticMockMessageProducer) TimeInterval(com.adaptris.util.TimeInterval) AdaptrisMessage(com.adaptris.core.AdaptrisMessage) Channel(com.adaptris.core.Channel) PoolingWorkflow(com.adaptris.core.PoolingWorkflow) StaticMockMessageProducer(com.adaptris.core.stubs.StaticMockMessageProducer) StandaloneProducer(com.adaptris.core.StandaloneProducer) Test(org.junit.Test)

Aggregations

AdaptrisMessage (com.adaptris.core.AdaptrisMessage)1495 Test (org.junit.Test)1362 ServiceException (com.adaptris.core.ServiceException)171 DefaultMessageFactory (com.adaptris.core.DefaultMessageFactory)158 MockMessageProducer (com.adaptris.core.stubs.MockMessageProducer)156 StandaloneProducer (com.adaptris.core.StandaloneProducer)125 Channel (com.adaptris.core.Channel)122 MetadataElement (com.adaptris.core.MetadataElement)94 File (java.io.File)89 TimeInterval (com.adaptris.util.TimeInterval)77 CoreException (com.adaptris.core.CoreException)67 Session (javax.jms.Session)62 StandardWorkflow (com.adaptris.core.StandardWorkflow)57 GuidGenerator (com.adaptris.util.GuidGenerator)56 JettyHelper.createChannel (com.adaptris.core.http.jetty.JettyHelper.createChannel)50 StandaloneRequestor (com.adaptris.core.StandaloneRequestor)49 Message (javax.jms.Message)47 XPath (com.adaptris.util.text.xml.XPath)45 ServiceList (com.adaptris.core.ServiceList)43 Document (org.w3c.dom.Document)40