Changeset - 58e21039ff25
[Not reviewed]
0 2 0
Jan Kaluza - 9 years ago 2016-02-01 09:18:16
jkaluza@redhat.com
Slack: Parse channel_joined and channel_created RTM messages
2 files changed with 21 insertions and 2 deletions:
0 comments (0 inline, 0 general)
spectrum/src/frontends/slack/SlackRTM.cpp
Show inline comments
 
@@ -126,26 +126,28 @@ void SlackRTM::handlePayloadReceived(const std::string &payload) {
 
			text = "/me " + text;
 
			STORE_STRING(d, user);
 
			onMessageReceived(channel, user, text, ts);
 
		}
 
		else if (subtype == "channel_join") {
 
			
 
		}
 
		else {
 
			STORE_STRING(d, user);
 
			onMessageReceived(channel, user, text, ts);
 
		}
 
	}
 
	else if (type == "channel_joined") {
 
		
 
	else if (type == "channel_joined"
 
		  || type == "channel_created") {
 
		std::map<std::string, SlackChannelInfo> &channels = m_idManager->getChannels();
 
		SlackAPI::getSlackChannelInfo(NULL, true, d, payload, channels);
 
	}
 
}
 

	
 
void SlackRTM::sendMessage(const std::string &channel, const std::string &message) {
 
	m_counter++;
 

	
 
	std::string m = message;
 
	boost::replace_all(m, "\"", "\\\"");
 
	std::string msg = "{\"id\": " + boost::lexical_cast<std::string>(m_counter) + ", \"type\": \"message\", \"channel\":\"" + channel + "\", \"text\":\"" + m + "\"}";
 
	m_client->write(msg);
 
}
 

	
tests/libtransport/SlackRTM.cpp
Show inline comments
 
#include "SlackRTM.h"
 
#include "SlackIdManager.h"
 
#include <cppunit/TestFixture.h>
 
#include <cppunit/extensions/HelperMacros.h>
 
#include "BasicSlackTest.h"
 

	
 
using namespace Transport;
 

	
 
class SlackRTMTest : public CPPUNIT_NS :: TestFixture, public BasicTest {
 
	CPPUNIT_TEST_SUITE(SlackRTMTest);
 
	CPPUNIT_TEST(handleRTMStart);
 
	CPPUNIT_TEST(handlePayloadReceivedChannelJoined);
 
	CPPUNIT_TEST(handlePayloadReceivedChannelCreated);
 
	CPPUNIT_TEST_SUITE_END();
 

	
 
	public:
 
		SlackRTM *m_rtm;
 
		SlackIdManager *m_idManager;
 
		std::string rtmStartPayload;
 

	
 
		void setUp (void) {
 
			setMeUp();
 
			UserInfo uinfo;
 
			m_idManager = new SlackIdManager();
 
			m_rtm = new SlackRTM(component, storage, m_idManager, uinfo);
 
@@ -33,19 +35,34 @@ class SlackRTMTest : public CPPUNIT_NS :: TestFixture, public BasicTest {
 

	
 
		void handleRTMStart() {
 
			rapidjson::Document json;
 
			json.Parse<0>(rtmStartPayload.c_str());
 
			m_rtm->handleRTMStart(NULL, true, json, rtmStartPayload);
 

	
 
			CPPUNIT_ASSERT_EQUAL(std::string("spectrum2"), m_idManager->getSelfName());
 
			CPPUNIT_ASSERT_EQUAL(std::string("U0KECRDJB"), m_idManager->getSelfId());
 
			CPPUNIT_ASSERT_EQUAL(std::string("owner"), m_idManager->getName("U0H6EEWNN"));
 
			CPPUNIT_ASSERT_EQUAL(std::string("C0H6B0SQM"), m_idManager->getId("spectrum2_contactlist"));
 
			CPPUNIT_ASSERT_EQUAL(true, m_idManager->hasMember("C0KH09UQ2", "U0KECRDJB"));
 
			CPPUNIT_ASSERT_EQUAL(false, m_idManager->hasMember("C0KH09UQ2", "U1KECRDJB"));
 
		}
 

	
 
		void handlePayloadReceivedChannelJoined() {
 
			CPPUNIT_ASSERT_EQUAL(false, m_idManager->hasMember("C0KSK7V7E", "U0KECRDJB"));
 

	
 
			std::string payload = "{\"type\":\"channel_joined\",\"channel\":{\"id\":\"C0KSK7V7E\",\"name\":\"new_slack_channel\",\"is_channel\":true,\"created\":1454231085,\"creator\":\"U0H6EEWNN\",\"is_archived\":false,\"is_general\":false,\"is_member\":true,\"last_read\":\"1454231085.000002\",\"latest\":{\"user\":\"U0H6EEWNN\",\"type\":\"message\",\"subtype\":\"channel_join\",\"text\":\"<@U0H6EEWNN|owner> has joined the channel\",\"ts\":\"1454231085.000002\"},\"unread_count\":0,\"unread_count_display\":0,\"members\":[\"U0H6EEWNN\",\"U0KECRDJB\"],\"topic\":{\"value\":\"\",\"creator\":\"\",\"last_set\":0},\"purpose\":{\"value\":\"\",\"creator\":\"\",\"last_set\":0}}}";
 
			m_rtm->handlePayloadReceived(payload);
 
			CPPUNIT_ASSERT_EQUAL(std::string("C0KSK7V7E"), m_idManager->getId("new_slack_channel"));
 
			CPPUNIT_ASSERT_EQUAL(true, m_idManager->hasMember("C0KSK7V7E", "U0KECRDJB"));
 
			CPPUNIT_ASSERT_EQUAL(false, m_idManager->hasMember("C0KSK7V7E", "U1KECRDJB"));
 
		}
 

	
 

	
 
		void handlePayloadReceivedChannelCreated() {
 
			std::string payload = "{\"type\":\"channel_created\",\"channel\":{\"id\":\"C0KH09UQ2\",\"is_channel\":true,\"name\":\"my_new_channel\",\"created\":1453906652,\"creator\":\"U0H6EEWNN\"},\"event_ts\":\"1453906652.085393\"}";
 
			m_rtm->handlePayloadReceived(payload);
 
			CPPUNIT_ASSERT_EQUAL(std::string("C0KH09UQ2"), m_idManager->getId("my_new_channel"));
 
		}
 

	
 
};
 

	
 
CPPUNIT_TEST_SUITE_REGISTRATION (SlackRTMTest);
0 comments (0 inline, 0 general)