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());
}
});
}
}