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 |