package org.buddycloud.channelserver.db.jdbc;
import static org.junit.Assert.assertEquals;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Map.Entry;
import org.buddycloud.channelserver.Configuration;
import org.buddycloud.channelserver.db.jdbc.dialect.Sql92NodeStoreDialect;
import org.buddycloud.channelserver.packetHandler.iq.IQTestHandler;
import org.buddycloud.channelserver.pubsub.model.NodeItem;
import org.buddycloud.channelserver.pubsub.model.impl.GlobalItemIDImpl;
import org.junit.After;
import org.junit.Before;
import org.xmpp.packet.JID;
@SuppressWarnings("serial")
public abstract class JDBCNodeStoreAbstract {
protected static final String TEST_SERVER1_NODE1_ID = "users/node1@server1/posts";
protected static final String TEST_SERVER1_NODE2_ID = "users/node2@server1/posts";
protected static final String TEST_SERVER1_NODE3_ID = "users/node3@server1/posts";
protected static final String TEST_SERVER2_NODE1_ID = "users/node1@server2/posts";
protected static final String TEST_SERVER1_NODE1_ITEM1_ID = "a1";
protected static final String TEST_SERVER1_NODE1_ITEM1_CONTENT = "Test 1";
protected static final String TEST_SERVER1_NODE1_ITEM2_ID = "a2";
protected static final String TEST_SERVER1_NODE1_ITEM2_CONTENT = "Test 2";
protected static final String TEST_SERVER1_NODE1_ITEM3_ID = "a3";
protected static final String TEST_SERVER1_NODE1_ITEM3_CONTENT = "Test 3";
protected static final String TEST_SERVER1_NODE1_ITEM4_ID = "a4";
protected static final String TEST_SERVER1_NODE1_ITEM4_GLOBAL_ID = new GlobalItemIDImpl(
new JID("server1"), TEST_SERVER1_NODE1_ID, TEST_SERVER1_NODE1_ITEM4_ID).toString();
protected static final String TEST_SERVER1_NODE1_ITEM4_CONTENT = "Test 4";
protected static final String TEST_SERVER1_NODE1_ITEM5_ID = "a5";
protected static final String TEST_SERVER1_NODE1_ITEM5_CONTENT = "Test 5";
protected static final String TEST_SERVER1_HOSTNAME = "server1";
protected static final String TEST_SERVER2_HOSTNAME = "server2";
protected static final String UNKNOWN_NODE = "/user/unknown@example.com/posts";
protected static final HashMap<String, String> TEST_SERVER1_NODE1_CONF = new HashMap<String, String>() {
{
put("config1", "Value of config1");
put("config2", "Value of config2");
}
};
protected static final String TEST_SERVER1_NODE1_CONFIG1_KEY = "config1";
protected static final String TEST_SERVER1_NODE1_CONFIG1_VALUE = "Value of config1";
protected static final JID TEST_SERVER1_CHANNELS_JID = new JID("channels.server1");
protected static final JID TEST_SERVER2_CHANNELS_JID = new JID("channels.server2");
protected static final JID TEST_SERVER1_USER1_JID = new JID("user1@server1");
protected static final JID TEST_SERVER1_USER1_JID_WITH_RESOURCE = new JID("user1@server1/resource");
protected static final JID TEST_SERVER1_USER2_JID = new JID("user2@server1");
protected static final JID TEST_SERVER1_USER3_JID = new JID("user3@server1");
protected static final JID TEST_SERVER1_OUTCAST_JID = new JID("outcast@server1");
protected static final JID TEST_SERVER2_USER1_JID = new JID("user1@server2");
protected static final JID TEST_SERVER2_USER2_JID = new JID("user2@server2");
protected static final JID TEST_SERVER2_USER3_JID = new JID("user3@server2");
DatabaseTester dbTester;
Connection conn;
Configuration configuration;
JDBCNodeStore store;
public JDBCNodeStoreAbstract() throws SQLException, IOException, ClassNotFoundException {
dbTester = new DatabaseTester();
IQTestHandler.readConf();
this.configuration = Configuration.getInstance();
}
@Before
public void setUp() throws Exception {
dbTester.initialise();
store = new JDBCNodeStore(dbTester.getConnection(), new Sql92NodeStoreDialect(), configuration);
}
@After
public void tearDown() throws Exception {
dbTester.close();
}
protected void assertNodeConfigEquals(final String nodeId, final Map<String, String> config) throws Exception {
// Check there's the correct number of config entries
dbTester.assertions().assertTableContains("node_config", new HashMap<String, Object>() {
{
put("node", nodeId);
}
}, config.size());
for (final Entry<String, String> entry : config.entrySet()) {
dbTester.assertions().assertTableContains("node_config", new HashMap<String, Object>() {
{
put("node", nodeId);
put("key", entry.getKey());
put("value", entry.getValue());
}
});
}
}
protected void assertSameNodeItem(NodeItem actual, NodeItem expected, boolean checkPayload) {
assertEquals(expected.getId(), actual.getId());
assertEquals(expected.getNodeId(), actual.getNodeId());
if (true == checkPayload) {
assertEquals(expected.getPayload(), actual.getPayload());
}
assertEquals(expected.getInReplyTo(), actual.getInReplyTo());
}
protected void assertSameNodeItem(NodeItem actual, NodeItem expected) {
assertSameNodeItem(actual, expected, true);
}
}