TestCommonMetadata.cpp (15645B)
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/CommonMetadata.h" 10 #include "nsString.h" 11 12 namespace mozilla::dom::quota::test { 13 14 TEST(DOM_Quota_CommonMetadata, PrincipalMetadata_Equals) 15 { 16 // Base object to compare against. 17 18 PrincipalMetadata principalMetadata1 = GetPrincipalMetadata( 19 ""_ns, "example.org"_ns, "http://www.example.org"_ns); 20 21 { 22 // All fields are the same 23 24 PrincipalMetadata principalMetadata2 = GetPrincipalMetadata( 25 ""_ns, "example.org"_ns, "http://www.example.org"_ns); 26 27 EXPECT_TRUE(principalMetadata1.Equals(principalMetadata2)); 28 } 29 30 { 31 // Different suffix. 32 33 PrincipalMetadata principalMetadata2 = GetPrincipalMetadata( 34 "^userContextId=42"_ns, "example.org"_ns, "http://www.example.org"_ns); 35 36 EXPECT_FALSE(principalMetadata1.Equals(principalMetadata2)); 37 } 38 39 { 40 // Different group. 41 42 PrincipalMetadata principalMetadata2 = 43 GetPrincipalMetadata(""_ns, "org"_ns, "http://www.example.org"_ns); 44 45 EXPECT_FALSE(principalMetadata1.Equals(principalMetadata2)); 46 } 47 48 { 49 // Different origin. 50 51 PrincipalMetadata principalMetadata2 = GetPrincipalMetadata( 52 ""_ns, "example.org"_ns, "http://www.sub.example.org"_ns); 53 54 EXPECT_FALSE(principalMetadata1.Equals(principalMetadata2)); 55 } 56 57 { 58 // Different isPrivate flag. 59 60 PrincipalMetadata principalMetadata2 = GetPrincipalMetadata( 61 ""_ns, "example.org"_ns, "http://www.example.org"_ns, 62 /* aIsPrivate */ true); 63 64 EXPECT_FALSE(principalMetadata1.Equals(principalMetadata2)); 65 } 66 } 67 68 TEST(DOM_Quota_CommonMetadata, OriginMetadata_Equals) 69 { 70 // Base object to compare against. 71 72 PrincipalMetadata principalMetadata1 = GetPrincipalMetadata( 73 ""_ns, "example.org"_ns, "http://www.example.org"_ns); 74 75 OriginMetadata originMetadata1(principalMetadata1, PERSISTENCE_TYPE_DEFAULT); 76 77 { 78 // All fields are the same. 79 80 PrincipalMetadata principalMetadata2 = GetPrincipalMetadata( 81 ""_ns, "example.org"_ns, "http://www.example.org"_ns); 82 83 OriginMetadata originMetadata2(principalMetadata2, 84 PERSISTENCE_TYPE_DEFAULT); 85 86 EXPECT_TRUE(originMetadata1.Equals(originMetadata2)); 87 } 88 89 { 90 // Different PrincipalMetadata (isPrivate differs). 91 92 PrincipalMetadata principalMetadata2 = GetPrincipalMetadata( 93 ""_ns, "example.org"_ns, "http://www.example.org"_ns, 94 /* aIsPrivate */ true); 95 96 OriginMetadata originMetadata2(principalMetadata2, 97 PERSISTENCE_TYPE_DEFAULT); 98 99 EXPECT_FALSE(originMetadata1.Equals(originMetadata2)); 100 } 101 102 { 103 // Different persistence type. 104 105 PrincipalMetadata principalMetadata2 = GetPrincipalMetadata( 106 ""_ns, "example.org"_ns, "http://www.example.org"_ns); 107 108 OriginMetadata originMetadata2(principalMetadata2, 109 PERSISTENCE_TYPE_TEMPORARY); 110 111 EXPECT_FALSE(originMetadata1.Equals(originMetadata2)); 112 } 113 } 114 115 TEST(DOM_Quota_CommonMetadata, OriginStateMetadata_Equals) 116 { 117 // Base object to compare against. 118 119 OriginStateMetadata originStateMetadata1 = OriginStateMetadata( 120 /* aLastAccessTime */ 0, /* aLastMaintenanceDate */ 0, 121 /* aAccessed */ false, /* aPersisted */ false); 122 123 { 124 // All fields are the same. 125 126 OriginStateMetadata originStateMetadata2 = OriginStateMetadata( 127 /* aLastAccessTime */ 0, /* aLastMaintenanceDate */ 0, 128 /* aAccessed */ false, /* aPersisted */ false); 129 130 EXPECT_TRUE(originStateMetadata1.Equals(originStateMetadata2)); 131 } 132 133 { 134 // Different last access time. 135 136 OriginStateMetadata originStateMetadata2 = OriginStateMetadata( 137 /* aLastAccessTime */ 1, /* aLastMaintenanceDate */ 0, 138 /* aAccessed */ false, /* aPersisted */ false); 139 140 EXPECT_FALSE(originStateMetadata1.Equals(originStateMetadata2)); 141 } 142 143 { 144 // Different last maintenanace date. 145 146 OriginStateMetadata originStateMetadata2 = OriginStateMetadata( 147 /* aLastAccessTime */ 0, /* aLastMaintenanceDate */ 1, 148 /* aAccessed */ false, /* aPersisted */ false); 149 150 EXPECT_FALSE(originStateMetadata1.Equals(originStateMetadata2)); 151 } 152 153 { 154 // Different accessed flag. 155 156 OriginStateMetadata originStateMetadata2 = OriginStateMetadata( 157 /* aLastAccessTime */ 0, /* aLastMaintenanceDate */ 0, 158 /* aAccessed */ true, /* aPersisted */ false); 159 160 EXPECT_FALSE(originStateMetadata1.Equals(originStateMetadata2)); 161 } 162 163 { 164 // Different persisted flag. 165 166 OriginStateMetadata originStateMetadata2 = OriginStateMetadata( 167 /* aLastAccessTime */ 0, /* aLastMaintenanceDate */ 0, 168 /* aAccessed */ false, /* aPersisted */ true); 169 170 EXPECT_FALSE(originStateMetadata1.Equals(originStateMetadata2)); 171 } 172 } 173 174 // Tests that OriginMetadata::GetCompositeKey returns the expected 175 // "<persistence>*<origin>" string. 176 TEST(DOM_Quota_CommonMetadata, OriginMetadata_GetCompositeKey) 177 { 178 auto originMetadata = 179 GetOriginMetadata(""_ns, "mozilla.org"_ns, "http://www.mozilla.org"_ns); 180 181 auto compositeKey = originMetadata.GetCompositeKey(); 182 183 EXPECT_STREQ(compositeKey.get(), "2*http://www.mozilla.org"); 184 } 185 186 TEST(DOM_Quota_CommonMetadata, FullOriginMetadata_Equals) 187 { 188 // Base object to compare against. 189 PrincipalMetadata principalMetadata1 = GetPrincipalMetadata( 190 ""_ns, "example.org"_ns, "http://www.example.org"_ns); 191 192 OriginMetadata originMetadata1(principalMetadata1, PERSISTENCE_TYPE_DEFAULT); 193 194 OriginStateMetadata originStateMetadata1 = OriginStateMetadata( 195 /* aLastAccessTime */ 0, /* aLastMaintenanceDate */ 0, 196 /* aAccessed */ false, /* aPersisted */ false); 197 198 FullOriginMetadata fullOriginMetadata1(originMetadata1, originStateMetadata1, 199 ClientUsageArray(), /* aUsage */ 0, 200 kCurrentQuotaVersion); 201 202 { 203 // All fields are the same. 204 205 PrincipalMetadata principalMetadata2 = GetPrincipalMetadata( 206 ""_ns, "example.org"_ns, "http://www.example.org"_ns); 207 208 OriginMetadata originMetadata2(principalMetadata2, 209 PERSISTENCE_TYPE_DEFAULT); 210 211 OriginStateMetadata originStateMetadata2 = OriginStateMetadata( 212 /* aLastAccessTime */ 0, /* aLastMaintenanceDate */ 0, 213 /* aAccessed */ false, /* aPersisted */ false); 214 215 FullOriginMetadata fullOriginMetadata2( 216 originMetadata2, originStateMetadata2, ClientUsageArray(), 217 /* aUsage */ 0, kCurrentQuotaVersion); 218 219 EXPECT_TRUE(fullOriginMetadata1.Equals(fullOriginMetadata2)); 220 } 221 222 { 223 // Different OriginMetadata (PrincipalMetadata differs). 224 225 PrincipalMetadata principalMetadata2 = GetPrincipalMetadata( 226 ""_ns, "example.org"_ns, "http://www.example.org"_ns, 227 /* aIsPrivate */ true); 228 229 OriginMetadata originMetadata2(principalMetadata2, 230 PERSISTENCE_TYPE_DEFAULT); 231 232 OriginStateMetadata originStateMetadata2 = OriginStateMetadata( 233 /* aLastAccessTime */ 0, /* aLastMaintenanceDate */ 0, 234 /* aAccessed */ false, /* aPersisted */ false); 235 236 FullOriginMetadata fullOriginMetadata2( 237 originMetadata2, originStateMetadata2, ClientUsageArray(), 238 /* aUsage */ 0, kCurrentQuotaVersion); 239 240 EXPECT_FALSE(fullOriginMetadata1.Equals(fullOriginMetadata2)); 241 } 242 243 { 244 // Different OriginMetadata (persistence type differs). 245 246 PrincipalMetadata principalMetadata2 = GetPrincipalMetadata( 247 ""_ns, "example.org"_ns, "http://www.example.org"_ns); 248 249 OriginMetadata originMetadata2(principalMetadata2, 250 PERSISTENCE_TYPE_TEMPORARY); 251 252 OriginStateMetadata originStateMetadata2 = OriginStateMetadata( 253 /* aLastAccessTime */ 0, /* aLastMaintenanceDate */ 0, 254 /* aAccessed */ false, /* aPersisted */ false); 255 256 FullOriginMetadata fullOriginMetadata2( 257 originMetadata2, originStateMetadata2, ClientUsageArray(), 258 /* aUsage */ 0, kCurrentQuotaVersion); 259 260 EXPECT_FALSE(fullOriginMetadata1.Equals(fullOriginMetadata2)); 261 } 262 263 { 264 // Different OriginStateMetadata (last access time differs). 265 266 PrincipalMetadata principalMetadata2 = GetPrincipalMetadata( 267 ""_ns, "example.org"_ns, "http://www.example.org"_ns); 268 269 OriginMetadata originMetadata2(principalMetadata2, 270 PERSISTENCE_TYPE_DEFAULT); 271 272 OriginStateMetadata originStateMetadata2 = OriginStateMetadata( 273 /* aLastAccessTime */ 1, /* aLastMaintenanceDate */ 0, 274 /* aAccessed */ false, /* aPersisted */ false); 275 276 FullOriginMetadata fullOriginMetadata2( 277 originMetadata2, originStateMetadata2, ClientUsageArray(), 278 /* aUsage */ 0, kCurrentQuotaVersion); 279 280 EXPECT_FALSE(fullOriginMetadata1.Equals(fullOriginMetadata2)); 281 } 282 283 { 284 // Different client usage array. 285 286 PrincipalMetadata principalMetadata2 = GetPrincipalMetadata( 287 ""_ns, "example.org"_ns, "http://www.example.org"_ns); 288 289 OriginMetadata originMetadata2(principalMetadata2, 290 PERSISTENCE_TYPE_DEFAULT); 291 292 OriginStateMetadata originStateMetadata2 = OriginStateMetadata( 293 /* aLastAccessTime*/ 0, /* aLastMaintenanceDate */ 0, 294 /* aAccessed */ false, /* aPersisted */ false); 295 296 FullOriginMetadata fullOriginMetadata2( 297 originMetadata2, originStateMetadata2, 298 ClientUsageArray{{Some(1), Nothing(), Nothing(), Nothing(), Nothing()}}, 299 /* aUsage */ 0, kCurrentQuotaVersion); 300 301 EXPECT_FALSE(fullOriginMetadata1.Equals(fullOriginMetadata2)); 302 } 303 304 { 305 // Different origin usage. 306 307 PrincipalMetadata principalMetadata2 = GetPrincipalMetadata( 308 ""_ns, "example.org"_ns, "http://www.example.org"_ns); 309 310 OriginMetadata originMetadata2(principalMetadata2, 311 PERSISTENCE_TYPE_DEFAULT); 312 313 OriginStateMetadata originStateMetadata2 = OriginStateMetadata( 314 /* aLastAccessTime*/ 0, /* aLastMaintenanceDate */ 0, 315 /* aAccessed */ false, /* aPersisted */ false); 316 317 FullOriginMetadata fullOriginMetadata2( 318 originMetadata2, originStateMetadata2, ClientUsageArray(), 319 /* aUsage */ 1, kCurrentQuotaVersion); 320 321 EXPECT_FALSE(fullOriginMetadata1.Equals(fullOriginMetadata2)); 322 } 323 324 { 325 // Different quota version. 326 327 PrincipalMetadata principalMetadata2 = GetPrincipalMetadata( 328 ""_ns, "example.org"_ns, "http://www.example.org"_ns); 329 330 OriginMetadata originMetadata2(principalMetadata2, 331 PERSISTENCE_TYPE_DEFAULT); 332 333 OriginStateMetadata originStateMetadata2 = OriginStateMetadata( 334 /* aLastAccessTime*/ 0, /* aLastMaintenanceDate */ 0, 335 /* aAccessed */ false, /* aPersisted */ false); 336 337 FullOriginMetadata fullOriginMetadata2( 338 originMetadata2, originStateMetadata2, ClientUsageArray(), 339 /* aUsage */ 0, kCurrentQuotaVersion + 1); 340 341 EXPECT_FALSE(fullOriginMetadata1.Equals(fullOriginMetadata2)); 342 } 343 } 344 345 TEST(DOM_Quota_CommonMetadata, FullOriginMetadata_EqualsIgnoringOriginState) 346 { 347 // Base object to compare against. 348 PrincipalMetadata principalMetadata1 = GetPrincipalMetadata( 349 ""_ns, "example.org"_ns, "http://www.example.org"_ns); 350 351 OriginMetadata originMetadata1(principalMetadata1, PERSISTENCE_TYPE_DEFAULT); 352 353 OriginStateMetadata originStateMetadata1 = OriginStateMetadata( 354 /* aLastAccessTime */ 0, /* aLastMaintenanceDate */ 0, 355 /* aAccessed */ false, /* aPersisted */ false); 356 357 FullOriginMetadata fullOriginMetadata1(originMetadata1, originStateMetadata1, 358 ClientUsageArray(), /* aUsage */ 0, 359 kCurrentQuotaVersion); 360 361 { 362 // All fields are the same. 363 PrincipalMetadata principalMetadata2 = GetPrincipalMetadata( 364 ""_ns, "example.org"_ns, "http://www.example.org"_ns); 365 366 OriginMetadata originMetadata2(principalMetadata2, 367 PERSISTENCE_TYPE_DEFAULT); 368 369 OriginStateMetadata originStateMetadata2 = OriginStateMetadata( 370 /* aLastAccessTime */ 0, /* aLastMaintenanceDate */ 0, 371 /* aAccessed */ false, /* aPersisted */ false); 372 373 FullOriginMetadata fullOriginMetadata2( 374 originMetadata2, originStateMetadata2, ClientUsageArray(), 375 /* aUsage */ 0, kCurrentQuotaVersion); 376 377 EXPECT_TRUE( 378 fullOriginMetadata1.EqualsIgnoringOriginState(fullOriginMetadata2)); 379 } 380 381 { 382 // Different last access time (ignored). 383 OriginStateMetadata originStateMetadata2 = OriginStateMetadata( 384 /* aLastAccessTime */ 1, /* aLastMaintenanceDate */ 0, 385 /* aAccessed */ false, /* aPersisted */ false); 386 387 FullOriginMetadata fullOriginMetadata2( 388 originMetadata1, originStateMetadata2, ClientUsageArray(), 389 /* aUsage */ 0, kCurrentQuotaVersion); 390 391 EXPECT_TRUE( 392 fullOriginMetadata1.EqualsIgnoringOriginState(fullOriginMetadata2)); 393 } 394 395 { 396 // Different last maintenance date (ignored). 397 OriginStateMetadata originStateMetadata2 = OriginStateMetadata( 398 /* aLastAccessTime */ 0, /* aLastMaintenanceDate */ 1, 399 /* aAccessed */ false, /* aPersisted */ false); 400 401 FullOriginMetadata fullOriginMetadata2( 402 originMetadata1, originStateMetadata2, ClientUsageArray(), 403 /* aUsage */ 0, kCurrentQuotaVersion); 404 405 EXPECT_TRUE( 406 fullOriginMetadata1.EqualsIgnoringOriginState(fullOriginMetadata2)); 407 } 408 409 { 410 // Different accessed flag (ignored). 411 OriginStateMetadata originStateMetadata2 = OriginStateMetadata( 412 /* aLastAccessTime */ 0, /* aLastMaintenanceDate */ 0, 413 /* aAccessed */ true, /* aPersisted */ false); 414 415 FullOriginMetadata fullOriginMetadata2( 416 originMetadata1, originStateMetadata2, ClientUsageArray(), 417 /* aUsage */ 0, kCurrentQuotaVersion); 418 419 EXPECT_TRUE( 420 fullOriginMetadata1.EqualsIgnoringOriginState(fullOriginMetadata2)); 421 } 422 423 { 424 // Different persisted flag (ignored). 425 OriginStateMetadata originStateMetadata2 = OriginStateMetadata( 426 /* aLastAccessTime */ 0, /* aLastMaintenanceDate */ 0, 427 /* aAccessed */ false, /* aPersisted */ true); 428 429 FullOriginMetadata fullOriginMetadata2( 430 originMetadata1, originStateMetadata2, ClientUsageArray(), 431 /* aUsage */ 0, kCurrentQuotaVersion); 432 433 EXPECT_TRUE( 434 fullOriginMetadata1.EqualsIgnoringOriginState(fullOriginMetadata2)); 435 } 436 437 { 438 // Different origin usage (not ignored). 439 OriginStateMetadata originStateMetadata2 = OriginStateMetadata( 440 /* aLastAccessTime */ 0, /* aLastMaintenanceDate */ 0, 441 /* aAccessed */ false, /* aPersisted */ false); 442 443 FullOriginMetadata fullOriginMetadata2( 444 originMetadata1, originStateMetadata2, ClientUsageArray(), 445 /* aUsage */ 1, kCurrentQuotaVersion); 446 447 EXPECT_FALSE( 448 fullOriginMetadata1.EqualsIgnoringOriginState(fullOriginMetadata2)); 449 } 450 } 451 452 TEST(DOM_Quota_CommonMetadata, FullOriginMetadata_Clone) 453 { 454 auto fullOriginMetadata1 = GetFullOriginMetadata(""_ns, "mozilla.org"_ns, 455 "http://www.mozilla.org"_ns); 456 457 auto fullOriginMetadata2 = fullOriginMetadata1.Clone(); 458 459 EXPECT_TRUE(fullOriginMetadata1.Equals(fullOriginMetadata2)); 460 } 461 462 } // namespace mozilla::dom::quota::test