TestCacheControlParser.cpp (3170B)
1 #include "gtest/gtest.h" 2 3 #include "CacheControlParser.h" 4 5 using namespace mozilla; 6 using namespace mozilla::net; 7 8 TEST(TestCacheControlParser, NegativeMaxAge) 9 { 10 CacheControlParser cc( 11 "no-store,no-cache,max-age=-3600,max-stale=7,private"_ns); 12 ASSERT_TRUE(cc.NoStore()); 13 ASSERT_TRUE(cc.NoCache()); 14 uint32_t max_age{2}; 15 ASSERT_FALSE(cc.MaxAge(&max_age)); 16 ASSERT_EQ(max_age, 0U); 17 uint32_t max_stale; 18 ASSERT_TRUE(cc.MaxStale(&max_stale)); 19 ASSERT_EQ(max_stale, 7U); 20 ASSERT_TRUE(cc.Private()); 21 } 22 23 TEST(TestCacheControlParser, EmptyMaxAge) 24 { 25 CacheControlParser cc("no-store,no-cache,max-age,max-stale=77,private"_ns); 26 ASSERT_TRUE(cc.NoStore()); 27 ASSERT_TRUE(cc.NoCache()); 28 uint32_t max_age{5}; 29 ASSERT_FALSE(cc.MaxAge(&max_age)); 30 ASSERT_EQ(max_age, 0U); 31 uint32_t max_stale; 32 ASSERT_TRUE(cc.MaxStale(&max_stale)); 33 ASSERT_EQ(max_stale, 77U); 34 ASSERT_TRUE(cc.Private()); 35 } 36 37 TEST(TestCacheControlParser, NegaTiveMaxStale) 38 { 39 CacheControlParser cc( 40 "no-store,no-cache,max-age=3600,max-stale=-222,private"_ns); 41 ASSERT_TRUE(cc.NoStore()); 42 ASSERT_TRUE(cc.NoCache()); 43 uint32_t max_age; 44 ASSERT_TRUE(cc.MaxAge(&max_age)); 45 ASSERT_EQ(max_age, 3600U); 46 uint32_t max_stale; 47 ASSERT_TRUE(cc.MaxStale(&max_stale)); 48 ASSERT_EQ(max_stale, PR_UINT32_MAX); 49 ASSERT_TRUE(cc.Private()); 50 } 51 52 TEST(TestCacheControlParser, EmptyMaxStale) 53 { 54 CacheControlParser cc("no-store,no-cache,max-age=3600,max-stale,private"_ns); 55 ASSERT_TRUE(cc.NoStore()); 56 ASSERT_TRUE(cc.NoCache()); 57 uint32_t max_age; 58 ASSERT_TRUE(cc.MaxAge(&max_age)); 59 ASSERT_EQ(max_age, 3600U); 60 uint32_t max_stale; 61 ASSERT_TRUE(cc.MaxStale(&max_stale)); 62 ASSERT_EQ(max_stale, PR_UINT32_MAX); 63 ASSERT_TRUE(cc.Private()); 64 } 65 // cache control parser case-insensitive` 66 TEST(TestCacheControlParser, CaseInsensitive) 67 { 68 CacheControlParser cc( 69 "No-Store,No-Cache,Max-Age=3600,Max-Stale=7,Private,Min-Fresh=1,Stale-while-revalidate=3"_ns); 70 ASSERT_TRUE(cc.NoStore()); 71 ASSERT_TRUE(cc.NoCache()); 72 uint32_t max_age; 73 ASSERT_TRUE(cc.MaxAge(&max_age)); 74 ASSERT_EQ(max_age, 3600U); 75 uint32_t max_stale; 76 ASSERT_TRUE(cc.MaxStale(&max_stale)); 77 ASSERT_EQ(max_stale, 7U); 78 ASSERT_TRUE(cc.Private()); 79 uint32_t min_fresh; 80 ASSERT_TRUE(cc.MinFresh(&min_fresh)); 81 ASSERT_EQ(min_fresh, 1U); 82 uint32_t stale_while_revalidate; 83 ASSERT_TRUE(cc.StaleWhileRevalidate(&stale_while_revalidate)); 84 ASSERT_EQ(stale_while_revalidate, 3U); 85 86 // Test case-insensitive capitalization 87 CacheControlParser cc2( 88 "NO-STORE,NO-CACHE,MAX-AGE=2600,MAX-STALE=12,PUBLIC,MIN-FRESH=3,STALE-WHILE-REVALIDATE=8"_ns); 89 ASSERT_TRUE(cc2.NoStore()); 90 ASSERT_TRUE(cc2.NoCache()); 91 ASSERT_TRUE(cc2.MaxAge(&max_age)); 92 ASSERT_EQ(max_age, 2600U); 93 ASSERT_TRUE(cc2.MaxStale(&max_stale)); 94 ASSERT_EQ(max_stale, 12u); 95 ASSERT_TRUE(cc2.Public()); 96 ASSERT_TRUE(cc2.MinFresh(&min_fresh)); 97 ASSERT_EQ(min_fresh, 3U); 98 ASSERT_TRUE(cc2.StaleWhileRevalidate(&stale_while_revalidate)); 99 ASSERT_EQ(stale_while_revalidate, 8U); 100 } 101 102 TEST(TestCacheControlParser, NoCacheAfterNoStore) 103 { 104 CacheControlParser cc("no-store, no-cache"_ns); 105 ASSERT_TRUE(cc.NoCache()); 106 ASSERT_TRUE(cc.NoStore()); 107 }