diff options
Diffstat (limited to 'Swiften/QA/StorageTest')
-rw-r--r-- | Swiften/QA/StorageTest/.gitignore | 1 | ||||
-rw-r--r-- | Swiften/QA/StorageTest/SConscript | 17 | ||||
-rw-r--r-- | Swiften/QA/StorageTest/VCardFileStorageTest.cpp | 78 |
3 files changed, 96 insertions, 0 deletions
diff --git a/Swiften/QA/StorageTest/.gitignore b/Swiften/QA/StorageTest/.gitignore new file mode 100644 index 0000000..10d2e31 --- /dev/null +++ b/Swiften/QA/StorageTest/.gitignore @@ -0,0 +1 @@ +StorageTest diff --git a/Swiften/QA/StorageTest/SConscript b/Swiften/QA/StorageTest/SConscript new file mode 100644 index 0000000..c7401e0 --- /dev/null +++ b/Swiften/QA/StorageTest/SConscript @@ -0,0 +1,17 @@ +import os + +Import("env") + +if env["TEST"] : + myenv = env.Clone() + myenv.MergeFlags(myenv["CHECKER_FLAGS"]) + myenv.MergeFlags(myenv["SWIFTEN_FLAGS"]) + myenv.MergeFlags(myenv["CPPUNIT_FLAGS"]) + myenv.MergeFlags(myenv["BOOST_FLAGS"]) + myenv.MergeFlags(myenv["LIBIDN_FLAGS"]) + myenv.MergeFlags(myenv.get("EXPAT_FLAGS", {})) + + tester = myenv.Program("StorageTest", [ + "VCardFileStorageTest.cpp", + ]) + myenv.Test(tester, "system") diff --git a/Swiften/QA/StorageTest/VCardFileStorageTest.cpp b/Swiften/QA/StorageTest/VCardFileStorageTest.cpp new file mode 100644 index 0000000..9704409 --- /dev/null +++ b/Swiften/QA/StorageTest/VCardFileStorageTest.cpp @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include <cppunit/extensions/HelperMacros.h> +#include <cppunit/extensions/TestFactoryRegistry.h> + +#include "Swiften/VCards/VCardFileStorage.h" +#include "Swiften/JID/JID.h" +#include "Swiften/Application/PlatformApplicationPathProvider.h" +#include "Swiften/Elements/VCard.h" + +using namespace Swift; + +class VCardFileStorageTest : public CppUnit::TestFixture { + CPPUNIT_TEST_SUITE(VCardFileStorageTest); + CPPUNIT_TEST(testSetVCard); + CPPUNIT_TEST(testGetVCard); + CPPUNIT_TEST(testGetVCard_FileDoesNotExist); + CPPUNIT_TEST_SUITE_END(); + + public: + void setUp() { + pathProvider = new PlatformApplicationPathProvider("VCardStorageTest"); + vcardsPath = pathProvider->getExecutableDir() / "vcards"; + boost::filesystem::remove_all(vcardsPath); + } + + void tearDown() { + delete pathProvider; + boost::filesystem::remove_all(vcardsPath); + } + + void testSetVCard() { + std::auto_ptr<VCardFileStorage> testling(createTestling()); + VCard::ref vcard(new VCard()); + vcard->setFullName("Alice In Wonderland"); + vcard->setEMail("alice@wonderland.lit"); + + testling->setVCard(JID("alice@wonderland.lit"), vcard); + + boost::filesystem::path vcardFile(vcardsPath / "alice@wonderland.lit.xml"); + CPPUNIT_ASSERT(boost::filesystem::exists(vcardFile)); + ByteArray data; + data.readFromFile(vcardFile.string()); + CPPUNIT_ASSERT(data.toString().beginsWith("<vCard xmlns=\"vcard-temp\">")); + } + + void testGetVCard() { + std::auto_ptr<VCardFileStorage> testling(createTestling()); + VCard::ref vcard(new VCard()); + vcard->setFullName("Alice In Wonderland"); + vcard->setEMail("alice@wonderland.lit"); + testling->setVCard(JID("alice@wonderland.lit"), vcard); + + VCard::ref result = testling->getVCard(JID("alice@wonderland.lit")); + CPPUNIT_ASSERT_EQUAL(String("Alice In Wonderland"), result->getFullName()); + CPPUNIT_ASSERT_EQUAL(String("alice@wonderland.lit"), result->getEMail()); + } + + void testGetVCard_FileDoesNotExist() { + std::auto_ptr<VCardFileStorage> testling(createTestling()); + VCard::ref result = testling->getVCard(JID("alice@wonderland.lit")); + CPPUNIT_ASSERT(!result); + } + + private: + VCardFileStorage* createTestling() { + return new VCardFileStorage(vcardsPath); + } + + PlatformApplicationPathProvider* pathProvider; + boost::filesystem::path vcardsPath; +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(VCardFileStorageTest); |