tor-browser

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

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