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