void handleRawXML() { cfg->updateBackendConfig("[features]\nrawxml=1\n"); User *user = userManager->getUser("user@localhost"); std::vector<std::string> grp; grp.push_back("group1"); LocalBuddy *buddy = new LocalBuddy(user->getRosterManager(), -1, "*****@*****.**", "Buddy 1", grp, BUDDY_JID_ESCAPING); user->getRosterManager()->setBuddy(buddy); received.clear(); std::string xml = "<presence from='[email protected]/res' to='user@localhost'/>"; serv->handleRawXML(xml); std::string xml2 = "<presence from='[email protected]/res2' to='user@localhost'/>"; serv->handleRawXML(xml2); CPPUNIT_ASSERT_EQUAL(2, (int) received.size()); CPPUNIT_ASSERT(dynamic_cast<Swift::Presence *>(getStanza(received[0]))); CPPUNIT_ASSERT_EQUAL(std::string("buddy1\\40domain.tld@localhost/res"), dynamic_cast<Swift::Presence *>(getStanza(received[0]))->getFrom().toString()); CPPUNIT_ASSERT(dynamic_cast<Swift::Presence *>(getStanza(received[1]))); CPPUNIT_ASSERT_EQUAL(std::string("buddy1\\40domain.tld@localhost/res2"), dynamic_cast<Swift::Presence *>(getStanza(received[1]))->getFrom().toString()); received.clear(); user->getRosterManager()->sendUnavailablePresences("user@localhost"); CPPUNIT_ASSERT_EQUAL(3, (int) received.size()); CPPUNIT_ASSERT(dynamic_cast<Swift::Presence *>(getStanza(received[0]))); CPPUNIT_ASSERT_EQUAL(std::string("buddy1\\40domain.tld@localhost/res"), dynamic_cast<Swift::Presence *>(getStanza(received[0]))->getFrom().toString()); CPPUNIT_ASSERT_EQUAL(Swift::Presence::Unavailable, dynamic_cast<Swift::Presence *>(getStanza(received[0]))->getType()); CPPUNIT_ASSERT(dynamic_cast<Swift::Presence *>(getStanza(received[1]))); CPPUNIT_ASSERT_EQUAL(std::string("buddy1\\40domain.tld@localhost/res2"), dynamic_cast<Swift::Presence *>(getStanza(received[1]))->getFrom().toString()); CPPUNIT_ASSERT_EQUAL(Swift::Presence::Unavailable, dynamic_cast<Swift::Presence *>(getStanza(received[1]))->getType()); }
void handleMessageHeadline() { User *user = userManager->getUser("user@localhost"); pbnetwork::ConversationMessage m; m.set_username("user@localhost"); m.set_buddyname("user"); m.set_message("msg"); m.set_nickname(""); m.set_xhtml(""); m.set_timestamp(""); m.set_headline(true); std::string message; m.SerializeToString(&message); serv->handleConvMessagePayload(message, false); CPPUNIT_ASSERT_EQUAL(1, (int) received.size()); CPPUNIT_ASSERT(dynamic_cast<Swift::Message *>(getStanza(received[0]))); CPPUNIT_ASSERT_EQUAL(Swift::Message::Chat, dynamic_cast<Swift::Message *>(getStanza(received[0]))->getType()); received.clear(); user->addUserSetting("send_headlines", "1"); serv->handleConvMessagePayload(message, false); CPPUNIT_ASSERT_EQUAL(1, (int) received.size()); CPPUNIT_ASSERT(dynamic_cast<Swift::Message *>(getStanza(received[0]))); CPPUNIT_ASSERT_EQUAL(Swift::Message::Headline, dynamic_cast<Swift::Message *>(getStanza(received[0]))->getType()); }
void handleRawXML() { User *user = userManager->getUser("user@localhost"); std::string xml = "<presence from='*****@*****.**' to='user@localhost'/>"; serv->handleRawXML(xml); CPPUNIT_ASSERT_EQUAL(1, (int) received.size()); CPPUNIT_ASSERT(dynamic_cast<Swift::Presence *>(getStanza(received[0]))); CPPUNIT_ASSERT_EQUAL(std::string("buddy1\\40domain.tld@localhost"), dynamic_cast<Swift::Presence *>(getStanza(received[0]))->getFrom().toString()); }
void benchmarkSendUnavailablePresence() { Clock clk; std::vector<std::string> lst; for (int i = 0; i < 1000; i++) { pbnetwork::Buddy buddy; buddy.set_username("user@localhost"); buddy.set_buddyname("buddy" + boost::lexical_cast<std::string>(i) + "@test"); buddy.set_status((pbnetwork::StatusType) 5); std::string message; buddy.SerializeToString(&message); lst.push_back(message); } std::vector<std::string> lst2; for (int i = 0; i < 1000; i++) { pbnetwork::Buddy buddy; buddy.set_username("user@localhost"); buddy.set_buddyname("buddy" + boost::lexical_cast<std::string>(1000+i) + "@test"); buddy.set_status((pbnetwork::StatusType) 2); std::string message; buddy.SerializeToString(&message); lst2.push_back(message); } for (int i = 0; i < 1000; i++) { serv->handleBuddyChangedPayload(lst[i]); received.clear(); } for (int i = 0; i < 1000; i++) { serv->handleBuddyChangedPayload(lst2[i]); received.clear(); } User *user = userManager->getUser("user@localhost"); clk.start(); user->getRosterManager()->sendUnavailablePresences("user@localhost"); clk.end(); std::cerr << " " << clk.elapsedTime() << " s"; }
void handleBuddyChangedPayloadUserContactInRoster() { User *user = userManager->getUser("user@localhost"); pbnetwork::Buddy buddy; buddy.set_username("user@localhost"); buddy.set_buddyname("user"); std::string message; buddy.SerializeToString(&message); serv->handleBuddyChangedPayload(message); CPPUNIT_ASSERT_EQUAL(0, (int) received.size()); }
void handleBuddyChangedPayload() { User *user = userManager->getUser("user@localhost"); pbnetwork::Buddy buddy; buddy.set_username("user@localhost"); buddy.set_buddyname("buddy1@test"); buddy.set_status(pbnetwork::STATUS_NONE); std::string message; buddy.SerializeToString(&message); serv->handleBuddyChangedPayload(message); CPPUNIT_ASSERT_EQUAL(1, (int) received.size()); Swift::RosterPayload::ref payload1 = getStanza(received[0])->getPayload<Swift::RosterPayload>(); CPPUNIT_ASSERT_EQUAL(1, (int) payload1->getItems().size()); Swift::RosterItemPayload item = payload1->getItems()[0]; CPPUNIT_ASSERT_EQUAL(std::string("buddy1\\40test@localhost"), item.getJID().toString()); }
void handleRawXMLIQ() { cfg->updateBackendConfig("[features]\nrawxml=1\n"); User *user = userManager->getUser("user@localhost"); std::vector<std::string> grp; grp.push_back("group1"); LocalBuddy *buddy = new LocalBuddy(user->getRosterManager(), -1, "*****@*****.**", "Buddy 1", grp, BUDDY_JID_ESCAPING); user->getRosterManager()->setBuddy(buddy); received.clear(); std::string xml = "<iq from='[email protected]/res' to='user@localhost' type='get' id='1'/>"; serv->handleRawXML(xml); CPPUNIT_ASSERT_EQUAL(1, (int) received.size()); CPPUNIT_ASSERT(dynamic_cast<Swift::IQ *>(getStanza(received[0]))); CPPUNIT_ASSERT_EQUAL(Swift::IQ::Get, dynamic_cast<Swift::IQ *>(getStanza(received[0]))->getType()); injectIQ(Swift::IQ::createResult(getStanza(received[0])->getFrom(), getStanza(received[0])->getTo(), getStanza(received[0])->getID())); loop->processEvents(); pbnetwork::WrapperMessage wrapper; wrapper.ParseFromArray(&protobufData[4], protobufData.size()); CPPUNIT_ASSERT_EQUAL(pbnetwork::WrapperMessage_Type_TYPE_RAW_XML, wrapper.type()); }
void handleBuddyChangedPayloadNoEscaping() { std::istringstream ifs("service.server_mode = 1\nservice.jid_escaping=0\nservice.jid=localhost\nservice.more_resources=1\n"); cfg->load(ifs); User *user = userManager->getUser("user@localhost"); pbnetwork::Buddy buddy; buddy.set_username("user@localhost"); buddy.set_buddyname("buddy1@test"); buddy.set_status(pbnetwork::STATUS_NONE); std::string message; buddy.SerializeToString(&message); serv->handleBuddyChangedPayload(message); CPPUNIT_ASSERT_EQUAL(1, (int) received.size()); Swift::RosterPayload::ref payload1 = getStanza(received[0])->getPayload<Swift::RosterPayload>(); CPPUNIT_ASSERT_EQUAL(1, (int) payload1->getItems().size()); Swift::RosterItemPayload item = payload1->getItems()[0]; CPPUNIT_ASSERT_EQUAL(std::string("buddy1%test@localhost"), item.getJID().toString()); std::istringstream ifs2("service.server_mode = 1\nservice.jid_escaping=1\nservice.jid=localhost\nservice.more_resources=1\n"); cfg->load(ifs2); }
void handleConvMessageAckPayload() { handleMessageHeadline(); received.clear(); User *user = userManager->getUser("user@localhost"); pbnetwork::ConversationMessage m; m.set_username("user@localhost"); m.set_buddyname("user"); m.set_message(""); m.set_nickname(""); m.set_id("testingid"); m.set_xhtml(""); m.set_timestamp(""); m.set_headline(true); std::string message; m.SerializeToString(&message); serv->handleConvMessageAckPayload(message); CPPUNIT_ASSERT_EQUAL(1, (int) received.size()); CPPUNIT_ASSERT(dynamic_cast<Swift::Message *>(getStanza(received[0]))); CPPUNIT_ASSERT(dynamic_cast<Swift::Message *>(getStanza(received[0]))->getPayload<Swift::DeliveryReceipt>()); CPPUNIT_ASSERT_EQUAL(std::string("testingid"), dynamic_cast<Swift::Message *>(getStanza(received[0]))->getPayload<Swift::DeliveryReceipt>()->getReceivedID()); }