Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(780)

Unified Diff: Source/platform/weborigin/SecurityOriginTest.cpp

Issue 1109633002: Basic experimental suborigin CSP directive and SecurityOrigin mods (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase on ToT Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/platform/weborigin/SecurityOrigin.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/platform/weborigin/SecurityOriginTest.cpp
diff --git a/Source/platform/weborigin/SecurityOriginTest.cpp b/Source/platform/weborigin/SecurityOriginTest.cpp
index 2e99b5bdfe31daafc6a5ac39203b1498e363a221..b39138b2f5154e30e83195184b33ba75ba2c153d 100644
--- a/Source/platform/weborigin/SecurityOriginTest.cpp
+++ b/Source/platform/weborigin/SecurityOriginTest.cpp
@@ -31,16 +31,21 @@
#include "config.h"
#include "platform/weborigin/SecurityOrigin.h"
+#include "platform/RuntimeEnabledFeatures.h"
#include "platform/weborigin/KURL.h"
+#include "wtf/text/StringBuilder.h"
+#include "wtf/text/WTFString.h"
#include <gtest/gtest.h>
using blink::SecurityOrigin;
-namespace {
+namespace blink {
const int MaxAllowedPort = 65535;
-TEST(SecurityOriginTest, InvalidPortsCreateUniqueOrigins)
+class SecurityOriginTest : public ::testing::Test { };
+
+TEST_F(SecurityOriginTest, InvalidPortsCreateUniqueOrigins)
{
int ports[] = { -100, -1, MaxAllowedPort + 1, 1000000 };
@@ -50,7 +55,7 @@ TEST(SecurityOriginTest, InvalidPortsCreateUniqueOrigins)
}
}
-TEST(SecurityOriginTest, ValidPortsCreateNonUniqueOrigins)
+TEST_F(SecurityOriginTest, ValidPortsCreateNonUniqueOrigins)
{
int ports[] = { 0, 80, 443, 5000, MaxAllowedPort };
@@ -60,7 +65,7 @@ TEST(SecurityOriginTest, ValidPortsCreateNonUniqueOrigins)
}
}
-TEST(SecurityOriginTest, IsPotentiallyTrustworthy)
+TEST_F(SecurityOriginTest, IsPotentiallyTrustworthy)
{
struct TestCase {
bool accessGranted;
@@ -139,7 +144,7 @@ TEST(SecurityOriginTest, IsPotentiallyTrustworthy)
EXPECT_EQ("Only secure origins are allowed (see: https://goo.gl/Y0ZkNV).", errorMessage);
}
-TEST(SecurityOriginTest, IsSecure)
+TEST_F(SecurityOriginTest, IsSecure)
{
struct TestCase {
bool isSecure;
@@ -166,4 +171,62 @@ TEST(SecurityOriginTest, IsSecure)
EXPECT_FALSE(SecurityOrigin::isSecure(blink::KURL()));
}
+TEST_F(SecurityOriginTest, Suborigins)
+{
+ blink::RuntimeEnabledFeatures::setSuboriginsEnabled(true);
+
+ RefPtr<SecurityOrigin> origin = SecurityOrigin::createFromString("https://test.com");
+ EXPECT_FALSE(origin->hasSuborigin());
+ origin->addSuborigin("foobar");
+ EXPECT_TRUE(origin->hasSuborigin());
+ EXPECT_EQ("foobar", origin->suboriginName());
+
+ origin = SecurityOrigin::createFromString("https://foobar_test.com");
+ EXPECT_EQ("https", origin->protocol());
+ EXPECT_EQ("test.com", origin->host());
+ EXPECT_EQ("foobar", origin->suboriginName());
+
+ origin = SecurityOrigin::createFromString("https://foobar_test.com");
+ EXPECT_TRUE(origin->hasSuborigin());
+ EXPECT_EQ("foobar", origin->suboriginName());
+
+ origin = SecurityOrigin::createFromString("https://foobar+test.com");
+ EXPECT_FALSE(origin->hasSuborigin());
+
+ origin = SecurityOrigin::createFromString("https://_test.com");
+ EXPECT_FALSE(origin->hasSuborigin());
+
+ origin = adoptRef<SecurityOrigin>(new SecurityOrigin);
+ EXPECT_FALSE(origin->hasSuborigin());
+
+ origin = SecurityOrigin::createFromString("https://foobar_test.com");
+ EXPECT_DEATH(origin->addSuborigin("shouldhitassert"), "");
+}
+
+TEST_F(SecurityOriginTest, SuboriginsParsing)
+{
+ blink::RuntimeEnabledFeatures::setSuboriginsEnabled(true);
+ String host, realHost, suborigin;
+ host = "test.com";
+ EXPECT_FALSE(SecurityOrigin::deserializeSuboriginAndHost(host, suborigin, realHost));
+
+ host = "foobar_test.com";
+ EXPECT_TRUE(SecurityOrigin::deserializeSuboriginAndHost(host, suborigin, realHost));
+ EXPECT_EQ("test.com", realHost);
+ EXPECT_EQ("foobar", suborigin);
+
+ RefPtr<SecurityOrigin> origin;
+ StringBuilder builder;
+
+ origin = SecurityOrigin::createFromString("https://foobar_test.com");
+ origin->buildRawString(builder);
+ EXPECT_EQ("https://foobar_test.com", builder.toString());
+
+ builder.clear();
+ origin = SecurityOrigin::createFromString("https://test.com");
+ origin->addSuborigin("foobar");
+ origin->buildRawString(builder);
+ EXPECT_EQ("https://foobar_test.com", builder.toString());
+}
+
} // namespace
« no previous file with comments | « Source/platform/weborigin/SecurityOrigin.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698