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), "");
}
Пример #2
0
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());
}