/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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.mediators.db; import junit.extensions.TestSetup; import junit.framework.Test; import junit.framework.TestSuite; import org.apache.synapse.MessageContext; import org.apache.synapse.config.SynapseConfiguration; import org.apache.synapse.config.xml.DBLookupMediatorFactory; import org.apache.synapse.core.axis2.Axis2SynapseEnvironment; import org.apache.synapse.mediators.AbstractMediatorTestCase; import org.apache.synapse.mediators.TestUtils; import java.sql.SQLException; import java.util.Properties; public class DBLookupMediatorTest extends AbstractMediatorTestCase { private static DBLookupMediator lookup; public void testLookupMediator1() throws Exception { MessageContext synCtx = TestUtils.getTestContext("<dummy><source>5</source></dummy>"); assertTrue(lookup.mediate(synCtx)); assertEquals(synCtx.getProperty("targetProp"), "svr1"); assertEquals(synCtx.getProperty("categoryProp"), "A"); } public void testLookupMediator2() throws Exception { MessageContext synCtx = TestUtils.getTestContext("<dummy><source>6</source></dummy>"); assertTrue(lookup.mediate(synCtx)); assertEquals(synCtx.getProperty("targetProp"), "svr3"); assertEquals(synCtx.getProperty("categoryProp"), "B"); } public static Test suite() { return new TestSetup(new TestSuite(DBLookupMediatorTest.class)) { @Override protected void setUp() throws Exception { String baseDir = System.getProperty("basedir"); if (baseDir == null) { baseDir = "."; } lookup = (DBLookupMediator) new DBLookupMediatorFactory().createMediator(createOMElement( "<dblookup xmlns=\"http://ws.apache.org/ns/synapse\">\n" + " <connection>\n" + " <pool>\n" + " <driver>org.apache.derby.jdbc.EmbeddedDriver</driver>\n" + " <url>jdbc:derby:" + baseDir + "/target/derbyDB;create=true</url>\n" + " <user>user</user>\n" + " <password>pass</password>\n" + " <property name=\"initialsize\" value=\"2\"/>\n" + " <property name=\"isolation\" value=\"Connection.TRANSACTION_SERIALIZABLE\"/>\n" + " </pool>\n" + " </connection>\n" + " <statement>\n" + " <sql>select target, category from destinations where source = ? and type = ?</sql>\n" + " <parameter expression=\"//source\" type=\"INTEGER\"/>\n" + " <parameter value=\"GOLD\" type=\"VARCHAR\"/>\n" + " <result name=\"targetProp\" column=\"target\"/>\n" + " <result name=\"categoryProp\" column=\"2\"/>\n" + " </statement>\n" + "</dblookup>" ), new Properties()); lookup.init(new Axis2SynapseEnvironment(new SynapseConfiguration())); java.sql.Statement s = lookup.getDataSource().getConnection().createStatement(); try { s.execute("drop table destinations"); } catch (SQLException ignore) {} s.execute("create table destinations(target varchar(10), source int, type varchar(10), category varchar(10))"); s.execute("insert into destinations values ('svr1', 5, 'GOLD', 'A')"); s.execute("insert into destinations values ('svr2', 5, 'SILVER', 'A')"); s.execute("insert into destinations values ('svr3', 6, 'GOLD', 'B')"); s.close(); } @Override protected void tearDown() throws Exception { } }; } }