Changeset - 4b7baa691020
[Not reviewed]
0 4 3
Jan Kaluza - 9 years ago 2016-02-01 07:10:28
jkaluza@redhat.com
Unit test for SlackRTM
7 files changed with 225 insertions and 8 deletions:
0 comments (0 inline, 0 general)
spectrum/src/frontends/slack/SlackRTM.cpp
Show inline comments
 
@@ -53,26 +53,28 @@ SlackRTM::SlackRTM(Component *component, StorageBackend *storageBackend, SlackId
 
	m_pingTimer->onTick.connect(boost::bind(&SlackRTM::sendPing, this));
 

	
 
	int type = (int) TYPE_STRING;
 
	m_storageBackend->getUserSetting(m_uinfo.id, "bot_token", type, m_token);
 

	
 
	m_api = new SlackAPI(component, m_idManager, m_token);
 

	
 
	std::string url = "https://slack.com/api/rtm.start?";
 
	url += "token=" + Util::urlencode(m_token);
 

	
 
	HTTPRequest *req = new HTTPRequest(THREAD_POOL(m_component), HTTPRequest::Get, url, boost::bind(&SlackRTM::handleRTMStart, this, _1, _2, _3, _4));
 
	req->execute();
 
}
 

	
 
SlackRTM::~SlackRTM() {
 
	delete m_client;
 
	delete m_api;
 
	m_pingTimer->stop();
 
}
 

	
 
void SlackRTM::start() {
 
	std::string url = "https://slack.com/api/rtm.start?";
 
	url += "token=" + Util::urlencode(m_token);
 

	
 
	HTTPRequest *req = new HTTPRequest(THREAD_POOL(m_component), HTTPRequest::Get, url, boost::bind(&SlackRTM::handleRTMStart, this, _1, _2, _3, _4));
 
	req->execute();
 
}
 

	
 
#define STORE_STRING(FROM, NAME) rapidjson::Value &NAME##_tmp = FROM[#NAME]; \
 
	if (!NAME##_tmp.IsString()) {  \
 
		LOG4CXX_ERROR(logger, "No '" << #NAME << "' string in the reply."); \
 
		LOG4CXX_ERROR(logger, payload); \
 
		return; \
 
	} \
spectrum/src/frontends/slack/SlackRTM.h
Show inline comments
 
@@ -61,25 +61,29 @@ class SlackIdManager;
 
class SlackRTM {
 
	public:
 
		SlackRTM(Component *component, StorageBackend *storageBackend, SlackIdManager *idManager, UserInfo uinfo);
 

	
 
		virtual ~SlackRTM();
 

	
 
		void start();
 

	
 
		void sendPing();
 

	
 
		void sendMessage(const std::string &channel, const std::string &message);
 

	
 
		boost::signal<void ()> onRTMStarted;
 

	
 
		SlackAPI *getAPI() {
 
			return m_api;
 
		}
 

	
 
		boost::signal<void (const std::string &channel, const std::string &user, const std::string &text, const std::string &ts)> onMessageReceived;
 

	
 
#ifndef LIBTRANSPORT_TEST
 
	private:
 
#endif
 
		void handlePayloadReceived(const std::string &payload);
 
		void handleRTMStart(HTTPRequest *req, bool ok, rapidjson::Document &resp, const std::string &data);
 
		void handleWebSocketConnected();
 
		void handleWebSocketDisconnected(const boost::optional<Swift::Connection::Error> &error);
 

	
 
	private:
spectrum/src/frontends/slack/SlackSession.cpp
Show inline comments
 
@@ -53,12 +53,13 @@ SlackSession::SlackSession(Component *component, StorageBackend *storageBackend,
 

	
 
	m_idManager = new SlackIdManager();
 

	
 
	m_rtm = new SlackRTM(component, storageBackend, m_idManager, uinfo);
 
	m_rtm->onRTMStarted.connect(boost::bind(&SlackSession::handleRTMStarted, this));
 
	m_rtm->onMessageReceived.connect(boost::bind(&SlackSession::handleMessageReceived, this, _1, _2, _3, _4, false));
 
	m_rtm->start();
 

	
 
	m_onlineBuddiesTimer = m_component->getNetworkFactories()->getTimerFactory()->createTimer(20000);
 
	m_onlineBuddiesTimer->onTick.connect(boost::bind(&SlackSession::sendOnlineBuddies, this));
 

	
 
	int type = (int) TYPE_STRING;
 
	std::string token;
tests/libtransport/BasicSlackTest.cpp
Show inline comments
 
new file 100644
 
#include "BasicSlackTest.h"
 
#include "XMPPFrontend.h"
 
#include "XMPPUserRegistration.h"
 
#include "XMPPUserManager.h"
 
#include <cppunit/TestFixture.h>
 
#include <cppunit/extensions/HelperMacros.h>
 
#include <Swiften/Swiften.h>
 
#include <Swiften/EventLoop/DummyEventLoop.h>
 
#include <Swiften/Server/Server.h>
 
#include <Swiften/Network/DummyNetworkFactories.h>
 
#include <Swiften/Network/DummyConnectionServer.h>
 
#include "Swiften/Server/ServerStanzaChannel.h"
 
#include "Swiften/Server/ServerFromClientSession.h"
 
#include "Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h"
 

	
 
#include "Swiften/Serializer/GenericPayloadSerializer.h"
 

	
 
#include "storageparser.h"
 
#include "Swiften/Parser/PayloadParsers/AttentionParser.h"
 
#include "Swiften/Serializer/PayloadSerializers/AttentionSerializer.h"
 
#include "Swiften/Parser/PayloadParsers/XHTMLIMParser.h"
 
#include "Swiften/Serializer/PayloadSerializers/XHTMLIMSerializer.h"
 
#include "Swiften/Parser/PayloadParsers/StatsParser.h"
 
#include "Swiften/Serializer/PayloadSerializers/StatsSerializer.h"
 
#include "Swiften/Parser/PayloadParsers/GatewayPayloadParser.h"
 
#include "Swiften/Serializer/PayloadSerializers/GatewayPayloadSerializer.h"
 
#include "Swiften/Serializer/PayloadSerializers/SpectrumErrorSerializer.h"
 
#include "Swiften/Parser/PayloadParsers/MUCPayloadParser.h"
 
#include "BlockParser.h"
 
#include "BlockSerializer.h"
 
#include "Swiften/Parser/PayloadParsers/InvisibleParser.h"
 
#include "Swiften/Serializer/PayloadSerializers/InvisibleSerializer.h"
 

	
 
using namespace Transport;
 

	
 
void BasicSlackTest::setMeUp (void) {
 
	std::istringstream ifs("service.server_mode = 1\nservice.jid=localhost\nservice.more_resources=1\n");
 
	cfg = new Config();
 
	cfg->load(ifs);
 

	
 
	factory = new TestingFactory();
 

	
 
	storage = new TestingStorageBackend();
 

	
 
	loop = new Swift::DummyEventLoop();
 
	factories = new Swift::DummyNetworkFactories(loop);
 

	
 
	userRegistry = new UserRegistry(cfg, factories);
 

	
 
	frontend = new SlackFrontend();
 

	
 
	component = new Component(frontend, loop, factories, cfg, factory, userRegistry);
 
	component->start();
 

	
 
	userManager = frontend->createUserManager(component, userRegistry, storage);
 
}
 

	
 
void BasicSlackTest::tearMeDown (void) {
 
	delete component;
 
	delete frontend;
 
	delete userRegistry;
 
	delete factories;
 
	delete factory;
 
	delete loop;
 
	delete cfg;
 
	delete storage;
 
}
 

	
 

	
tests/libtransport/BasicSlackTest.h
Show inline comments
 
new file 100644
 
/**
 
 * libtransport -- C++ library for easy XMPP Transports development
 
 *
 
 * Copyright (C) 2011, Jan Kaluza <hanzz.k@gmail.com>
 
 *
 
 * This program is free software; you can redistribute it and/or modify
 
 * it under the terms of the GNU General Public License as published by
 
 * the Free Software Foundation; either version 2 of the License, or
 
 * (at your option) any later version.
 
 *
 
 * This program is distributed in the hope that it will be useful,
 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
 * GNU General Public License for more details.
 
 *
 
 * You should have received a copy of the GNU General Public License
 
 * along with this program; if not, write to the Free Software
 
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
 
 */
 

	
 
#pragma once
 

	
 
#include <vector>
 
#include "Swiften/Swiften.h"
 
#include "Swiften/Queries/SetResponder.h"
 
#include "transport/Conversation.h"
 
#include "transport/ConversationManager.h"
 
#include "transport/UserRegistry.h"
 
#include "transport/Config.h"
 
#include "transport/StorageBackend.h"
 
#include "transport/User.h"
 
#include "transport/Transport.h"
 
#include "transport/UserManager.h"
 
#include "transport/UserRegistration.h"
 
#include "transport/RosterManager.h"
 
#include "transport/NetworkPluginServer.h"
 
#include "RosterResponder.h"
 
#include "discoitemsresponder.h"
 
#include "transport/LocalBuddy.h"
 
#include "transport/StorageBackend.h"
 
#include "transport/Factory.h"
 
#include "SlackUserRegistration.h"
 
#include "SlackFrontend.h"
 

	
 
#include <Swiften/Swiften.h>
 
#include <Swiften/EventLoop/DummyEventLoop.h>
 
#include <Swiften/Server/Server.h>
 
#include <Swiften/Network/DummyNetworkFactories.h>
 
#include <Swiften/Network/DummyConnectionServer.h>
 
#include "Swiften/Server/ServerStanzaChannel.h"
 
#include "Swiften/Server/ServerFromClientSession.h"
 
#include "Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h"
 
#define HAVE_SWIFTEN_3  (SWIFTEN_VERSION >= 0x030000)
 

	
 
#include "basictest.h"
 

	
 
using namespace Transport;
 

	
 
class BasicSlackTest : public Swift::XMPPParserClient {
 

	
 
	public:
 
		void setMeUp (void);
 

	
 
		void tearMeDown (void);
 

	
 
	void addUser() {
 
		UserInfo user;
 
		user.id = 1;
 
		user.jid = "user@localhost";
 
		user.uin = "legacyname";
 
		user.password = "password";
 
		user.vip = 0;
 
		storage->setUser(user);
 
	}
 

	
 
	protected:
 
		UserManager *userManager;
 
		UserRegistry *userRegistry;
 
		Config *cfg;
 
		Swift::Server *server;
 
		Swift::DummyNetworkFactories *factories;
 
		Swift::DummyEventLoop *loop;
 
		TestingFactory *factory;
 
		Component *component;
 
		StorageBackend *storage;
 
		SlackUserRegistration *userRegistration;
 
		Transport::SlackFrontend *frontend;
 
};
 

	
tests/libtransport/CMakeLists.txt
Show inline comments
 
@@ -15,17 +15,19 @@ else()
 
	string(REGEX REPLACE "[^;]+;?/OpenSSL/[^;]+;?" "" SWIFTEN_SRC "${SWIFTEN_SRC}") 
 
	string(REGEX REPLACE "[^;]+;?/SecureTransport/[^;]+;?" "" SWIFTEN_SRC "${SWIFTEN_SRC}")
 
endif()
 

	
 
FILE(GLOB HEADERS ../../include/transport/*.h)
 
include_directories(../../spectrum/src/frontends/xmpp/)
 
include_directories(../../spectrum/src/frontends/slack/)
 

	
 
if (CPPUNIT_FOUND)
 
	FILE(GLOB SRC_TEST *.cpp)
 
	FILE(GLOB SRC_TEST_FRONTEND ../../spectrum/src/frontends/xmpp/*.cpp)
 
	FILE(GLOB SRC_TEST_FRONTEND_XMPP ../../spectrum/src/frontends/xmpp/*.cpp)
 
	FILE(GLOB SRC_TEST_FRONTEND_SLACK ../../spectrum/src/frontends/slack/*.cpp)
 

	
 
	ADD_EXECUTABLE(libtransport_test ${SRC_TEST} ${SRC_TEST_FRONTEND})
 
	ADD_EXECUTABLE(libtransport_test ${SRC_TEST} ${SRC_TEST_FRONTEND_XMPP} ${SRC_TEST_FRONTEND_SLACK})
 
	set_target_properties(libtransport_test PROPERTIES COMPILE_DEFINITIONS LIBTRANSPORT_TEST=1)
 
	
 

	
 
	target_link_libraries(libtransport_test transport ${CPPUNIT_LIBRARY} ${Boost_LIBRARIES})
 
endif()
tests/libtransport/SlackRTM.cpp
Show inline comments
 
new file 100644
 
#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_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);
 

	
 
			rtmStartPayload = "{\"ok\":true,\"self\":{\"id\":\"U0KECRDJB\",\"name\":\"spectrum2\",\"prefs\":{\"highlight_words\":\"\",\"user_colors\":\"\",\"color_names_in_list\":true,\"growls_enabled\":true,\"tz\":null,\"push_dm_alert\":true,\"push_mention_alert\":true,\"msg_replies\":\"{ \\\"flexpane\\\":false }\",\"push_everything\":true,\"push_idle_wait\":2,\"push_sound\":\"b2.mp3\",\"push_loud_channels\":\"\",\"push_mention_channels\":\"\",\"push_loud_channels_set\":\"\",\"email_alerts\":\"instant\",\"email_alerts_sleep_until\":0,\"email_misc\":true,\"email_weekly\":true,\"welcome_message_hidden\":false,\"all_channels_loud\":true,\"loud_channels\":\"\",\"never_channels\":\"\",\"loud_channels_set\":\"\",\"show_member_presence\":true,\"search_sort\":\"timestamp\",\"expand_inline_imgs\":true,\"expand_internal_inline_imgs\":true,\"expand_snippets\":false,\"posts_formatting_guide\":true,\"seen_live_support_popup\":false,\"seen_welcome_2\":false,\"seen_ssb_prompt\":false,\"seen_spaces_new_xp_tooltip\":false,\"spaces_new_xp_banner_dismissed\":false,\"search_only_my_channels\":false,\"emoji_mode\":\"default\",\"emoji_use\":\"\",\"has_invited\":false,\"has_uploaded\":false,\"has_created_channel\":false,\"search_exclude_channels\":\"\",\"messages_theme\":\"default\",\"webapp_spellcheck\":true,\"no_joined_overlays\":false,\"no_created_overlays\":false,\"dropbox_enabled\":false,\"seen_domain_invite_reminder\":false,\"seen_member_invite_reminder\":false,\"mute_sounds\":false,\"arrow_history\":false,\"tab_ui_return_selects\":true,\"obey_inline_img_limit\":true,\"new_msg_snd\":\"knock_brush.mp3\",\"collapsible\":false,\"collapsible_by_click\":true,\"require_at\":false,\"ssb_space_window\":\"\",\"mac_ssb_bounce\":\"\",\"mac_ssb_bullet\":true,\"expand_non_media_attachments\":true,\"show_typing\":true,\"pagekeys_handled\":true,\"last_snippet_type\":\"\",\"display_real_names_override\":0,\"time24\":false,\"enter_is_special_in_tbt\":false,\"graphic_emoticons\":false,\"convert_emoticons\":true,\"autoplay_chat_sounds\":true,\"ss_emojis\":true,\"sidebar_behavior\":\"\",\"seen_onboarding_start\":false,\"onboarding_cancelled\":false,\"seen_onboarding_slackbot_conversation\":false,\"seen_onboarding_channels\":false,\"seen_onboarding_direct_messages\":false,\"seen_onboarding_invites\":false,\"seen_onboarding_search\":false,\"seen_onboarding_recent_mentions\":false,\"seen_onboarding_starred_items\":false,\"seen_onboarding_private_groups\":false,\"onboarding_slackbot_conversation_step\":0,\"dnd_enabled\":false,\"dnd_start_hour\":\"22:00\",\"dnd_end_hour\":\"08:00\",\"mark_msgs_read_immediately\":true,\"start_scroll_at_oldest\":true,\"snippet_editor_wrap_long_lines\":false,\"ls_disabled\":false,\"sidebar_theme\":\"default\",\"sidebar_theme_custom_values\":\"\",\"f_key_search\":false,\"k_key_omnibox\":true,\"speak_growls\":false,\"mac_speak_voice\":\"com.apple.speech.synthesis.voice.Alex\",\"mac_speak_speed\":250,\"comma_key_prefs\":false,\"at_channel_suppressed_channels\":\"\",\"push_at_channel_suppressed_channels\":\"\",\"prompted_for_email_disabling\":false,\"full_text_extracts\":false,\"no_text_in_notifications\":false,\"muted_channels\":\"\",\"no_macssb1_banner\":false,\"no_winssb1_banner\":false,\"no_omnibox_in_channels\":false,\"k_key_omnibox_auto_hide_count\":0,\"hide_user_group_info_pane\":false,\"mentions_exclude_at_user_groups\":false,\"privacy_policy_seen\":true,\"search_exclude_bots\":false,\"fuzzy_matching\":false,\"load_lato_2\":false,\"fuller_timestamps\":false,\"last_seen_at_channel_warning\":0,\"flex_resize_window\":false,\"msg_preview\":false,\"msg_preview_displaces\":true,\"msg_preview_persistent\":true,\"emoji_autocomplete_big\":false,\"winssb_run_from_tray\":true,\"winssb_window_flash_behavior\":\"idle\",\"two_factor_auth_enabled\":false,\"two_factor_type\":null,\"two_factor_backup_type\":null,\"mentions_exclude_at_channels\":true,\"confirm_clear_all_unreads\":true,\"confirm_user_marked_away\":true,\"box_enabled\":false,\"seen_single_emoji_msg\":false,\"confirm_sh_call_start\":true,\"preferred_skin_tone\":\"\",\"show_all_skin_tones\":false,\"separate_private_channels\":false,\"whats_new_read\":1453832311,\"hotness\":false,\"frecency_jumper\":\"\"},\"created\":1453832311,\"manual_presence\":\"active\"},\"team\":{\"id\":\"T0H6F57L0\",\"name\":\"spectrum2test\",\"email_domain\":\"\",\"domain\":\"spectrum2tests\",\"msg_edit_window_mins\":-1,\"prefs\":{\"default_channels\":[\"C0H6BKHM1\",\"C0H6EJD2S\"],\"gateway_allow_xmpp_ssl\":1,\"gateway_allow_irc_ssl\":0,\"gateway_allow_irc_plain\":0,\"msg_edit_window_mins\":-1,\"allow_message_deletion\":true,\"hide_referers\":true,\"display_real_names\":false,\"disable_file_uploads\":\"allow_all\",\"who_can_at_everyone\":\"regular\",\"who_can_at_channel\":\"ra\",\"warn_before_at_channel\":\"always\",\"who_can_create_channels\":\"regular\",\"who_can_create_shared_channels\":\"admin\",\"who_can_archive_channels\":\"regular\",\"who_can_create_groups\":\"ra\",\"who_can_post_general\":\"ra\",\"who_can_kick_channels\":\"admin\",\"who_can_kick_groups\":\"regular\",\"dnd_enabled\":true,\"dnd_start_hour\":\"22:00\",\"dnd_end_hour\":\"08:00\",\"allow_shared_channels\":false,\"who_has_team_visibility\":\"ra\",\"who_can_create_delete_user_groups\":\"admin\",\"who_can_edit_user_groups\":\"admin\",\"who_can_change_team_profile\":\"admin\",\"retention_type\":0,\"retention_duration\":0,\"group_retention_type\":0,\"group_retention_duration\":0,\"dm_retention_type\":0,\"dm_retention_duration\":0,\"file_retention_type\":0,\"file_retention_duration\":0,\"allow_retention_override\":true,\"require_at_for_mention\":0,\"compliance_export_start\":0,\"invites_only_admins\":true,\"auth_mode\":\"normal\",\"who_can_manage_integrations\":{\"type\":[\"regular\"]}},\"icon\":{\"image_34\":\"https:\\/\\/slack.global.ssl.fastly.net\\/0180\\/img\\/avatars-teams\\/ava_0020-34.png\",\"image_44\":\"https:\\/\\/slack.global.ssl.fastly.net\\/66f9\\/img\\/avatars-teams\\/ava_0020-44.png\",\"image_68\":\"https:\\/\\/slack.global.ssl.fastly.net\\/66f9\\/img\\/avatars-teams\\/ava_0020-68.png\",\"image_88\":\"https:\\/\\/slack.global.ssl.fastly.net\\/66f9\\/img\\/avatars-teams\\/ava_0020-88.png\",\"image_102\":\"https:\\/\\/slack.global.ssl.fastly.net\\/66f9\\/img\\/avatars-teams\\/ava_0020-102.png\",\"image_132\":\"https:\\/\\/slack.global.ssl.fastly.net\\/66f9\\/img\\/avatars-teams\\/ava_0020-132.png\",\"image_default\":true},\"over_storage_limit\":false,\"plan\":\"\",\"over_integrations_limit\":true},\"latest_event_ts\":\"1453903139.000000\",\"channels\":[{\"id\":\"C0H6BKHM1\",\"name\":\"general\",\"is_channel\":true,\"created\":1450796647,\"creator\":\"U0H6EEWNN\",\"is_archived\":false,\"is_general\":true,\"has_pins\":false,\"is_member\":false},{\"id\":\"C0HEF8JCU\",\"name\":\"irc_channel\",\"is_channel\":true,\"created\":1451370608,\"creator\":\"U0H6EEWNN\",\"is_archived\":false,\"is_general\":false,\"has_pins\":false,\"is_member\":false},{\"id\":\"C0H6EJD2S\",\"name\":\"random\",\"is_channel\":true,\"created\":1450796647,\"creator\":\"U0H6EEWNN\",\"is_archived\":false,\"is_general\":false,\"has_pins\":false,\"is_member\":false},{\"id\":\"C0H6B0SQM\",\"name\":\"spectrum2_contactlist\",\"is_channel\":true,\"created\":1450797097,\"creator\":\"U0H6EEWNN\",\"is_archived\":false,\"is_general\":false,\"has_pins\":false,\"is_member\":false},{\"id\":\"C0H6FMUSU\",\"name\":\"spectrum2_room\",\"is_channel\":true,\"created\":1450797111,\"creator\":\"U0H6EEWNN\",\"is_archived\":false,\"is_general\":false,\"has_pins\":false,\"is_member\":false}],\"groups\":[],\"ims\":[{\"id\":\"D0KEDLA8Y\",\"is_im\":true,\"user\":\"USLACKBOT\",\"created\":1453832311,\"has_pins\":false,\"last_read\":\"0000000000.000000\",\"latest\":null,\"unread_count\":0,\"unread_count_display\":0,\"is_open\":true},{\"id\":\"D0KEC5UTT\",\"is_im\":true,\"user\":\"U0H6EEWNN\",\"created\":1453832311,\"has_pins\":false,\"last_read\":\"0000000000.000000\",\"latest\":{\"type\":\"message\",\"user\":\"U0KECRDJB\",\"text\":\"Hi, it seems you have enabled Spectrum 2 transport for your Team. As a Team owner, you should now configure it:\\n1. At first, create new channel in which you want this Spectrum 2 transport to send the messages, or choose the existing one.\\n2. Invite this Spectrum 2 bot into this channel.\\n3. Configure the transportation between 3rd-party network and this channel by executing following command in this chat:\\n```.spectrum2 register 3rdPartyAccount 3rdPartyPassword #SlackChannel```\\nFor example to join XMPP account test@xmpp.tld and  transport it into #slack_channel, the command would look like this:\\n```.spectrum2 register test@xmpp.tld mypassword #slack_channel```\\nTo get full list of available commands, executa `.spectrum2 help`\\n\",\"ts\":\"1453882866.000002\"},\"unread_count\":60,\"unread_count_display\":0,\"is_open\":true}],\"cache_ts\":1453903739,\"subteams\":{\"self\":[],\"all\":[]},\"dnd\":{\"dnd_enabled\":false,\"next_dnd_start_ts\":1,\"next_dnd_end_ts\":1,\"snooze_enabled\":false},\"users\":[{\"id\":\"U0HELRN5U\",\"team_id\":\"T0H6F57L0\",\"name\":\"anothertest\",\"deleted\":false,\"status\":null,\"color\":\"e7392d\",\"real_name\":\"\",\"tz\":null,\"tz_label\":\"Pacific Standard Time\",\"tz_offset\":-28800,\"profile\":{\"bot_id\":\"B0HEF7LJY\",\"api_app_id\":\"\",\"avatar_hash\":\"971145960e33\",\"image_24\":\"https:\\/\\/avatars.slack-edge.com\\/2015-12-29\\/17496560935_971145960e330b301ccd_24.png\",\"image_32\":\"https:\\/\\/avatars.slack-edge.com\\/2015-12-29\\/17496560935_971145960e330b301ccd_32.png\",\"image_48\":\"https:\\/\\/avatars.slack-edge.com\\/2015-12-29\\/17496560935_971145960e330b301ccd_48.png\",\"image_72\":\"https:\\/\\/avatars.slack-edge.com\\/2015-12-29\\/17496560935_971145960e330b301ccd_72.png\",\"image_192\":\"https:\\/\\/avatars.slack-edge.com\\/2015-12-29\\/17496560935_971145960e330b301ccd_192.png\",\"image_512\":\"https:\\/\\/avatars.slack-edge.com\\/2015-12-29\\/17496560935_971145960e330b301ccd_512.png\",\"image_1024\":\"https:\\/\\/avatars.slack-edge.com\\/2015-12-29\\/17496560935_971145960e330b301ccd_512.png\",\"image_original\":\"https:\\/\\/avatars.slack-edge.com\\/2015-12-29\\/17496560935_971145960e330b301ccd_original.png\",\"real_name\":\"\",\"real_name_normalized\":\"\",\"fields\":null},\"is_admin\":false,\"is_owner\":false,\"is_primary_owner\":false,\"is_restricted\":false,\"is_ultra_restricted\":false,\"is_bot\":true,\"presence\":\"active\"},{\"id\":\"U0H6EEWNN\",\"team_id\":\"T0H6F57L0\",\"name\":\"owner\",\"deleted\":false,\"status\":null,\"color\":\"9f69e7\",\"real_name\":\"\",\"tz\":\"Europe\\/Amsterdam\",\"tz_label\":\"Central European Time\",\"tz_offset\":3600,\"profile\":{\"avatar_hash\":\"g271b7615bd5\",\"real_name\":\"\",\"real_name_normalized\":\"\",\"email\":\"hanzz.k@gmail.com\",\"image_24\":\"https:\\/\\/secure.gravatar.com\\/avatar\\/271b7615bd58df47d63e5204e04ee65d.jpg?s=24&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F66f9%2Fimg%2Favatars%2Fava_0007-24.png\",\"image_32\":\"https:\\/\\/secure.gravatar.com\\/avatar\\/271b7615bd58df47d63e5204e04ee65d.jpg?s=32&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F66f9%2Fimg%2Favatars%2Fava_0007-32.png\",\"image_48\":\"https:\\/\\/secure.gravatar.com\\/avatar\\/271b7615bd58df47d63e5204e04ee65d.jpg?s=48&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F66f9%2Fimg%2Favatars%2Fava_0007-48.png\",\"image_72\":\"https:\\/\\/secure.gravatar.com\\/avatar\\/271b7615bd58df47d63e5204e04ee65d.jpg?s=72&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F66f9%2Fimg%2Favatars%2Fava_0007-72.png\",\"image_192\":\"https:\\/\\/secure.gravatar.com\\/avatar\\/271b7615bd58df47d63e5204e04ee65d.jpg?s=192&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F7fa9%2Fimg%2Favatars%2Fava_0007-192.png\",\"image_512\":\"https:\\/\\/secure.gravatar.com\\/avatar\\/271b7615bd58df47d63e5204e04ee65d.jpg?s=512&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F7fa9%2Fimg%2Favatars%2Fava_0007-512.png\",\"fields\":null},\"is_admin\":true,\"is_owner\":true,\"is_primary_owner\":true,\"is_restricted\":false,\"is_ultra_restricted\":false,\"is_bot\":false,\"presence\":\"away\"},{\"id\":\"U0H69GY5S\",\"team_id\":\"T0H6F57L0\",\"name\":\"spectrum2\",\"deleted\":false,\"status\":null,\"color\":\"4bbe2e\",\"real_name\":\"\",\"tz\":null,\"tz_label\":\"Pacific Standard Time\",\"tz_offset\":-28800,\"profile\":{\"bot_id\":\"B0H6AU1HT\",\"api_app_id\":\"\",\"avatar_hash\":\"f8d23ca2bfcf\",\"image_24\":\"https:\\/\\/avatars.slack-edge.com\\/2015-12-22\\/17213576228_f8d23ca2bfcf67d184ad_24.png\",\"image_32\":\"https:\\/\\/avatars.slack-edge.com\\/2015-12-22\\/17213576228_f8d23ca2bfcf67d184ad_32.png\",\"image_48\":\"https:\\/\\/avatars.slack-edge.com\\/2015-12-22\\/17213576228_f8d23ca2bfcf67d184ad_48.png\",\"image_72\":\"https:\\/\\/avatars.slack-edge.com\\/2015-12-22\\/17213576228_f8d23ca2bfcf67d184ad_72.png\",\"image_192\":\"https:\\/\\/avatars.slack-edge.com\\/2015-12-22\\/17213576228_f8d23ca2bfcf67d184ad_192.png\",\"image_512\":\"https:\\/\\/avatars.slack-edge.com\\/2015-12-22\\/17213576228_f8d23ca2bfcf67d184ad_512.png\",\"image_1024\":\"https:\\/\\/avatars.slack-edge.com\\/2015-12-22\\/17213576228_f8d23ca2bfcf67d184ad_512.png\",\"image_original\":\"https:\\/\\/avatars.slack-edge.com\\/2015-12-22\\/17213576228_f8d23ca2bfcf67d184ad_original.png\",\"real_name\":\"\",\"real_name_normalized\":\"\",\"fields\":null},\"is_admin\":false,\"is_owner\":false,\"is_primary_owner\":false,\"is_restricted\":false,\"is_ultra_restricted\":false,\"is_bot\":true,\"presence\":\"away\"},{\"id\":\"U0KECRDJB\",\"team_id\":\"T0H6F57L0\",\"name\":\"spectrum22\",\"deleted\":false,\"status\":null,\"color\":\"3c989f\",\"real_name\":\"Spectrum 2\",\"tz\":null,\"tz_label\":\"Pacific Standard Time\",\"tz_offset\":-28800,\"profile\":{\"first_name\":\"Spectrum 2\",\"bot_id\":\"B0KE9SE83\",\"api_app_id\":\"A0ET5FEUT\",\"avatar_hash\":\"g54f5aa0341b\",\"real_name\":\"Spectrum 2\",\"real_name_normalized\":\"Spectrum 2\",\"image_24\":\"https:\\/\\/secure.gravatar.com\\/avatar\\/54f5aa0341b1d9b9bce259906cf8354d.jpg?s=24&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F66f9%2Fimg%2Favatars%2Fava_0001-24.png\",\"image_32\":\"https:\\/\\/secure.gravatar.com\\/avatar\\/54f5aa0341b1d9b9bce259906cf8354d.jpg?s=32&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F66f9%2Fimg%2Favatars%2Fava_0001-32.png\",\"image_48\":\"https:\\/\\/secure.gravatar.com\\/avatar\\/54f5aa0341b1d9b9bce259906cf8354d.jpg?s=48&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F0180%2Fimg%2Favatars%2Fava_0001-48.png\",\"image_72\":\"https:\\/\\/secure.gravatar.com\\/avatar\\/54f5aa0341b1d9b9bce259906cf8354d.jpg?s=72&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F3654%2Fimg%2Favatars%2Fava_0001-72.png\",\"image_192\":\"https:\\/\\/secure.gravatar.com\\/avatar\\/54f5aa0341b1d9b9bce259906cf8354d.jpg?s=192&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F7fa9%2Fimg%2Favatars%2Fava_0001-192.png\",\"image_512\":\"https:\\/\\/secure.gravatar.com\\/avatar\\/54f5aa0341b1d9b9bce259906cf8354d.jpg?s=512&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F7fa9%2Fimg%2Favatars%2Fava_0001-512.png\",\"fields\":null},\"is_admin\":false,\"is_owner\":false,\"is_primary_owner\":false,\"is_restricted\":false,\"is_ultra_restricted\":false,\"is_bot\":true,\"presence\":\"away\"},{\"id\":\"USLACKBOT\",\"team_id\":\"T0H6F57L0\",\"name\":\"slackbot\",\"deleted\":false,\"status\":null,\"color\":\"757575\",\"real_name\":\"slackbot\",\"tz\":null,\"tz_label\":\"Pacific Standard Time\",\"tz_offset\":-28800,\"profile\":{\"first_name\":\"slackbot\",\"last_name\":\"\",\"image_24\":\"https:\\/\\/slack.global.ssl.fastly.net\\/0180\\/img\\/slackbot_24.png\",\"image_32\":\"https:\\/\\/slack.global.ssl.fastly.net\\/66f9\\/img\\/slackbot_32.png\",\"image_48\":\"https:\\/\\/slack.global.ssl.fastly.net\\/66f9\\/img\\/slackbot_48.png\",\"image_72\":\"https:\\/\\/slack.global.ssl.fastly.net\\/0180\\/img\\/slackbot_72.png\",\"image_192\":\"https:\\/\\/slack.global.ssl.fastly.net\\/66f9\\/img\\/slackbot_192.png\",\"image_512\":\"https:\\/\\/slack.global.ssl.fastly.net\\/7fa9\\/img\\/slackbot_512.png\",\"avatar_hash\":\"sv1444671949\",\"real_name\":\"slackbot\",\"real_name_normalized\":\"slackbot\",\"email\":null,\"fields\":null},\"is_admin\":false,\"is_owner\":false,\"is_primary_owner\":false,\"is_restricted\":false,\"is_ultra_restricted\":false,\"is_bot\":false,\"presence\":\"active\"}],\"cache_version\":\"v12-rats\",\"cache_ts_version\":\"v1-cat\",\"bots\":[{\"id\":\"B0H6AU1HT\",\"deleted\":false,\"name\":\"bot\",\"icons\":{\"image_36\":\"https:\\/\\/slack.global.ssl.fastly.net\\/12b5a\\/plugins\\/bot\\/assets\\/service_36.png\",\"image_48\":\"https:\\/\\/slack.global.ssl.fastly.net\\/12b5a\\/plugins\\/bot\\/assets\\/service_48.png\",\"image_72\":\"https:\\/\\/slack.global.ssl.fastly.net\\/12b5a\\/plugins\\/bot\\/assets\\/service_72.png\"}},{\"id\":\"B0H6F5BDE\",\"deleted\":false,\"name\":\"gdrive\"},{\"id\":\"B0HEF7LJY\",\"deleted\":false,\"name\":\"bot\",\"icons\":{\"image_36\":\"https:\\/\\/slack.global.ssl.fastly.net\\/12b5a\\/plugins\\/bot\\/assets\\/service_36.png\",\"image_48\":\"https:\\/\\/slack.global.ssl.fastly.net\\/12b5a\\/plugins\\/bot\\/assets\\/service_48.png\",\"image_72\":\"https:\\/\\/slack.global.ssl.fastly.net\\/12b5a\\/plugins\\/bot\\/assets\\/service_72.png\"}},{\"id\":\"B0KE9SE83\",\"deleted\":false,\"name\":\"Spectrum 2\",\"icons\":{\"image_36\":\"https:\\/\\/slack.global.ssl.fastly.net\\/12b5a\\/plugins\\/app\\/assets\\/service_36.png\",\"image_48\":\"https:\\/\\/slack.global.ssl.fastly.net\\/12b5a\\/plugins\\/app\\/assets\\/service_48.png\",\"image_72\":\"https:\\/\\/slack.global.ssl.fastly.net\\/12b5a\\/plugins\\/app\\/assets\\/service_72.png\"}}],\"url\":\"wss:\\/\\/ms607.slack-msgs.com\\/websocket\\/P6BdMTQcX83UnlK9A-hsD7PSvinTcLSTM4n5X01JEsQNdzSn6lFpQpNgcSIBy4bxtMC0zjrlTEGVMnyjYFdwEWOj8x8JLA79CqGmNEqzQigWxJamv_RFwPq30_ICOaMGHtdLNerb3Ir749rK_ConnQ==\"}";
 
		}
 

	
 
		void tearDown (void) {
 
			delete m_rtm;
 
			delete m_idManager;
 
			tearMeDown();
 
		}
 

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

	
 
			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_TEST_SUITE_REGISTRATION (SlackRTMTest);
0 comments (0 inline, 0 general)