diff options
Diffstat (limited to 'indra/llplugin/tests/llplugincookiestore_test.cpp')
-rw-r--r-- | indra/llplugin/tests/llplugincookiestore_test.cpp | 207 |
1 files changed, 0 insertions, 207 deletions
diff --git a/indra/llplugin/tests/llplugincookiestore_test.cpp b/indra/llplugin/tests/llplugincookiestore_test.cpp deleted file mode 100644 index c2cb236cba..0000000000 --- a/indra/llplugin/tests/llplugincookiestore_test.cpp +++ /dev/null @@ -1,207 +0,0 @@ -/** - * @file llplugincookiestore_test.cpp - * @brief Unit tests for LLPluginCookieStore. - * - * @cond - * $LicenseInfo:firstyear=2010&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - * @endcond - */ - -#include "linden_common.h" -#include <list> -#include "../test/lltut.h" - -#include "../llplugincookiestore.h" - - -namespace tut -{ - // Main Setup - struct LLPluginCookieStoreFixture - { - LLPluginCookieStoreFixture() - { - // We need dates definitively in the past and the future to properly test cookie expiration. - LLDate now = LLDate::now(); - LLDate past(now.secondsSinceEpoch() - (60.0 * 60.0 * 24.0)); // 1 day in the past - LLDate future(now.secondsSinceEpoch() + (60.0 * 60.0 * 24.0)); // 1 day in the future - - mPastString = past.asRFC1123(); - mFutureString = future.asRFC1123(); - } - - std::string mPastString; - std::string mFutureString; - LLPluginCookieStore mCookieStore; - - // List of cookies used for validation - std::list<std::string> mCookies; - - // This sets up mCookies from a string returned by one of the functions in LLPluginCookieStore - void setCookies(const std::string &cookies) - { - mCookies.clear(); - std::string::size_type start = 0; - - while(start != std::string::npos) - { - std::string::size_type end = cookies.find_first_of("\r\n", start); - if(end > start) - { - std::string line(cookies, start, end - start); - if(line.find_first_not_of("\r\n\t ") != std::string::npos) - { - // The line has some non-whitespace characters. Save it to the list. - mCookies.push_back(std::string(cookies, start, end - start)); - } - } - start = cookies.find_first_not_of("\r\n ", end); - } - } - - // This ensures that a cookie matching the one passed is in the list. - void ensureCookie(const std::string &cookie) - { - std::list<std::string>::iterator iter; - for(iter = mCookies.begin(); iter != mCookies.end(); iter++) - { - if(*iter == cookie) - { - // Found the cookie - // TODO: this should do a smarter equality comparison on the two cookies, instead of just a string compare. - return; - } - } - - // Didn't find this cookie - std::string message = "cookie not found: "; - message += cookie; - ensure(message, false); - } - - // This ensures that the number of cookies in the list matches what's expected. - void ensureSize(const std::string &message, size_t size) - { - if(mCookies.size() != size) - { - std::stringstream full_message; - - full_message << message << " (expected " << size << ", actual " << mCookies.size() << ")"; - ensure(full_message.str(), false); - } - } - }; - - typedef test_group<LLPluginCookieStoreFixture> factory; - typedef factory::object object; - factory tf("LLPluginCookieStore"); - - // Tests - template<> template<> - void object::test<1>() - { - // Test 1: cookie uniqueness and update lists. - // Valid, distinct cookies: - - std::string cookie01 = "cookieA=value; domain=example.com; path=/"; - std::string cookie02 = "cookieB=value; Domain=example.com; Path=/; Max-Age=10; Secure; Version=1; Comment=foo!; HTTPOnly"; // cookie with every supported field, in different cases. - std::string cookie03 = "cookieA=value; domain=foo.example.com; path=/"; // different domain - std::string cookie04 = "cookieA=value; domain=example.com; path=/bar/"; // different path - std::string cookie05 = "cookieC; domain=example.com; path=/"; // empty value - std::string cookie06 = "cookieD=value; domain=example.com; path=/; expires="; // different name, persistent cookie - cookie06 += mFutureString; - - mCookieStore.setCookies(cookie01); - mCookieStore.setCookies(cookie02); - mCookieStore.setCookies(cookie03); - mCookieStore.setCookies(cookie04); - mCookieStore.setCookies(cookie05); - mCookieStore.setCookies(cookie06); - - // Invalid cookies (these will get parse errors and not be added to the store) - - std::string badcookie01 = "cookieD=value; domain=example.com; path=/; foo=bar"; // invalid field name - std::string badcookie02 = "cookieE=value; path=/"; // no domain - - mCookieStore.setCookies(badcookie01); - mCookieStore.setCookies(badcookie02); - - // All cookies added so far should have been marked as "changed" - setCookies(mCookieStore.getChangedCookies()); - ensureSize("count of changed cookies", 6); - ensureCookie(cookie01); - ensureCookie(cookie02); - ensureCookie(cookie03); - ensureCookie(cookie04); - ensureCookie(cookie05); - ensureCookie(cookie06); - - // Save off the current state of the cookie store (we'll restore it later) - std::string savedCookies = mCookieStore.getAllCookies(); - - // Test replacing cookies - std::string cookie01a = "cookieA=newvalue; domain=example.com; path=/"; // updated value - std::string cookie02a = "cookieB=newvalue; domain=example.com; path=/; expires="; // remove cookie (by setting an expire date in the past) - cookie02a += mPastString; - - mCookieStore.setCookies(cookie01a); - mCookieStore.setCookies(cookie02a); - - // test for getting changed cookies - setCookies(mCookieStore.getChangedCookies()); - ensureSize("count of updated cookies", 2); - ensureCookie(cookie01a); - ensureCookie(cookie02a); - - // and for the state of the store after getting changed cookies - setCookies(mCookieStore.getAllCookies()); - ensureSize("count of valid cookies", 5); - ensureCookie(cookie01a); - ensureCookie(cookie03); - ensureCookie(cookie04); - ensureCookie(cookie05); - ensureCookie(cookie06); - - // Check that only the persistent cookie is returned here - setCookies(mCookieStore.getPersistentCookies()); - ensureSize("count of persistent cookies", 1); - ensureCookie(cookie06); - - // Restore the cookie store to a previous state and verify - mCookieStore.setAllCookies(savedCookies); - - // Since setAllCookies defaults to not marking cookies as changed, this list should be empty. - setCookies(mCookieStore.getChangedCookies()); - ensureSize("count of changed cookies after restore", 0); - - // Verify that the restore worked as it should have. - setCookies(mCookieStore.getAllCookies()); - ensureSize("count of restored cookies", 6); - ensureCookie(cookie01); - ensureCookie(cookie02); - ensureCookie(cookie03); - ensureCookie(cookie04); - ensureCookie(cookie05); - ensureCookie(cookie06); - } - -} |