/* * Copyright WSO2 Inc. * * 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 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.synapse.rest; import org.apache.synapse.MessageContext; import org.apache.synapse.config.SynapseConfiguration; import org.apache.synapse.core.axis2.Axis2MessageContext; import org.apache.synapse.rest.version.URLBasedVersionStrategy; import org.apache.synapse.transport.nhttp.NhttpConstants; public class BasicAPIMediationTest extends RESTMediationTestCase { private static final String TEST_API = "TestAPI"; public void testRestURLPostfix1() throws Exception { API api = new API(TEST_API, "/test"); SynapseConfiguration synapseConfig = new SynapseConfiguration(); synapseConfig.addAPI(TEST_API, api); RESTRequestHandler handler = new RESTRequestHandler(); MessageContext synCtx = getMessageContext(synapseConfig, false, "/test", "GET"); handler.process(synCtx); checkRestURLPostfix(synCtx, ""); synCtx = getMessageContext(synapseConfig, false, "/test/me/now", "GET"); handler.process(synCtx); checkRestURLPostfix(synCtx, "/me/now"); synCtx = getMessageContext(synapseConfig, false, "/test?a=5", "GET"); handler.process(synCtx); checkRestURLPostfix(synCtx, "?a=5"); api.setVersionStrategy(new URLBasedVersionStrategy(api, "1.0.0", null)); synCtx = getMessageContext(synapseConfig, false, "/test/1.0.0?a=5", "GET"); handler.process(synCtx); checkRestURLPostfix(synCtx, "?a=5"); synCtx = getMessageContext(synapseConfig, false, "/test/1.0.0/foo?a=5", "GET"); handler.process(synCtx); checkRestURLPostfix(synCtx, "/foo?a=5"); } public void testRestURLPostfix2() throws Exception { API api = new API(TEST_API, "/"); SynapseConfiguration synapseConfig = new SynapseConfiguration(); synapseConfig.addAPI(TEST_API, api); RESTRequestHandler handler = new RESTRequestHandler(); MessageContext synCtx = getMessageContext(synapseConfig, false, "/test", "GET"); handler.process(synCtx); checkRestURLPostfix(synCtx, "/test"); synCtx = getMessageContext(synapseConfig, false, "/test/me/now", "GET"); handler.process(synCtx); checkRestURLPostfix(synCtx, "/test/me/now"); synCtx = getMessageContext(synapseConfig, false, "/test?a=5", "GET"); handler.process(synCtx); checkRestURLPostfix(synCtx, "/test?a=5"); } public void testRestURLPostfix3() throws Exception { API api = new API(TEST_API, "/services/Foo"); SynapseConfiguration synapseConfig = new SynapseConfiguration(); synapseConfig.addAPI(TEST_API, api); RESTRequestHandler handler = new RESTRequestHandler(); MessageContext synCtx = getMessageContext(synapseConfig, false, "/services/Foo/test", "GET"); // When the service path is in the URL, NHTTP transport removes that portion // from the postfix ((Axis2MessageContext) synCtx).getAxis2MessageContext(). setProperty(NhttpConstants.REST_URL_POSTFIX, "/test"); handler.process(synCtx); checkRestURLPostfix(synCtx, "/test"); } private void checkRestURLPostfix(MessageContext synCtx, String restURLPostfix) { String actual = (String) ((Axis2MessageContext) synCtx).getAxis2MessageContext(). getProperty(NhttpConstants.REST_URL_POSTFIX); assertEquals(restURLPostfix, actual); } }