/*
* 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.DBReportMediatorFactory;
import org.apache.synapse.core.axis2.Axis2SynapseEnvironment;
import org.apache.synapse.mediators.AbstractMediatorTestCase;
import org.apache.synapse.mediators.TestUtils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class DBReportMediatorTest extends AbstractMediatorTestCase {
private static DBReportMediator report;
public void testLookupMediator1() throws Exception {
MessageContext synCtx = TestUtils.getTestContext(
"<dummy><from>me</from><count>5</count><to>you</to><category>GOLD</category></dummy>");
assertTrue(report.mediate(synCtx));
Connection con = report.getDataSource().getConnection();
ResultSet rs = con.createStatement().executeQuery(
"select fromepr, cnt, toepr, category from audit");
if (rs.next()) {
assertEquals("me", rs.getString("fromepr"));
assertEquals(5, rs.getInt("cnt"));
assertEquals("you", rs.getString("toepr"));
assertEquals("GOLD", rs.getString("category"));
} else {
fail("DB report failed");
}
}
public static Test suite() {
return new TestSetup(new TestSuite(DBReportMediatorTest.class)) {
@Override
protected void setUp() throws Exception {
String baseDir = System.getProperty("basedir");
if (baseDir == null) {
baseDir = ".";
}
report = (DBReportMediator)
new DBReportMediatorFactory().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>insert into audit values(?, ?, ?, ?)</sql>\n" +
" <parameter expression=\"//from\" type=\"VARCHAR\"/>\n" +
" <parameter expression=\"//count\" type=\"INTEGER\"/>\n" +
" <parameter expression=\"//to\" type=\"VARCHAR\"/>\n" +
" <parameter value=\"GOLD\" type=\"VARCHAR\"/>\n" +
" </statement>\n" +
"</dblookup>"
), new Properties());
report.init(new Axis2SynapseEnvironment(new SynapseConfiguration()));
java.sql.Statement s = report.getDataSource().getConnection().createStatement();
try {
s.execute("drop table audit");
} catch (SQLException ignore) {}
s.execute("create table audit(fromepr varchar(10), cnt int, toepr varchar(10), category varchar(10))");
s.close();
}
@Override
protected void tearDown() throws Exception {
}
};
}
}