TEST_F(SecurityOriginTest, Suborigins) { RuntimeEnabledFeatures::setSuboriginsEnabled(true); RefPtr<SecurityOrigin> origin = SecurityOrigin::createFromString("https://test.com"); Suborigin suborigin; suborigin.setName("foobar"); EXPECT_FALSE(origin->hasSuborigin()); origin->addSuborigin(suborigin); EXPECT_TRUE(origin->hasSuborigin()); EXPECT_EQ("foobar", origin->suborigin()->name()); origin = SecurityOrigin::createFromString("https://foobar_test.com"); EXPECT_EQ("https", origin->protocol()); EXPECT_EQ("test.com", origin->host()); EXPECT_EQ("foobar", origin->suborigin()->name()); origin = SecurityOrigin::createFromString("https://foobar_test.com"); EXPECT_TRUE(origin->hasSuborigin()); EXPECT_EQ("foobar", origin->suborigin()->name()); 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"); Suborigin emptySuborigin; EXPECT_DEATH(origin->addSuborigin(emptySuborigin), ""); }
TEST_F(SecurityOriginTest, SuboriginsParsing) { RuntimeEnabledFeatures::setSuboriginsEnabled(true); String protocol, realProtocol, host, realHost, suborigin; protocol = "https"; host = "test.com"; EXPECT_FALSE(SecurityOrigin::deserializeSuboriginAndProtocolAndHost( protocol, host, suborigin, realProtocol, realHost)); protocol = "https-so"; host = "foobar.test.com"; EXPECT_TRUE(SecurityOrigin::deserializeSuboriginAndProtocolAndHost( protocol, host, suborigin, realProtocol, realHost)); EXPECT_EQ("https", realProtocol); EXPECT_EQ("test.com", realHost); EXPECT_EQ("foobar", suborigin); RefPtr<SecurityOrigin> origin; StringBuilder builder; origin = SecurityOrigin::createFromString("https-so://foobar.test.com"); origin->buildRawString(builder, true); EXPECT_EQ("https-so://foobar.test.com", builder.toString()); EXPECT_EQ("https-so://foobar.test.com", origin->toString()); builder.clear(); origin->buildRawString(builder, false); EXPECT_EQ("https://test.com", builder.toString()); EXPECT_EQ("https://test.com", origin->toPhysicalOriginString()); Suborigin suboriginObj; suboriginObj.setName("foobar"); builder.clear(); origin = SecurityOrigin::createFromString("https://test.com"); origin->addSuborigin(suboriginObj); origin->buildRawString(builder, true); EXPECT_EQ("https-so://foobar.test.com", builder.toString()); EXPECT_EQ("https-so://foobar.test.com", origin->toString()); builder.clear(); origin->buildRawString(builder, false); EXPECT_EQ("https://test.com", builder.toString()); EXPECT_EQ("https://test.com", origin->toPhysicalOriginString()); }