package org.buddycloud.channelserver.db.jdbc;
import java.io.IOException;
import java.sql.SQLException;
import java.util.HashMap;
import org.buddycloud.channelserver.db.exception.NodeStoreException;
import org.buddycloud.channelserver.packetHandler.iq.IQTestHandler;
import org.junit.Test;
public class JDBCNodeStoreCreateNodeTest extends JDBCNodeStoreAbstract {
public JDBCNodeStoreCreateNodeTest() throws SQLException, IOException, ClassNotFoundException {
dbTester = new DatabaseTester();
IQTestHandler.readConf();
}
@Test
public void testCreateNodeNoConfig() throws Exception {
store.createNode(TEST_SERVER1_USER1_JID, TEST_SERVER1_NODE1_ID, new HashMap<String, String>());
HashMap<String, Object> expected = new HashMap<String, Object>();
expected.put("node", TEST_SERVER1_NODE1_ID);
dbTester.assertions().assertTableContains("nodes", expected);
dbTester.assertions().assertTableContains("node_config", expected, 0);
expected = new HashMap<String, Object>();
expected.put("node", TEST_SERVER1_NODE1_ID);
expected.put("user", TEST_SERVER1_USER1_JID.toString());
expected.put("affiliation", "owner");
dbTester.assertions().assertTableContains("affiliations", expected);
}
@Test
public void testCreateNodeWithConfig() throws Exception {
HashMap<String, String> config = new HashMap<String, String>();
config.put("CONFIG1", "Value of CONFIG1");
config.put("CONFIG2", "Value of CONFIG2");
store.createNode(TEST_SERVER1_USER1_JID, TEST_SERVER1_NODE1_ID, config);
HashMap<String, Object> expected = new HashMap<String, Object>();
expected.put("node", TEST_SERVER1_NODE1_ID);
dbTester.assertions().assertTableContains("nodes", expected);
expected = new HashMap<String, Object>();
expected.put("node", TEST_SERVER1_NODE1_ID);
expected.put("user", TEST_SERVER1_USER1_JID.toString());
expected.put("affiliation", "owner");
dbTester.assertions().assertTableContains("affiliations", expected);
expected = new HashMap<String, Object>();
expected.put("node", TEST_SERVER1_NODE1_ID);
expected.put("key", "CONFIG1");
expected.put("value", "Value of CONFIG1");
dbTester.assertions().assertTableContains("node_config", expected);
expected = new HashMap<String, Object>();
expected.put("node", TEST_SERVER1_NODE1_ID);
expected.put("key", "CONFIG2");
expected.put("value", "Value of CONFIG2");
dbTester.assertions().assertTableContains("node_config", expected);
}
@Test(expected = NullPointerException.class)
public void testCreateNodeNullOwner() throws Exception {
store.createNode(null, TEST_SERVER1_NODE1_ID, null);
}
@Test(expected = NullPointerException.class)
public void testCreateNodeNullNodeId() throws Exception {
store.createNode(TEST_SERVER1_USER1_JID, null, null);
}
@Test(expected = NodeStoreException.class)
public void testCreateDuplicateNodeThrowsException() throws Exception {
store.createNode(TEST_SERVER1_USER1_JID, TEST_SERVER1_NODE1_ID, new HashMap<String, String>());
store.createNode(TEST_SERVER1_USER2_JID, TEST_SERVER1_NODE1_ID, new HashMap<String, String>());
}
@Test
public void testCreateNodeUsesBareJidForOwner() throws Exception {
store.createNode(TEST_SERVER1_USER1_JID_WITH_RESOURCE, TEST_SERVER1_NODE1_ID, new HashMap<String, String>());
HashMap<String, Object> expected = new HashMap<String, Object>();
expected.put("node", TEST_SERVER1_NODE1_ID);
expected.put("user", TEST_SERVER1_USER1_JID.toString());
expected.put("affiliation", "owner");
dbTester.assertions().assertTableContains("affiliations", expected);
}
}