diff --git a/src/tests/basictest.h b/src/tests/basictest.h index 832cada4a22d35d6592b8b5ef80a9261bfcc6aff..64202f8d547f235ab91d857806a1ccd4e5ff7e80 100644 --- a/src/tests/basictest.h +++ b/src/tests/basictest.h @@ -32,7 +32,10 @@ #include "transport/transport.h" #include "transport/conversation.h" #include "transport/usermanager.h" +#include "transport/userregistration.h" +#include "transport/discoitemsresponder.h" #include "transport/localbuddy.h" +#include "transport/storagebackend.h" #include #include @@ -69,18 +72,112 @@ class TestingFactory : public Factory { // Creates new LocalBuddy Buddy *createBuddy(RosterManager *rosterManager, const BuddyInfo &buddyInfo) { - LocalBuddy *buddy = new LocalBuddy(rosterManager, buddyInfo.id); - buddy->setAlias(buddyInfo.alias); - buddy->setName(buddyInfo.legacyName); + LocalBuddy *buddy = new LocalBuddy(rosterManager, buddyInfo.id, buddyInfo.legacyName, buddyInfo.alias, buddyInfo.groups, (BuddyFlag) buddyInfo.flags); + if (!buddy->isValid()) { + delete buddy; + return NULL; + } buddy->setSubscription(Buddy::Ask); - buddy->setGroups(buddyInfo.groups); - buddy->setFlags((BuddyFlag) buddyInfo.flags); if (buddyInfo.settings.find("icon_hash") != buddyInfo.settings.end()) buddy->setIconHash(buddyInfo.settings.find("icon_hash")->second.s); return buddy; } }; +class TestingStorageBackend : public StorageBackend { + public: + bool connected; + std::map users; + std::map online_users; + long buddyid; + + TestingStorageBackend() { + buddyid = 0; + connected = false; + } + + /// connect + virtual bool connect() { + connected = true; + return true; + } + + /// createDatabase + virtual bool createDatabase() {return true;} + + /// setUser + virtual void setUser(const UserInfo &user) { + users[user.jid] = user; + } + + /// getuser + virtual bool getUser(const std::string &barejid, UserInfo &user) { + if (users.find(barejid) == users.end()) { + return false; + } + user = users[barejid]; + return true; + } + + std::string findUserByID(long id) { + for (std::map::const_iterator it = users.begin(); it != users.end(); it++) { + if (it->second.id == id) { + return it->first; + } + } + return ""; + } + + /// setUserOnline + virtual void setUserOnline(long id, bool online) { + std::string user = findUserByID(id); + if (user.empty()) { + return; + } + online_users[user] = online; + } + + /// removeUser + virtual bool removeUser(long id) { + std::string user = findUserByID(id); + if (user.empty()) { + return false; + } + users.erase(user); + return true; + } + + /// getBuddies + virtual bool getBuddies(long id, std::list &roster) { + return true; + } + + /// getOnlineUsers + virtual bool getOnlineUsers(std::vector &users) { + return true; + } + + virtual long addBuddy(long userId, const BuddyInfo &buddyInfo) { + return buddyid++; + } + virtual void updateBuddy(long userId, const BuddyInfo &buddyInfo) { + + } + + virtual void removeBuddy(long id) { + + } + + virtual void getBuddySetting(long userId, long buddyId, const std::string &variable, int &type, std::string &value) {} + virtual void updateBuddySetting(long userId, long buddyId, const std::string &variable, int type, const std::string &value) {} + + virtual void getUserSetting(long userId, const std::string &variable, int &type, std::string &value) {} + virtual void updateUserSetting(long userId, const std::string &variable, const std::string &value) {} + + virtual void beginTransaction() {} + virtual void commitTransaction() {} +}; + class BasicTest : public Swift::XMPPParserClient { public: @@ -99,6 +196,8 @@ class BasicTest : public Swift::XMPPParserClient { void injectPresence(boost::shared_ptr &response); void injectIQ(boost::shared_ptr iq); + void dumpReceived(); + Swift::Stanza *getStanza(boost::shared_ptr element); protected: @@ -116,5 +215,9 @@ class BasicTest : public Swift::XMPPParserClient { TestingFactory *factory; Component *component; std::vector > received; + std::string receivedData; + StorageBackend *storage; + UserRegistration *userRegistration; + DiscoItemsResponder *itemsResponder; };