tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

TestOriginScope.cpp (6202B)


      1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
      3 /* This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
      5 * You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 
      7 #include "QuotaManagerTestHelpers.h"
      8 #include "gtest/gtest.h"
      9 #include "mozilla/dom/quota/OriginScope.h"
     10 #include "nsStringFwd.h"
     11 #include "nsTDependentString.h"
     12 #include "nsTLiteralString.h"
     13 
     14 namespace mozilla::dom::quota {
     15 
     16 using test::GetPrincipalMetadata;
     17 
     18 TEST(DOM_Quota_OriginScope, SanityChecks)
     19 {
     20  OriginScope originScope;
     21 
     22  // Sanity checks.
     23 
     24  {
     25    constexpr auto group = "www.mozilla.org"_ns;
     26    constexpr auto origin = "http://www.mozilla.org"_ns;
     27    originScope.SetFromOrigin(GetPrincipalMetadata(group, origin));
     28    EXPECT_TRUE(originScope.IsOrigin());
     29    EXPECT_TRUE(originScope.GetOrigin().Equals(origin));
     30    EXPECT_TRUE(originScope.GetOriginNoSuffix().Equals(origin));
     31  }
     32 
     33  {
     34    constexpr auto group = "mozilla.org"_ns;
     35    constexpr auto origin = "http://www.mozilla.org"_ns;
     36    originScope.SetFromPrefix(GetPrincipalMetadata(group, origin));
     37    EXPECT_TRUE(originScope.IsPrefix());
     38    EXPECT_TRUE(originScope.GetOriginNoSuffix().Equals(origin));
     39  }
     40 
     41  {
     42    originScope.SetFromNull();
     43    EXPECT_TRUE(originScope.IsNull());
     44  }
     45 }
     46 
     47 TEST(DOM_Quota_OriginScope, MatchesOrigin)
     48 {
     49  // Test each origin scope type against particular origins.
     50 
     51  {
     52    const auto originScope(OriginScope::FromOrigin(
     53        GetPrincipalMetadata("mozilla.org"_ns, "http://www.mozilla.org"_ns)));
     54 
     55    EXPECT_TRUE(originScope.Matches(OriginScope::FromOrigin(
     56        GetPrincipalMetadata("mozilla.org"_ns, "http://www.mozilla.org"_ns))));
     57    EXPECT_FALSE(originScope.Matches(OriginScope::FromOrigin(
     58        GetPrincipalMetadata("example.org"_ns, "http://www.example.org"_ns))));
     59  }
     60 
     61  {
     62    const auto originScope(OriginScope::FromPrefix(
     63        GetPrincipalMetadata("mozilla.org"_ns, "http://www.mozilla.org"_ns)));
     64 
     65    EXPECT_TRUE(originScope.Matches(OriginScope::FromOrigin(
     66        GetPrincipalMetadata("mozilla.org"_ns, "http://www.mozilla.org"_ns))));
     67    EXPECT_TRUE(originScope.Matches(OriginScope::FromOrigin(
     68        GetPrincipalMetadata("^userContextId=1"_ns, "mozilla.org"_ns,
     69                             "http://www.mozilla.org"_ns))));
     70    EXPECT_FALSE(originScope.Matches(OriginScope::FromOrigin(
     71        GetPrincipalMetadata("^userContextId=1"_ns, "example.org"_ns,
     72                             "http://www.example.org"_ns))));
     73  }
     74 
     75  {
     76    const auto originScope(
     77        OriginScope::FromJSONPattern(u"{ \"userContextId\": 1 }"_ns));
     78 
     79    EXPECT_FALSE(originScope.Matches(OriginScope::FromOrigin(
     80        GetPrincipalMetadata("mozilla.org"_ns, "http://www.mozilla.org"_ns))));
     81    EXPECT_TRUE(originScope.Matches(OriginScope::FromOrigin(
     82        GetPrincipalMetadata("^userContextId=1"_ns, "mozilla.org"_ns,
     83                             "http://www.mozilla.org"_ns))));
     84    EXPECT_TRUE(originScope.Matches(OriginScope::FromOrigin(
     85        GetPrincipalMetadata("^userContextId=1"_ns, "example.org"_ns,
     86                             "http://www.example.org"_ns))));
     87  }
     88 
     89  {
     90    const auto originScope(OriginScope::FromNull());
     91 
     92    EXPECT_TRUE(originScope.Matches(OriginScope::FromOrigin(
     93        GetPrincipalMetadata("mozilla.org"_ns, "http://www.mozilla.org"_ns))));
     94    EXPECT_TRUE(originScope.Matches(OriginScope::FromOrigin(
     95        GetPrincipalMetadata("^userContextId=1"_ns, "mozilla.org"_ns,
     96                             "http://www.mozilla.org"_ns))));
     97    EXPECT_TRUE(originScope.Matches(OriginScope::FromOrigin(
     98        GetPrincipalMetadata("^userContextId=1"_ns, "example.org"_ns,
     99                             "http://www.example.org"_ns))));
    100  }
    101 }
    102 
    103 TEST(DOM_Quota_OriginScope, MatchesGroup)
    104 {
    105  {
    106    const auto originScope(OriginScope::FromOrigin(
    107        GetPrincipalMetadata("mozilla.org"_ns, "http://www.mozilla.org"_ns)));
    108 
    109    ASSERT_TRUE(originScope.Matches(OriginScope::FromGroup("mozilla.org"_ns)));
    110    ASSERT_FALSE(originScope.Matches(
    111        OriginScope::FromGroup("mozilla.org^userContextId=1"_ns)));
    112    ASSERT_FALSE(originScope.Matches(OriginScope::FromGroup("mozilla.com"_ns)));
    113  }
    114 
    115  {
    116    const auto originScope(OriginScope::FromOrigin(GetPrincipalMetadata(
    117        "^userContextId=1"_ns, "mozilla.org"_ns, "http://www.mozilla.org"_ns)));
    118 
    119    ASSERT_FALSE(originScope.Matches(OriginScope::FromGroup("mozilla.org"_ns)));
    120    ASSERT_TRUE(originScope.Matches(
    121        OriginScope::FromGroup("mozilla.org^userContextId=1"_ns)));
    122    ASSERT_FALSE(originScope.Matches(OriginScope::FromGroup("mozilla.com"_ns)));
    123  }
    124 
    125  {
    126    const auto originScope(OriginScope::FromPrefix(
    127        GetPrincipalMetadata("mozilla.org"_ns, "http://www.mozilla.org"_ns)));
    128 
    129    ASSERT_TRUE(originScope.Matches(OriginScope::FromGroup("mozilla.org"_ns)));
    130    ASSERT_TRUE(originScope.Matches(
    131        OriginScope::FromGroup("mozilla.org^userContextId=1"_ns)));
    132    ASSERT_FALSE(originScope.Matches(OriginScope::FromGroup("mozilla.com"_ns)));
    133  }
    134 
    135  {
    136    const auto originScope(
    137        OriginScope::FromJSONPattern(u"{ \"userContextId\": 1 }"_ns));
    138 
    139    ASSERT_FALSE(originScope.Matches(OriginScope::FromGroup("mozilla.org"_ns)));
    140    ASSERT_TRUE(originScope.Matches(
    141        OriginScope::FromGroup("mozilla.org^userContextId=1"_ns)));
    142    ASSERT_FALSE(originScope.Matches(OriginScope::FromGroup("mozilla.com"_ns)));
    143  }
    144 
    145  {
    146    const auto originScope(OriginScope::FromGroup("mozilla.org"_ns));
    147 
    148    ASSERT_TRUE(originScope.Matches(OriginScope::FromGroup("mozilla.org"_ns)));
    149    ASSERT_FALSE(originScope.Matches(
    150        OriginScope::FromGroup("mozilla.org^userContextId=1"_ns)));
    151    ASSERT_FALSE(originScope.Matches(OriginScope::FromGroup("mozilla.com"_ns)));
    152  }
    153 
    154  {
    155    const auto originScope(OriginScope::FromNull());
    156 
    157    ASSERT_TRUE(originScope.Matches(OriginScope::FromGroup("mozilla.org"_ns)));
    158    ASSERT_TRUE(originScope.Matches(
    159        OriginScope::FromGroup("mozilla.org^userContextId=1"_ns)));
    160    ASSERT_TRUE(originScope.Matches(OriginScope::FromGroup("mozilla.com"_ns)));
    161  }
    162 }
    163 
    164 }  //  namespace mozilla::dom::quota