Ejemplo n.º 1
0
TEST(CookieDecoderTest, testDecodingCommaSeparatedClientSideCookies) {
    String source =
        "$Version=\"1\"; session_id=\"1234\", " +
        "$Version=\"1\"; session_id=\"1111\"; $Domain=\".cracker.edu\"";

    Set<Cookie> cookies = CookieDecoder.decode(source);
    Iterator<Cookie> it = cookies.iterator();
    Cookie c;

    assertTrue(it.hasNext());
    c = it.next();
    assertEquals(1, c.getVersion());
    assertEquals("session_id", c.getName());
    assertEquals("1234", c.getValue());
    assertNull(c.getPath());
    assertNull(c.getComment());
    assertNull(c.getCommentUrl());
    assertNull(c.getDomain());
    assertTrue(c.getPorts().isEmpty());
    assertEquals(Long.MIN_VALUE, c.getMaxAge());

    assertTrue(it.hasNext());
    c = it.next();
    assertEquals(1, c.getVersion());
    assertEquals("session_id", c.getName());
    assertEquals("1111", c.getValue());
    assertEquals(".cracker.edu", c.getDomain());
    assertNull(c.getPath());
    assertNull(c.getComment());
    assertNull(c.getCommentUrl());
    assertTrue(c.getPorts().isEmpty());
    assertEquals(Long.MIN_VALUE, c.getMaxAge());

    assertFalse(it.hasNext());
}
Ejemplo n.º 2
0
TEST(CookieDecoderTest, testDecodingClientSideCookies) {
    String source = "$Version=\"1\"; " +
                    "Part_Number=\"Riding_Rocket_0023\"; $Path=\"/acme/ammo\"; " +
                    "Part_Number=\"Rocket_Launcher_0001\"; $Path=\"/acme\"";

    Set<Cookie> cookies = CookieDecoder.decode(source);
    Iterator<Cookie> it = cookies.iterator();
    Cookie c;

    c = it.next();
    assertEquals(1, c.getVersion());
    assertEquals("Part_Number", c.getName());
    assertEquals("Rocket_Launcher_0001", c.getValue());
    assertEquals("/acme", c.getPath());
    assertNull(c.getComment());
    assertNull(c.getCommentUrl());
    assertNull(c.getDomain());
    assertTrue(c.getPorts().isEmpty());
    assertEquals(Long.MIN_VALUE, c.getMaxAge());

    c = it.next();
    assertEquals(1, c.getVersion());
    assertEquals("Part_Number", c.getName());
    assertEquals("Riding_Rocket_0023", c.getValue());
    assertEquals("/acme/ammo", c.getPath());
    assertNull(c.getComment());
    assertNull(c.getCommentUrl());
    assertNull(c.getDomain());
    assertTrue(c.getPorts().isEmpty());
    assertEquals(Long.MIN_VALUE, c.getMaxAge());

    assertFalse(it.hasNext());
}
Ejemplo n.º 3
0
TEST(CookieDecoderTest, testDecodingValuesWithCommasAndEquals) {
    String src = "A=v=1&lg=en-US,it-IT,it&intl=it&np=1;T=z=E";
    Set<Cookie> cookies = CookieDecoder.decode(src);
    Iterator<Cookie> i = cookies.iterator();
    Cookie c = i.next();
    assertEquals("A", c.getName());
    assertEquals("v=1&lg=en-US,it-IT,it&intl=it&np=1", c.getValue());
    c = i.next();
    assertEquals("T", c.getName());
    assertEquals("z=E", c.getValue());
}
Ejemplo n.º 4
0
TEST(CookieDecoderTest, testDecodingWeirdNames2) {
    String src = "HTTPOnly=";
    Set<Cookie> cookies = CookieDecoder.decode(src);
    Cookie c = cookies.iterator().next();
    assertEquals("HTTPOnly", c.getName());
    assertEquals("", c.getValue());
}
Ejemplo n.º 5
0
TEST(CookieDecoderTest, testDecodingMultipleCookies) {
    String c1 = "myCookie=myValue;max-age=50;path=/apathsomewhere;domain=.adomainsomewhere;secure;comment=this is a comment;version=2;commentURL=\"http://aurl.com\";port='80,8080';discard;";
    String c2 = "myCookie2=myValue2;max-age=0;path=/anotherpathsomewhere;domain=.anotherdomainsomewhere;comment=this is another comment;version=2;commentURL=http://anotherurl.com;";
    String c3 = "myCookie3=myValue3;max-age=0;version=2;";

    Set<Cookie> cookies = CookieDecoder.decode(c1 + c2 + c3);
    assertEquals(3, cookies.size());
    Iterator<Cookie> it = cookies.iterator();
    Cookie cookie = it.next();
    assertNotNull(cookie);
    assertEquals("myValue", cookie.getValue());
    assertEquals("this is a comment", cookie.getComment());
    assertEquals("http://aurl.com", cookie.getCommentUrl());
    assertEquals(".adomainsomewhere", cookie.getDomain());
    assertTrue(cookie.isDiscard());
    assertEquals(50, cookie.getMaxAge());
    assertEquals("/apathsomewhere", cookie.getPath());
    assertEquals(2, cookie.getPorts().size());
    assertTrue(cookie.getPorts().contains(80));
    assertTrue(cookie.getPorts().contains(8080));
    assertTrue(cookie.isSecure());
    assertEquals(2, cookie.getVersion());
    cookie = it.next();
    assertNotNull(cookie);
    assertEquals("myValue2", cookie.getValue());
    assertEquals("this is another comment", cookie.getComment());
    assertEquals("http://anotherurl.com", cookie.getCommentUrl());
    assertEquals(".anotherdomainsomewhere", cookie.getDomain());
    assertFalse(cookie.isDiscard());
    assertEquals(0, cookie.getMaxAge());
    assertEquals("/anotherpathsomewhere", cookie.getPath());
    assertTrue(cookie.getPorts().isEmpty());
    assertFalse(cookie.isSecure());
    assertEquals(2, cookie.getVersion());
    cookie = it.next();
    assertNotNull(cookie);
    assertEquals("myValue3", cookie.getValue());
    assertNull(cookie.getComment());
    assertNull(cookie.getCommentUrl());
    assertNull(cookie.getDomain());
    assertFalse(cookie.isDiscard());
    assertEquals(0, cookie.getMaxAge());
    assertNull(cookie.getPath());
    assertTrue(cookie.getPorts().isEmpty());
    assertFalse(cookie.isSecure());
    assertEquals(2, cookie.getVersion());
}
Ejemplo n.º 6
0
TEST(CookieDecoderTest, testDecodingWeirdNames1) {
    String src = "path=; expires=Mon, 01-Jan-1990 00:00:00 GMT; path=/; domain=.www.google.com";
    Set<Cookie> cookies = CookieDecoder.decode(src);
    Cookie c = cookies.iterator().next();
    assertEquals("path", c.getName());
    assertEquals("", c.getValue());
    assertEquals("/", c.getPath());
}
Ejemplo n.º 7
0
TEST(CookieDecoderTest, testDecodingQuotedCookie) {
    String source =
        "a=\"\"," +
        "b=\"1\"," +
        "c=\"\\\"1\\\"2\\\"\"," +
        "d=\"1\\\"2\\\"3\"," +
        "e=\"\\\"\\\"\"," +
        "f=\"1\\\"\\\"2\"," +
        "g=\"\\\\\"," +
        "h=\"';,\\x\"";


    Set<Cookie> cookies = CookieDecoder.decode(source);
    Iterator<Cookie> it = cookies.iterator();
    Cookie c;

    c = it.next();
    assertEquals("a", c.getName());
    assertEquals("", c.getValue());

    c = it.next();
    assertEquals("b", c.getName());
    assertEquals("1", c.getValue());

    c = it.next();
    assertEquals("c", c.getName());
    assertEquals("\"1\"2\"", c.getValue());

    c = it.next();
    assertEquals("d", c.getName());
    assertEquals("1\"2\"3", c.getValue());

    c = it.next();
    assertEquals("e", c.getName());
    assertEquals("\"\"", c.getValue());

    c = it.next();
    assertEquals("f", c.getName());
    assertEquals("1\"\"2", c.getValue());

    c = it.next();
    assertEquals("g", c.getName());
    assertEquals("\\", c.getValue());

    c = it.next();
    assertEquals("h", c.getName());
    assertEquals("';,\\x", c.getValue());

    assertFalse(it.hasNext());
}
Ejemplo n.º 8
0
TEST(CookieDecoderTest, testDecodingGoogleAnalyticsCookie) {
    String source =
        "ARPT=LWUKQPSWRTUN04CKKJI; " +
        "kw-2E343B92-B097-442c-BFA5-BE371E0325A2=unfinished furniture; " +
        "__utma=48461872.1094088325.1258140131.1258140131.1258140131.1; " +
        "__utmb=48461872.13.10.1258140131; __utmc=48461872; " +
        "__utmz=48461872.1258140131.1.1.utmcsr=overstock.com|utmccn=(referral)|utmcmd=referral|utmcct=/Home-Garden/Furniture/Clearance,/clearance,/32/dept.html";
    Set<Cookie> cookies = CookieDecoder.decode(source);
    Iterator<Cookie> it = cookies.iterator();
    Cookie c;

    c = it.next();
    assertEquals("__utma", c.getName());
    assertEquals("48461872.1094088325.1258140131.1258140131.1258140131.1", c.getValue());

    c = it.next();
    assertEquals("__utmb", c.getName());
    assertEquals("48461872.13.10.1258140131", c.getValue());

    c = it.next();
    assertEquals("__utmc", c.getName());
    assertEquals("48461872", c.getValue());

    c = it.next();
    assertEquals("__utmz", c.getName());
    assertEquals("48461872.1258140131.1.1.utmcsr=overstock.com|utmccn=(referral)|utmcmd=referral|utmcct=/Home-Garden/Furniture/Clearance,/clearance,/32/dept.html", c.getValue());

    c = it.next();
    assertEquals("ARPT", c.getName());
    assertEquals("LWUKQPSWRTUN04CKKJI", c.getValue());

    c = it.next();
    assertEquals("kw-2E343B92-B097-442c-BFA5-BE371E0325A2", c.getName());
    assertEquals("unfinished furniture", c.getValue());

    assertFalse(it.hasNext());
}
Ejemplo n.º 9
0
TEST(CookieDecoderTest,testDecodingSingleCookieV1) {
    String cookieString = "myCookie=myValue;max-age=50;path=/apathsomewhere;domain=.adomainsomewhere;secure;comment=this is a comment;version=1;";
    Set<Cookie> cookies = CookieDecoder.decode(cookieString);
    assertEquals(1, cookies.size());
    Cookie cookie = cookies.iterator().next();
    assertEquals("myValue", cookie.getValue());
    assertNotNull(cookie);
    assertEquals("this is a comment", cookie.getComment());
    assertNull(cookie.getCommentUrl());
    assertEquals(".adomainsomewhere", cookie.getDomain());
    assertFalse(cookie.isDiscard());
    assertEquals(50, cookie.getMaxAge());
    assertEquals("/apathsomewhere", cookie.getPath());
    assertTrue(cookie.getPorts().isEmpty());
    assertTrue(cookie.isSecure());
    assertEquals(1, cookie.getVersion());
}
Ejemplo n.º 10
0
TEST(CookieDecoderTest,testDecodingSingleCookieV2) {
    String cookieString = "myCookie=myValue;max-age=50;path=/apathsomewhere;domain=.adomainsomewhere;secure;comment=this is a comment;version=2;commentURL=http://aurl.com;port=\"80,8080\";discard;";
    Set<Cookie> cookies = CookieDecoder.decode(cookieString);
    assertEquals(1, cookies.size());
    Cookie cookie = cookies.iterator().next();
    assertNotNull(cookie);
    assertEquals("myValue", cookie.getValue());
    assertEquals("this is a comment", cookie.getComment());
    assertEquals("http://aurl.com", cookie.getCommentUrl());
    assertEquals(".adomainsomewhere", cookie.getDomain());
    assertTrue(cookie.isDiscard());
    assertEquals(50, cookie.getMaxAge());
    assertEquals("/apathsomewhere", cookie.getPath());
    assertEquals(2, cookie.getPorts().size());
    assertTrue(cookie.getPorts().contains(80));
    assertTrue(cookie.getPorts().contains(8080));
    assertTrue(cookie.isSecure());
    assertEquals(2, cookie.getVersion());
}
Ejemplo n.º 11
0
string CookieList::escapeCookies() const
{
	string cookie_parameter("");
	bool first = true;
	auto it = cookie_list_.cbegin();
	while(it != cookie_list_.cend())
	{
		if(first == true)
		{
			first = false;
		}
		else
		{
			cookie_parameter += ";";
		}

		Cookie cookie = (*it);
		cookie_parameter += (cookie.getName() + "=" + cookie.getValue());

		++it;
	}
	return cookie_parameter;
}
Ejemplo n.º 12
0
  void ScopeManager::preCall(HttpRequest& request, const std::string& app)
  {
    // check session-cookie
    std::string currentSessionCookieName = app.empty() ? std::string("tntnet") : "tntnet." + app;
    std::string currentSecureSessionCookieName = app.empty() ? std::string("stntnet") : "stntnet." + app;

    Cookie c = request.getCookie(currentSessionCookieName);
    if (c.getValue().empty())
    {
      /*
      cxxtools::MutexLock lock(sessionScopesMutex);
      log_debug(sessionScopes.size() << " sessions available");
      for (sessionscopes_type::iterator it = sessionScopes.begin(); it != sessionScopes.end(); ++it)
        log_debug("available session " << it->first << " value " << it->second);
        */

      log_debug("session cookie " << currentSessionCookieName << " not found - keep session");
    }
    else
    {
      log_debug("session cookie " << currentSessionCookieName << " found: " << c.getValue());

      cxxtools::MutexLock lock(sessionScopesMutex);

      Sessionscope* sessionScope;

      sessionscopes_type::iterator it = sessionScopes.find(c.getValue());
      if (it == sessionScopes.end())
      {
        log_debug("session not found - create new");
        sessionScope = new Sessionscope();
        sessionScope->addRef();
        sessionScopes.insert(sessionscopes_type::value_type(c.getValue(), sessionScope));
      }
      else
      {
        log_debug("session found");
        sessionScope = it->second;
        sessionScope->touch();
      }

      request.setSessionScope(sessionScope);
    }

    if (request.isSsl())
    {
      c = request.getCookie(currentSecureSessionCookieName);
      if (c.getValue().empty())
      {
        log_debug("secure session cookie " << currentSessionCookieName
            << " not found - keep session");
      }
      else if (request.isSsl())
      {
        log_debug("secure session cookie " << currentSessionCookieName
            << " found: " << c.getValue());

        cxxtools::MutexLock lock(sessionScopesMutex);

        Sessionscope* sessionScope;

        sessionscopes_type::iterator it = sessionScopes.find(c.getValue());
        if (it == sessionScopes.end())
        {
          log_debug("session not found - create new");
          sessionScope = new Sessionscope();
          sessionScope->addRef();
          sessionScopes.insert(sessionscopes_type::value_type(c.getValue(), sessionScope));
        }
        else
        {
          log_debug("session found");
          sessionScope = it->second;
          sessionScope->touch();
        }

        request.setSecureSessionScope(sessionScope);
      }
    }
    else
    {
      log_debug("secure session cookie " << currentSessionCookieName
          << " not checked in non ssl request");
    }

    // set application-scope
    request.setApplicationScope(getApplicationScope(app));
  }
Ejemplo n.º 13
0
TEST(CookieDecoderTest, testDecodingValueWithComma) {
    String source = "UserCookie=timeZoneName=(GMT+04:00) Moscow, St. Petersburg, Volgograd&promocode=&region=BE;" +
                    " expires=Sat, 01-Dec-2012 10:53:31 GMT; path=/";

    Set<Cookie> cookies = CookieDecoder.decode(source);

    Cookie c = cookies.iterator().next();
    assertEquals("timeZoneName=(GMT+04:00) Moscow, St. Petersburg, Volgograd&promocode=&region=BE", c.getValue());
}