package org.buddycloud.channelserver.db.jdbc; import static org.junit.Assert.assertEquals; import java.io.IOException; import java.sql.SQLException; import java.util.Date; import java.util.HashMap; import org.buddycloud.channelserver.packetHandler.iq.IQTestHandler; import org.buddycloud.channelserver.pubsub.affiliation.Affiliations; import org.buddycloud.channelserver.pubsub.model.NodeAffiliation; import org.junit.Test; import org.xmpp.packet.JID; import org.xmpp.resultsetmanagement.ResultSet; public class JDBCNodeStoreAffiliationsTest extends JDBCNodeStoreAbstract { public JDBCNodeStoreAffiliationsTest() throws SQLException, IOException, ClassNotFoundException { dbTester = new DatabaseTester(); IQTestHandler.readConf(); } @Test public void testCanGetAffiliationsChanges() throws Exception { dbTester.loadData("node_1"); store.setUserAffiliation(TEST_SERVER1_NODE1_ID, TEST_SERVER2_USER1_JID, Affiliations.publisher); store.setUserAffiliation(TEST_SERVER1_NODE1_ID, TEST_SERVER1_USER3_JID, Affiliations.publisher); ResultSet<NodeAffiliation> changes = store.getAffiliationChanges(TEST_SERVER1_USER1_JID, new Date(0), new Date()); assertEquals(6, changes.size()); } @Test public void testNoAffiliationChangesFromOutcastNode() throws Exception { dbTester.loadData("node_1"); store.setUserAffiliation(TEST_SERVER1_NODE1_ID, TEST_SERVER2_USER1_JID, Affiliations.publisher); store.setUserAffiliation(TEST_SERVER1_NODE1_ID, TEST_SERVER1_USER3_JID, Affiliations.publisher); store.setUserAffiliation(TEST_SERVER1_NODE1_ID, TEST_SERVER1_USER1_JID, Affiliations.outcast); ResultSet<NodeAffiliation> changes = store.getAffiliationChanges(TEST_SERVER1_USER1_JID, new Date(0), new Date()); assertEquals(0, changes.size()); } @Test public void testSetUserAffiliationNewAffiliation() throws Exception { dbTester.loadData("node_1"); store.setUserAffiliation(TEST_SERVER1_NODE1_ID, new JID("user2@example.com"), Affiliations.member); dbTester.assertions().assertTableContains("affiliations", new HashMap<String, Object>() { { put("node", TEST_SERVER1_NODE1_ID); put("user", "user2@example.com"); put("affiliation", Affiliations.member.toString()); } }); } @Test public void testSetUserAffiliationUpdateAffiliation() throws Exception { dbTester.loadData("node_1"); store.setUserAffiliation(TEST_SERVER1_NODE1_ID, new JID("user1@example.com"), Affiliations.member); dbTester.assertions().assertTableContains("affiliations", new HashMap<String, Object>() { { put("node", TEST_SERVER1_NODE1_ID); put("user", "user1@example.com"); put("affiliation", Affiliations.member.toString()); } }); dbTester.assertions().assertTableContains("affiliations", new HashMap<String, Object>() { { put("node", TEST_SERVER1_NODE1_ID); put("user", "user1@example.com"); put("affiliation", Affiliations.owner.toString()); } }, 0); } @Test public void testSetUserAffiliationUpdateAffiliationNoneRemovesAffiliation() throws Exception { dbTester.loadData("node_1"); store.setUserAffiliation(TEST_SERVER1_NODE1_ID, new JID("user1@example.com"), Affiliations.none); dbTester.assertions().assertTableContains("affiliations", new HashMap<String, Object>() { { put("node", TEST_SERVER1_NODE1_ID); put("user", "user1@example.com"); } }, 0); } @Test public void testSetUserAffiliationUsesBareJID() throws Exception { dbTester.loadData("node_1"); store.setUserAffiliation(TEST_SERVER1_NODE1_ID, new JID("user2@example.com/resource"), Affiliations.member); dbTester.assertions().assertTableContains("affiliations", new HashMap<String, Object>() { { put("node", TEST_SERVER1_NODE1_ID); put("user", "user2@example.com"); put("affiliation", Affiliations.member.toString()); } }); } }