blob: a3ed6c16cffd9fe5985cfadbee65be44b4b2fbab [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/public/browser/site_isolation_policy.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
#include "url/origin.h"
namespace content {
// Verifies parsing logic in SiteIsolationPolicy::ParseIsolatedOrigins.
TEST(SiteIsolationPolicyTest, ParseIsolatedOrigins) {
// Invalid and unique origins are not permitted.
EXPECT_THAT(SiteIsolationPolicy::ParseIsolatedOrigins("foo"),
testing::IsEmpty());
EXPECT_THAT(SiteIsolationPolicy::ParseIsolatedOrigins(""),
testing::IsEmpty());
EXPECT_THAT(SiteIsolationPolicy::ParseIsolatedOrigins("about:blank"),
testing::IsEmpty());
// Single simple, valid origin.
EXPECT_THAT(
SiteIsolationPolicy::ParseIsolatedOrigins("http://isolated.foo.com"),
testing::ElementsAre(
url::Origin::Create(GURL("http://isolated.foo.com"))));
// Multiple comma-separated origins.
EXPECT_THAT(
SiteIsolationPolicy::ParseIsolatedOrigins(
"http://a.com,https://b.com,,https://c.com:8000"),
testing::ElementsAre(url::Origin::Create(GURL("http://a.com")),
url::Origin::Create(GURL("https://b.com")),
url::Origin::Create(GURL("https://c.com:8000"))));
// ParseIsolatedOrigins should not do any deduplication (that is the job of
// ChildProcessSecurityPolicyImpl::AddIsolatedOrigins).
EXPECT_THAT(
SiteIsolationPolicy::ParseIsolatedOrigins(
"https://b.com,https://b.com,https://b.com:1234"),
testing::ElementsAre(url::Origin::Create(GURL("https://b.com")),
url::Origin::Create(GURL("https://b.com")),
url::Origin::Create(GURL("https://b.com:1234"))));
}
} // namespace content