/******************************************************************************* * Copyright (c) 2006-2010 eBay Inc. All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 *******************************************************************************/ package org.ebayopensource.turmeric.runtime.tests.common.sif.header; import junit.framework.TestCase; import org.ebayopensource.turmeric.runtime.sif.service.Service; import org.ebayopensource.turmeric.runtime.sif.service.ServiceFactory; import org.ebayopensource.turmeric.runtime.tests.common.jetty.AbstractWithServerTest; import org.junit.Test; /** * Test for the configuration and overriding of the transport headers. * * @author mpoplacenel */ public class TransportHeadersTest extends AbstractWithServerTest { /** * Parameter for the WS invocation. */ private static final String ECHO_STRING = "Transport Headers Test String"; private static final String SOA_HEADER_NAME = "X-TURMERIC-Routing-Profile-Name"; private static final String ESB_HEADER_NAME = "X-TURMERIC-ESB-Routing-Profile-Name"; @Test @SuppressWarnings("unchecked") public void globalTransportHeaders() throws Exception { Service service = ServiceFactory.create("test1", "transportHeaders", serverUri.toURL()); String outMessage = (String) service.createDispatch("echoString").invoke(ECHO_STRING); // the assert on the transport header actually happens in the request handler TestCase.assertEquals(ECHO_STRING, outMessage); } @Test @SuppressWarnings("unchecked") public void clientTransportHeaders() throws Exception { Service service = ServiceFactory.create("test1", "transportHeaders_Client", serverUri.toURL()); String outMessage = (String) service.createDispatch("echoString").invoke(ECHO_STRING); // the assert on the transport header actually happens in the request handler TestCase.assertEquals(ECHO_STRING, outMessage); } @Test @SuppressWarnings("unchecked") public void preferredTransportHeaders() throws Exception { Service service = ServiceFactory.create("test1", "transportHeaders_Preferred", serverUri.toURL()); String outMessage = (String) service.createDispatch("echoString").invoke(ECHO_STRING); // assert should happen in the request handler TestCase.assertEquals(ECHO_STRING, outMessage); } /** * Verifies the session headers override the transport headers defined in the configuration. */ @Test @SuppressWarnings("unchecked") public void sessionTransportHeaders() throws Exception { Service service = ServiceFactory.create("test1", "transportHeaders_Preferred", serverUri.toURL()); service.setSessionTransportHeader(SOA_HEADER_NAME, "SOA_Session_Client_Profile"); service.setSessionTransportHeader(ESB_HEADER_NAME, "ESB_Session_Client_Profile"); // set the expected value for the handler to pick it up and assert against it service.getRequestContext().setProperty("testValueSOA", "SOA_Session_Client_Profile"); service.getRequestContext().setProperty("testValueESB", "ESB_Session_Client_Profile"); TestCase.assertEquals("Session header wasn't set as expected", "SOA_Session_Client_Profile", service.getSessionTransportHeader(SOA_HEADER_NAME)); TestCase.assertEquals("Session header wasn't set as expected", "ESB_Session_Client_Profile", service.getSessionTransportHeader(ESB_HEADER_NAME)); String outMessage = (String) service.createDispatch("echoString").invoke(ECHO_STRING); // the assert on the transport header actually happens in the request handler TestCase.assertEquals(ECHO_STRING, outMessage); } /** * Verifies the request headers override all transport headers - those defined in the configuration * <strong>AND</strong> those defined as session transport headers. */ @Test @SuppressWarnings("unchecked") public void requestTransportHeaders() throws Exception { Service service = ServiceFactory.create("test1", "transportHeaders_Preferred", serverUri.toURL()); service.setSessionTransportHeader(SOA_HEADER_NAME, "SOA_Session_Client_Profile"); service.setSessionTransportHeader(ESB_HEADER_NAME, "ESB_Session_Client_Profile"); service.getRequestContext().setTransportHeader(SOA_HEADER_NAME, "SOA_Request_Client_Profile"); service.getRequestContext().setTransportHeader(ESB_HEADER_NAME, "ESB_Request_Client_Profile"); // set the expected value for the handler to pick it up and assert against it service.getRequestContext().setProperty("testValueSOA", "SOA_Request_Client_Profile"); service.getRequestContext().setProperty("testValueESB", "ESB_Request_Client_Profile"); TestCase.assertEquals("Session header wasn't set as expected", "SOA_Session_Client_Profile", service.getSessionTransportHeader(SOA_HEADER_NAME)); TestCase.assertEquals("Request header wasn't set as expected", "SOA_Request_Client_Profile", service.getRequestContext().getTransportHeader(SOA_HEADER_NAME)); TestCase.assertEquals("Session header wasn't set as expected", "ESB_Session_Client_Profile", service.getSessionTransportHeader(ESB_HEADER_NAME)); TestCase.assertEquals("Request header wasn't set as expected", "ESB_Request_Client_Profile", service.getRequestContext().getTransportHeader(ESB_HEADER_NAME)); String outMessage = (String) service.createDispatch("echoString").invoke(ECHO_STRING); // the assert on the transport header actually happens in the request handler TestCase.assertEquals(ECHO_STRING, outMessage); } }