11e934351Sopenharmony_ci/* 21e934351Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 31e934351Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 41e934351Sopenharmony_ci * you may not use this file except in compliance with the License. 51e934351Sopenharmony_ci * You may obtain a copy of the License at 61e934351Sopenharmony_ci * 71e934351Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 81e934351Sopenharmony_ci * 91e934351Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 101e934351Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 111e934351Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 121e934351Sopenharmony_ci * See the License for the specific language governing permissions and 131e934351Sopenharmony_ci * limitations under the License. 141e934351Sopenharmony_ci */ 151e934351Sopenharmony_ci 161e934351Sopenharmony_ci#include <algorithm> 171e934351Sopenharmony_ci#include <cstring> 181e934351Sopenharmony_ci 191e934351Sopenharmony_ci#include "gtest/gtest.h" 201e934351Sopenharmony_ci 211e934351Sopenharmony_ci#include "http_cache_request.h" 221e934351Sopenharmony_ci#include "http_cache_response.h" 231e934351Sopenharmony_ci#include "http_cache_strategy.h" 241e934351Sopenharmony_ci#include "netstack_log.h" 251e934351Sopenharmony_ci 261e934351Sopenharmony_ciusing namespace OHOS::NetStack::Http; 271e934351Sopenharmony_ci 281e934351Sopenharmony_ciclass HttpCacheStrategyTest : public testing::Test { 291e934351Sopenharmony_cipublic: 301e934351Sopenharmony_ci static void SetUpTestCase() {} 311e934351Sopenharmony_ci 321e934351Sopenharmony_ci static void TearDownTestCase() {} 331e934351Sopenharmony_ci 341e934351Sopenharmony_ci virtual void SetUp() {} 351e934351Sopenharmony_ci 361e934351Sopenharmony_ci virtual void TearDown() {} 371e934351Sopenharmony_ci}; 381e934351Sopenharmony_ci 391e934351Sopenharmony_cinamespace { 401e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, cacheRequestNoCache, testing::ext::TestSize.Level1) 411e934351Sopenharmony_ci{ 421e934351Sopenharmony_ci HttpRequestOptions requestOptions; 431e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "no-cache"); 441e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:36:30 GMT"); 451e934351Sopenharmony_ci 461e934351Sopenharmony_ci HttpResponse response; 471e934351Sopenharmony_ci response.SetResponseCode(200); 481e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:59 GMT"); 491e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 501e934351Sopenharmony_ci responseHeader["expires"] = "Sat, 04 Jun 2022 09:56:21 GMT"; 511e934351Sopenharmony_ci 521e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 531e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 541e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 551e934351Sopenharmony_ci 561e934351Sopenharmony_ci EXPECT_EQ(status, 2); 571e934351Sopenharmony_ci} 581e934351Sopenharmony_ci 591e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, computeFreshnessLifetimeLastModifiedBranch, testing::ext::TestSize.Level1) 601e934351Sopenharmony_ci{ 611e934351Sopenharmony_ci HttpRequestOptions requestOptions; 621e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "min-fresh=20"); 631e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:36:30 GMT"); 641e934351Sopenharmony_ci 651e934351Sopenharmony_ci HttpResponse response; 661e934351Sopenharmony_ci response.SetResponseCode(200); 671e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:59 GMT"); 681e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 691e934351Sopenharmony_ci responseHeader["Cache-Control"] = "public"; 701e934351Sopenharmony_ci responseHeader["last-modified"] = "Thu, 10 Feb 2022 10:55:14 GMT"; 711e934351Sopenharmony_ci responseHeader["date"] = "Fri, 20 May 2022 09:37:29 GMT"; 721e934351Sopenharmony_ci 731e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 741e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 751e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 761e934351Sopenharmony_ci 771e934351Sopenharmony_ci EXPECT_EQ(status, STALE); 781e934351Sopenharmony_ci} 791e934351Sopenharmony_ci 801e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, cacheResponseNoCache, testing::ext::TestSize.Level1) 811e934351Sopenharmony_ci{ 821e934351Sopenharmony_ci HttpRequestOptions requestOptions; 831e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "min-fresh=20"); 841e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:36:30 GMT"); 851e934351Sopenharmony_ci 861e934351Sopenharmony_ci HttpResponse response; 871e934351Sopenharmony_ci response.SetResponseCode(200); 881e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:59 GMT"); 891e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 901e934351Sopenharmony_ci responseHeader["Cache-Control"] = "no-cache"; 911e934351Sopenharmony_ci 921e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 931e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 941e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 951e934351Sopenharmony_ci 961e934351Sopenharmony_ci EXPECT_EQ(status, 1); 971e934351Sopenharmony_ci} 981e934351Sopenharmony_ci 991e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, cacheRequestOnlyIfCached, testing::ext::TestSize.Level1) 1001e934351Sopenharmony_ci{ 1011e934351Sopenharmony_ci HttpRequestOptions requestOptions; 1021e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "only-if-cached"); 1031e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:36:30 GMT"); 1041e934351Sopenharmony_ci 1051e934351Sopenharmony_ci HttpResponse response; 1061e934351Sopenharmony_ci response.SetResponseCode(200); 1071e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:59 GMT"); 1081e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 1091e934351Sopenharmony_ci responseHeader["Cache-Control"] = "max-age=70"; 1101e934351Sopenharmony_ci 1111e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 1121e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 1131e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 1141e934351Sopenharmony_ci 1151e934351Sopenharmony_ci EXPECT_EQ(status, 0); 1161e934351Sopenharmony_ci} 1171e934351Sopenharmony_ci 1181e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, isCacheable, testing::ext::TestSize.Level1) 1191e934351Sopenharmony_ci{ 1201e934351Sopenharmony_ci HttpRequestOptions requestOptions; 1211e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "min-fresh=20"); 1221e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:36:30 GMT"); 1231e934351Sopenharmony_ci 1241e934351Sopenharmony_ci HttpResponse response; 1251e934351Sopenharmony_ci response.SetResponseCode(303); 1261e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:59 GMT"); 1271e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 1281e934351Sopenharmony_ci responseHeader["Cache-Control"] = "max-age=70"; 1291e934351Sopenharmony_ci 1301e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 1311e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 1321e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 1331e934351Sopenharmony_ci 1341e934351Sopenharmony_ci EXPECT_EQ(status, 2); 1351e934351Sopenharmony_ci} 1361e934351Sopenharmony_ci 1371e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, isCacheable_OK, testing::ext::TestSize.Level1) 1381e934351Sopenharmony_ci{ 1391e934351Sopenharmony_ci HttpRequestOptions requestOptions; 1401e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "min-fresh=20"); 1411e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:36:30 GMT"); 1421e934351Sopenharmony_ci 1431e934351Sopenharmony_ci HttpResponse response; 1441e934351Sopenharmony_ci response.SetResponseCode(200); 1451e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:59 GMT"); 1461e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 1471e934351Sopenharmony_ci responseHeader["Cache-Control"] = "max-age=70"; 1481e934351Sopenharmony_ci 1491e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 1501e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 1511e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 1521e934351Sopenharmony_ci 1531e934351Sopenharmony_ci EXPECT_EQ(status, STALE); 1541e934351Sopenharmony_ci} 1551e934351Sopenharmony_ci 1561e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, requestIfModifiedSinceStr, testing::ext::TestSize.Level1) 1571e934351Sopenharmony_ci{ 1581e934351Sopenharmony_ci HttpRequestOptions requestOptions; 1591e934351Sopenharmony_ci requestOptions.SetHeader("if-modified-since", "Thu, 10 Feb 2022 10:55:14 GMT"); 1601e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:36:30 GMT"); 1611e934351Sopenharmony_ci 1621e934351Sopenharmony_ci HttpResponse response; 1631e934351Sopenharmony_ci response.SetResponseCode(200); 1641e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:59 GMT"); 1651e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 1661e934351Sopenharmony_ci responseHeader["Cache-Control"] = "max-age=70"; 1671e934351Sopenharmony_ci 1681e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 1691e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 1701e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 1711e934351Sopenharmony_ci 1721e934351Sopenharmony_ci EXPECT_EQ(status, 2); 1731e934351Sopenharmony_ci} 1741e934351Sopenharmony_ci 1751e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, requestgetIfNoneMatch, testing::ext::TestSize.Level1) 1761e934351Sopenharmony_ci{ 1771e934351Sopenharmony_ci HttpRequestOptions requestOptions; 1781e934351Sopenharmony_ci requestOptions.SetHeader("if-none-match", "A6E52F1D544D9DAFB552163A1CF8AD10"); 1791e934351Sopenharmony_ci requestOptions.SetHeader("if-modified-since", "Thu, 10 Feb 2022 10:55:14 GMT"); 1801e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:36:30 GMT"); 1811e934351Sopenharmony_ci 1821e934351Sopenharmony_ci HttpResponse response; 1831e934351Sopenharmony_ci response.SetResponseCode(200); 1841e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:59 GMT"); 1851e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 1861e934351Sopenharmony_ci responseHeader["Cache-Control"] = "max-age=70"; 1871e934351Sopenharmony_ci 1881e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 1891e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 1901e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 1911e934351Sopenharmony_ci 1921e934351Sopenharmony_ci EXPECT_EQ(status, 2); 1931e934351Sopenharmony_ci} 1941e934351Sopenharmony_ci 1951e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, requestgetIfNoneMatchAndIfModifiedSinceStr, testing::ext::TestSize.Level1) 1961e934351Sopenharmony_ci{ 1971e934351Sopenharmony_ci HttpRequestOptions requestOptions; 1981e934351Sopenharmony_ci requestOptions.SetHeader("if-none-match", "A6E52F1D544D9DAFB552163A1CF8AD10"); 1991e934351Sopenharmony_ci requestOptions.SetHeader("if-modified-since", "Thu, 10 Feb 2022 10:55:14 GMT"); 2001e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:36:30 GMT"); 2011e934351Sopenharmony_ci 2021e934351Sopenharmony_ci HttpResponse response; 2031e934351Sopenharmony_ci response.SetResponseCode(200); 2041e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:59 GMT"); 2051e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 2061e934351Sopenharmony_ci responseHeader["Cache-Control"] = "max-age=70"; 2071e934351Sopenharmony_ci 2081e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 2091e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 2101e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 2111e934351Sopenharmony_ci 2121e934351Sopenharmony_ci EXPECT_EQ(status, 2); 2131e934351Sopenharmony_ci} 2141e934351Sopenharmony_ci 2151e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, strategyMaxAgeBranch, testing::ext::TestSize.Level1) // test 2161e934351Sopenharmony_ci{ 2171e934351Sopenharmony_ci HttpRequestOptions requestOptions; 2181e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "max-age=10"); 2191e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:36:19 GMT"); 2201e934351Sopenharmony_ci 2211e934351Sopenharmony_ci HttpResponse response; 2221e934351Sopenharmony_ci response.SetResponseCode(200); 2231e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:30 GMT"); 2241e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 2251e934351Sopenharmony_ci responseHeader["Cache-Control"] = "max-age=70"; 2261e934351Sopenharmony_ci 2271e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 2281e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 2291e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 2301e934351Sopenharmony_ci 2311e934351Sopenharmony_ci EXPECT_EQ(status, STALE); 2321e934351Sopenharmony_ci} 2331e934351Sopenharmony_ci 2341e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, CompareNumber_1, testing::ext::TestSize.Level1) 2351e934351Sopenharmony_ci{ 2361e934351Sopenharmony_ci HttpRequestOptions requestOptions; 2371e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:36:30 GMT"); 2381e934351Sopenharmony_ci 2391e934351Sopenharmony_ci HttpResponse response; 2401e934351Sopenharmony_ci response.SetResponseCode(200); 2411e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:59 GMT"); 2421e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 2431e934351Sopenharmony_ci responseHeader["age"] = "33781"; 2441e934351Sopenharmony_ci 2451e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 2461e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 2471e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 2481e934351Sopenharmony_ci 2491e934351Sopenharmony_ci EXPECT_EQ(status, 1); 2501e934351Sopenharmony_ci} 2511e934351Sopenharmony_ci 2521e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, CompareNumber_1_2, testing::ext::TestSize.Level1) 2531e934351Sopenharmony_ci{ 2541e934351Sopenharmony_ci HttpRequestOptions requestOptions; 2551e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:36:30 GMT"); 2561e934351Sopenharmony_ci 2571e934351Sopenharmony_ci HttpResponse response; 2581e934351Sopenharmony_ci response.SetResponseCode(200); 2591e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:59 GMT"); 2601e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 2611e934351Sopenharmony_ci responseHeader["age"] = "33781"; 2621e934351Sopenharmony_ci responseHeader["etag"] = "6f6741d197947f9f10943d36c4d8210e"; 2631e934351Sopenharmony_ci 2641e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 2651e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 2661e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 2671e934351Sopenharmony_ci 2681e934351Sopenharmony_ci EXPECT_EQ(status, 1); 2691e934351Sopenharmony_ci} 2701e934351Sopenharmony_ci 2711e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, CompareNumber_2, testing::ext::TestSize.Level1) 2721e934351Sopenharmony_ci{ 2731e934351Sopenharmony_ci HttpRequestOptions requestOptions; 2741e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:36:30 GMT"); 2751e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "max-age=10"); 2761e934351Sopenharmony_ci 2771e934351Sopenharmony_ci HttpResponse response; 2781e934351Sopenharmony_ci response.SetResponseCode(200); 2791e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:59 GMT"); 2801e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 2811e934351Sopenharmony_ci responseHeader["age"] = "10"; 2821e934351Sopenharmony_ci responseHeader["cache-control"] = "private"; 2831e934351Sopenharmony_ci responseHeader["expires"] = "Mon, 16 May 2022 10:31:58 GMT"; 2841e934351Sopenharmony_ci 2851e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 2861e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 2871e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 2881e934351Sopenharmony_ci 2891e934351Sopenharmony_ci EXPECT_EQ(status, 1); 2901e934351Sopenharmony_ci} 2911e934351Sopenharmony_ci 2921e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, CompareNumber_3, testing::ext::TestSize.Level1) 2931e934351Sopenharmony_ci{ 2941e934351Sopenharmony_ci HttpRequestOptions requestOptions; 2951e934351Sopenharmony_ci requestOptions.SetRequestTime("Mon, 16 May 2022 09:32:59 GMT"); 2961e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "no-cache"); 2971e934351Sopenharmony_ci 2981e934351Sopenharmony_ci HttpResponse response; 2991e934351Sopenharmony_ci response.SetResponseCode(200); 3001e934351Sopenharmony_ci response.SetResponseTime("Mon, 16 May 2022 09:33:59 GMT"); 3011e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 3021e934351Sopenharmony_ci responseHeader["age"] = "0"; 3031e934351Sopenharmony_ci 3041e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 3051e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 3061e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 3071e934351Sopenharmony_ci 3081e934351Sopenharmony_ci EXPECT_EQ(status, 2); 3091e934351Sopenharmony_ci} 3101e934351Sopenharmony_ci 3111e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, CompareNumber_4, testing::ext::TestSize.Level1) 3121e934351Sopenharmony_ci{ 3131e934351Sopenharmony_ci HttpRequestOptions requestOptions; 3141e934351Sopenharmony_ci requestOptions.SetRequestTime("Mon, 16 May 2022 09:32:59 GMT"); 3151e934351Sopenharmony_ci requestOptions.SetHeader("if-modified-since", "Thu, 10 Feb 2022 10:55:14 GMT"); 3161e934351Sopenharmony_ci 3171e934351Sopenharmony_ci HttpResponse response; 3181e934351Sopenharmony_ci response.SetResponseCode(200); 3191e934351Sopenharmony_ci response.SetResponseTime("Mon, 16 May 2022 09:33:59 GMT"); 3201e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 3211e934351Sopenharmony_ci responseHeader["age"] = "33781"; 3221e934351Sopenharmony_ci 3231e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 3241e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 3251e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 3261e934351Sopenharmony_ci 3271e934351Sopenharmony_ci EXPECT_EQ(status, 2); 3281e934351Sopenharmony_ci} 3291e934351Sopenharmony_ci 3301e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, CompareNumber_5, testing::ext::TestSize.Level1) 3311e934351Sopenharmony_ci{ 3321e934351Sopenharmony_ci HttpRequestOptions requestOptions; 3331e934351Sopenharmony_ci requestOptions.SetRequestTime("Thu, 19 May 2022 08:19:59 GMT"); 3341e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "min-fresh=20"); 3351e934351Sopenharmony_ci 3361e934351Sopenharmony_ci HttpResponse response; 3371e934351Sopenharmony_ci response.SetResponseCode(200); 3381e934351Sopenharmony_ci response.SetResponseTime("Thu, 19 May 2022 08:21:59 GMT"); 3391e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 3401e934351Sopenharmony_ci responseHeader["expires"] = "Thu, 19 May 2022 08:22:26 GMT"; 3411e934351Sopenharmony_ci 3421e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 3431e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 3441e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 3451e934351Sopenharmony_ci 3461e934351Sopenharmony_ci EXPECT_EQ(status, STALE); 3471e934351Sopenharmony_ci} 3481e934351Sopenharmony_ci 3491e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, CompareNumber_6, testing::ext::TestSize.Level1) 3501e934351Sopenharmony_ci{ 3511e934351Sopenharmony_ci HttpRequestOptions requestOptions; 3521e934351Sopenharmony_ci requestOptions.SetRequestTime("Thu, 20 May 2022 09:35:59 GMT"); 3531e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "min-fresh=20"); 3541e934351Sopenharmony_ci 3551e934351Sopenharmony_ci HttpResponse response; 3561e934351Sopenharmony_ci response.SetResponseCode(200); 3571e934351Sopenharmony_ci response.SetResponseTime("Thu, 20 May 2022 09:36:30 GMT"); 3581e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 3591e934351Sopenharmony_ci responseHeader["expires"] = "Sat, 04 Jun 2022 09:56:21 GMT"; 3601e934351Sopenharmony_ci responseHeader["date"] = "Fri, 20 May 2022 09:37:29 GMT"; 3611e934351Sopenharmony_ci 3621e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 3631e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 3641e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 3651e934351Sopenharmony_ci 3661e934351Sopenharmony_ci EXPECT_EQ(status, STALE); 3671e934351Sopenharmony_ci} 3681e934351Sopenharmony_ci 3691e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, CompareNumber_7, testing::ext::TestSize.Level1) 3701e934351Sopenharmony_ci{ 3711e934351Sopenharmony_ci HttpRequestOptions requestOptions; 3721e934351Sopenharmony_ci requestOptions.SetRequestTime("Thu, 20 May 2022 09:35:59 GMT"); 3731e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "min-fresh=20"); 3741e934351Sopenharmony_ci 3751e934351Sopenharmony_ci HttpResponse response; 3761e934351Sopenharmony_ci response.SetResponseCode(200); 3771e934351Sopenharmony_ci response.SetResponseTime("Thu, 20 May 2022 09:36:30 GMT"); 3781e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 3791e934351Sopenharmony_ci responseHeader["expires"] = "Sat, 04 Jun 2022 09:56:21 GMT"; 3801e934351Sopenharmony_ci responseHeader["last-modified"] = "Thu, 10 Feb 2022 10:55:14 GMT"; 3811e934351Sopenharmony_ci responseHeader["date"] = "Fri, 20 May 2022 09:37:29 GMT"; 3821e934351Sopenharmony_ci 3831e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 3841e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 3851e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 3861e934351Sopenharmony_ci 3871e934351Sopenharmony_ci EXPECT_EQ(status, STALE); 3881e934351Sopenharmony_ci} 3891e934351Sopenharmony_ci 3901e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, CompareNumber_8, testing::ext::TestSize.Level1) 3911e934351Sopenharmony_ci{ 3921e934351Sopenharmony_ci HttpRequestOptions requestOptions; 3931e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:36:30 GMT"); 3941e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "min-fresh=20"); 3951e934351Sopenharmony_ci 3961e934351Sopenharmony_ci HttpResponse response; 3971e934351Sopenharmony_ci response.SetResponseCode(200); 3981e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:59 GMT"); 3991e934351Sopenharmony_ci 4001e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 4011e934351Sopenharmony_ci responseHeader["expires"] = "Sat, 04 Jun 2022 09:56:21 GMT"; 4021e934351Sopenharmony_ci responseHeader["last-modified"] = "Thu, 10 Feb 2022 10:55:14 GMT"; 4031e934351Sopenharmony_ci responseHeader["etag"] = "6f6741d197947f9f10943d36c4d8210e"; 4041e934351Sopenharmony_ci responseHeader["date"] = "Fri, 20 May 2022 09:37:29 GMT"; 4051e934351Sopenharmony_ci 4061e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 4071e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 4081e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 4091e934351Sopenharmony_ci 4101e934351Sopenharmony_ci EXPECT_EQ(status, STALE); 4111e934351Sopenharmony_ci} 4121e934351Sopenharmony_ci 4131e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, CompareNumber_9, testing::ext::TestSize.Level1) 4141e934351Sopenharmony_ci{ 4151e934351Sopenharmony_ci HttpRequestOptions requestOptions; 4161e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:36:30 GMT"); 4171e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "min-fresh=20"); 4181e934351Sopenharmony_ci 4191e934351Sopenharmony_ci HttpResponse response; 4201e934351Sopenharmony_ci response.SetResponseCode(200); 4211e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:59 GMT"); 4221e934351Sopenharmony_ci 4231e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 4241e934351Sopenharmony_ci responseHeader["age"] = "60"; 4251e934351Sopenharmony_ci 4261e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 4271e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 4281e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 4291e934351Sopenharmony_ci 4301e934351Sopenharmony_ci EXPECT_EQ(status, 1); 4311e934351Sopenharmony_ci} 4321e934351Sopenharmony_ci 4331e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, computeFreshnessLifetimeLastModifiedNoDateBranch, testing::ext::TestSize.Level1) 4341e934351Sopenharmony_ci{ 4351e934351Sopenharmony_ci HttpRequestOptions requestOptions; 4361e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:36:30 GMT"); 4371e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "min-fresh=20"); 4381e934351Sopenharmony_ci 4391e934351Sopenharmony_ci HttpResponse response; 4401e934351Sopenharmony_ci response.SetResponseCode(200); 4411e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:59 GMT"); 4421e934351Sopenharmony_ci 4431e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 4441e934351Sopenharmony_ci responseHeader["cache-control"] = "public"; 4451e934351Sopenharmony_ci responseHeader["last-modified"] = "Thu, 10 Feb 2022 10:55:14 GMT"; 4461e934351Sopenharmony_ci 4471e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 4481e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 4491e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 4501e934351Sopenharmony_ci 4511e934351Sopenharmony_ci EXPECT_EQ(status, 1); 4521e934351Sopenharmony_ci} 4531e934351Sopenharmony_ci 4541e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, cache110WarningBranch, testing::ext::TestSize.Level1) 4551e934351Sopenharmony_ci{ 4561e934351Sopenharmony_ci HttpRequestOptions requestOptions; 4571e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:36:30 GMT"); 4581e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "min-fresh=60, max-stale=2000"); 4591e934351Sopenharmony_ci 4601e934351Sopenharmony_ci HttpResponse response; 4611e934351Sopenharmony_ci response.SetResponseCode(200); 4621e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:59 GMT"); 4631e934351Sopenharmony_ci 4641e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 4651e934351Sopenharmony_ci responseHeader["cache-control"] = "max-age=60, max-stale=500000000"; 4661e934351Sopenharmony_ci responseHeader["last-modified"] = "Thu, 10 Feb 2022 10:55:14 GMT"; 4671e934351Sopenharmony_ci responseHeader["date"] = "Fri, 20 May 2022 09:50:29 GMT"; 4681e934351Sopenharmony_ci 4691e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 4701e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 4711e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 4721e934351Sopenharmony_ci 4731e934351Sopenharmony_ci EXPECT_EQ(status, STALE); 4741e934351Sopenharmony_ci} 4751e934351Sopenharmony_ci 4761e934351Sopenharmony_ciCacheStatus switchTest(ResponseCode code) 4771e934351Sopenharmony_ci{ 4781e934351Sopenharmony_ci HttpRequestOptions requestOptions; 4791e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:36:30 GMT"); 4801e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "min-fresh=60, max-stale=2000"); 4811e934351Sopenharmony_ci 4821e934351Sopenharmony_ci HttpResponse response; 4831e934351Sopenharmony_ci response.SetResponseCode(static_cast<uint32_t>(code)); 4841e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:59 GMT"); 4851e934351Sopenharmony_ci 4861e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 4871e934351Sopenharmony_ci responseHeader["cache-control"] = "max-age=60, max-stale=500000000"; 4881e934351Sopenharmony_ci responseHeader["last-modified"] = "Thu, 10 Feb 2022 10:55:14 GMT"; 4891e934351Sopenharmony_ci responseHeader["date"] = "Fri, 20 May 2022 09:50:29 GMT"; 4901e934351Sopenharmony_ci 4911e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 4921e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 4931e934351Sopenharmony_ci return status; 4941e934351Sopenharmony_ci} 4951e934351Sopenharmony_ci 4961e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, cacheSwitchBranch, testing::ext::TestSize.Level1) 4971e934351Sopenharmony_ci{ 4981e934351Sopenharmony_ci CacheStatus result; 4991e934351Sopenharmony_ci std::vector<ResponseCode> respCode = {ResponseCode::OK, ResponseCode::NOT_AUTHORITATIVE, 5001e934351Sopenharmony_ci ResponseCode::NO_CONTENT, ResponseCode::MULT_CHOICE, 5011e934351Sopenharmony_ci ResponseCode::MOVED_PERM, ResponseCode::NOT_FOUND, 5021e934351Sopenharmony_ci ResponseCode::BAD_METHOD, ResponseCode::GONE, 5031e934351Sopenharmony_ci ResponseCode::REQ_TOO_LONG, ResponseCode::NOT_IMPLEMENTED}; 5041e934351Sopenharmony_ci 5051e934351Sopenharmony_ci for (const auto &iterRespCode : respCode) { 5061e934351Sopenharmony_ci NETSTACK_LOGI("respCode:%d", iterRespCode); 5071e934351Sopenharmony_ci } 5081e934351Sopenharmony_ci 5091e934351Sopenharmony_ci for (const auto &iterRespCode : respCode) { 5101e934351Sopenharmony_ci result = switchTest(iterRespCode); 5111e934351Sopenharmony_ci EXPECT_EQ(result, STALE); 5121e934351Sopenharmony_ci } 5131e934351Sopenharmony_ci} 5141e934351Sopenharmony_ci 5151e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, cache113WarningBranch, testing::ext::TestSize.Level1) 5161e934351Sopenharmony_ci{ 5171e934351Sopenharmony_ci HttpRequestOptions requestOptions; 5181e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:36:30 GMT"); 5191e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "min-fresh=2, max-stale=9000000000"); 5201e934351Sopenharmony_ci 5211e934351Sopenharmony_ci HttpResponse response; 5221e934351Sopenharmony_ci response.SetResponseCode(200); 5231e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:59 GMT"); 5241e934351Sopenharmony_ci 5251e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 5261e934351Sopenharmony_ci responseHeader["cache-control"] = "max-stale=5000000000000000"; 5271e934351Sopenharmony_ci responseHeader["last-modified"] = "Sat, 04 Jun 2022 09:56:21 GMT"; 5281e934351Sopenharmony_ci responseHeader["date"] = "Mon, 20 Jun 2022 09:56:21 GMT"; 5291e934351Sopenharmony_ci 5301e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 5311e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 5321e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 5331e934351Sopenharmony_ci 5341e934351Sopenharmony_ci EXPECT_EQ(status, FRESH); 5351e934351Sopenharmony_ci} 5361e934351Sopenharmony_ci 5371e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, reqHeaderEtagBranch, testing::ext::TestSize.Level1) 5381e934351Sopenharmony_ci{ 5391e934351Sopenharmony_ci HttpRequestOptions requestOptions; 5401e934351Sopenharmony_ci requestOptions.SetRequestTime("Thu, 19 May 2022 08:19:59 GMT"); 5411e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "min-fresh=20"); 5421e934351Sopenharmony_ci 5431e934351Sopenharmony_ci HttpResponse response; 5441e934351Sopenharmony_ci response.SetResponseCode(200); 5451e934351Sopenharmony_ci response.SetResponseTime("Thu, 19 May 2022 08:21:59 GMT"); 5461e934351Sopenharmony_ci 5471e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 5481e934351Sopenharmony_ci responseHeader["expires"] = "Thu, 19 May 2022 08:22:26 GMT"; 5491e934351Sopenharmony_ci responseHeader["etag"] = "6f6741d197947f9f10943d36c4d8210e"; 5501e934351Sopenharmony_ci 5511e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 5521e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 5531e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 5541e934351Sopenharmony_ci 5551e934351Sopenharmony_ci EXPECT_EQ(status, STALE); 5561e934351Sopenharmony_ci} 5571e934351Sopenharmony_ci 5581e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, reqHeaderLastModifiedBranch, testing::ext::TestSize.Level1) 5591e934351Sopenharmony_ci{ 5601e934351Sopenharmony_ci HttpRequestOptions requestOptions; 5611e934351Sopenharmony_ci requestOptions.SetRequestTime("Thu, 19 May 2022 08:19:59 GMT"); 5621e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "min-fresh=20"); 5631e934351Sopenharmony_ci 5641e934351Sopenharmony_ci HttpResponse response; 5651e934351Sopenharmony_ci response.SetResponseCode(200); 5661e934351Sopenharmony_ci response.SetResponseTime("Thu, 19 May 2022 08:21:59 GMT"); 5671e934351Sopenharmony_ci 5681e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 5691e934351Sopenharmony_ci responseHeader["expires"] = "Thu, 19 May 2022 08:22:26 GMT"; 5701e934351Sopenharmony_ci responseHeader["last-modified"] = "Sat, 04 Jun 2022 09:56:21 GMT"; 5711e934351Sopenharmony_ci 5721e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 5731e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 5741e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 5751e934351Sopenharmony_ci 5761e934351Sopenharmony_ci EXPECT_EQ(status, STALE); 5771e934351Sopenharmony_ci} 5781e934351Sopenharmony_ci 5791e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, reqHeaderDateBranch, testing::ext::TestSize.Level1) 5801e934351Sopenharmony_ci{ 5811e934351Sopenharmony_ci HttpRequestOptions requestOptions; 5821e934351Sopenharmony_ci requestOptions.SetRequestTime("Thu, 19 May 2022 08:19:59 GMT"); 5831e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "min-fresh=20"); 5841e934351Sopenharmony_ci 5851e934351Sopenharmony_ci HttpResponse response; 5861e934351Sopenharmony_ci response.SetResponseCode(200); 5871e934351Sopenharmony_ci response.SetResponseTime("Thu, 19 May 2022 08:21:59 GMT"); 5881e934351Sopenharmony_ci 5891e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 5901e934351Sopenharmony_ci responseHeader["expires"] = "Thu, 19 May 2022 08:22:26 GMT"; 5911e934351Sopenharmony_ci responseHeader["date"] = "Sat, 04 Jun 2022 09:56:21 GMT"; 5921e934351Sopenharmony_ci 5931e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 5941e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 5951e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 5961e934351Sopenharmony_ci 5971e934351Sopenharmony_ci EXPECT_EQ(status, STALE); 5981e934351Sopenharmony_ci} 5991e934351Sopenharmony_ci 6001e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, headerNull, testing::ext::TestSize.Level1) 6011e934351Sopenharmony_ci{ 6021e934351Sopenharmony_ci HttpRequestOptions requestOptions; 6031e934351Sopenharmony_ci requestOptions.SetRequestTime("Thu, 19 May 2022 08:19:59 GMT"); 6041e934351Sopenharmony_ci 6051e934351Sopenharmony_ci HttpResponse response; 6061e934351Sopenharmony_ci response.SetResponseCode(200); 6071e934351Sopenharmony_ci response.SetResponseTime("Thu, 19 May 2022 08:21:59 GMT"); 6081e934351Sopenharmony_ci 6091e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 6101e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 6111e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 6121e934351Sopenharmony_ci 6131e934351Sopenharmony_ci EXPECT_EQ(status, STALE); 6141e934351Sopenharmony_ci} 6151e934351Sopenharmony_ci 6161e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, requestTimeEmpty, testing::ext::TestSize.Level1) 6171e934351Sopenharmony_ci{ 6181e934351Sopenharmony_ci HttpRequestOptions requestOptions; 6191e934351Sopenharmony_ci 6201e934351Sopenharmony_ci HttpResponse response; 6211e934351Sopenharmony_ci response.SetResponseCode(200); 6221e934351Sopenharmony_ci response.SetResponseTime("Thu, 19 May 2022 08:21:59 GMT"); 6231e934351Sopenharmony_ci 6241e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 6251e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 6261e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 6271e934351Sopenharmony_ci 6281e934351Sopenharmony_ci EXPECT_EQ(status, STALE); 6291e934351Sopenharmony_ci} 6301e934351Sopenharmony_ci 6311e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, computeFreshnessLifetimeEnd, testing::ext::TestSize.Level1) 6321e934351Sopenharmony_ci{ 6331e934351Sopenharmony_ci HttpRequestOptions requestOptions; 6341e934351Sopenharmony_ci requestOptions.SetRequestTime("Thu, 19 May 2022 08:19:59 GMT"); 6351e934351Sopenharmony_ci 6361e934351Sopenharmony_ci HttpResponse response; 6371e934351Sopenharmony_ci response.SetResponseCode(200); 6381e934351Sopenharmony_ci response.SetResponseTime("Thu, 19 May 2022 08:21:59 GMT"); 6391e934351Sopenharmony_ci 6401e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 6411e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 6421e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 6431e934351Sopenharmony_ci 6441e934351Sopenharmony_ci EXPECT_EQ(status, STALE); 6451e934351Sopenharmony_ci} 6461e934351Sopenharmony_ci 6471e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, isCacheableMovedTempIfCondition, testing::ext::TestSize.Level1) 6481e934351Sopenharmony_ci{ 6491e934351Sopenharmony_ci HttpRequestOptions requestOptions; 6501e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:35:59 GMT"); 6511e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "min-fresh=20"); 6521e934351Sopenharmony_ci 6531e934351Sopenharmony_ci HttpResponse response; 6541e934351Sopenharmony_ci response.SetResponseCode(static_cast<uint32_t>(ResponseCode::MOVED_TEMP)); 6551e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:30 GMT"); 6561e934351Sopenharmony_ci 6571e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 6581e934351Sopenharmony_ci responseHeader["cache-control"] = "private"; 6591e934351Sopenharmony_ci responseHeader["last-modified"] = "Thu, 10 Feb 2022 10:55:14 GMT"; 6601e934351Sopenharmony_ci 6611e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 6621e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 6631e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 6641e934351Sopenharmony_ci 6651e934351Sopenharmony_ci EXPECT_EQ(status, STALE); 6661e934351Sopenharmony_ci} 6671e934351Sopenharmony_ci 6681e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, computeFreshnessLifetimeDelta, testing::ext::TestSize.Level1) 6691e934351Sopenharmony_ci{ 6701e934351Sopenharmony_ci HttpRequestOptions requestOptions; 6711e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:35:59 GMT"); 6721e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "min-fresh=20"); 6731e934351Sopenharmony_ci 6741e934351Sopenharmony_ci HttpResponse response; 6751e934351Sopenharmony_ci response.SetResponseCode(200); 6761e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:30 GMT"); 6771e934351Sopenharmony_ci 6781e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 6791e934351Sopenharmony_ci responseHeader["last-modified"] = "Mon, 18 Jul 2022 10:55:14 GMT"; 6801e934351Sopenharmony_ci 6811e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 6821e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 6831e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 6841e934351Sopenharmony_ci 6851e934351Sopenharmony_ci EXPECT_EQ(status, STALE); 6861e934351Sopenharmony_ci} 6871e934351Sopenharmony_ci 6881e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, isCacheUsefulMaxStaleMillis, testing::ext::TestSize.Level1) 6891e934351Sopenharmony_ci{ 6901e934351Sopenharmony_ci HttpRequestOptions requestOptions; 6911e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:35:59 GMT"); 6921e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "max-stale=20"); 6931e934351Sopenharmony_ci 6941e934351Sopenharmony_ci HttpResponse response; 6951e934351Sopenharmony_ci response.SetResponseCode(200); 6961e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:30 GMT"); 6971e934351Sopenharmony_ci 6981e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 6991e934351Sopenharmony_ci responseHeader["last-modified"] = "Thu, 10 Feb 2022 10:55:14 GMT"; 7001e934351Sopenharmony_ci 7011e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 7021e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 7031e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 7041e934351Sopenharmony_ci 7051e934351Sopenharmony_ci EXPECT_EQ(status, STALE); 7061e934351Sopenharmony_ci} 7071e934351Sopenharmony_ci 7081e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, isCacheableMovedTempIfCondition2, testing::ext::TestSize.Level1) 7091e934351Sopenharmony_ci{ 7101e934351Sopenharmony_ci HttpRequestOptions requestOptions; 7111e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:35:59 GMT"); 7121e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "min-fresh=20, no-store"); 7131e934351Sopenharmony_ci 7141e934351Sopenharmony_ci HttpResponse response; 7151e934351Sopenharmony_ci response.SetResponseCode(200); 7161e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:30 GMT"); 7171e934351Sopenharmony_ci 7181e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 7191e934351Sopenharmony_ci responseHeader["cache-control"] = "private"; 7201e934351Sopenharmony_ci responseHeader["last-modified"] = "Thu, 10 Feb 2022 10:55:14 GMT"; 7211e934351Sopenharmony_ci 7221e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 7231e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 7241e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 7251e934351Sopenharmony_ci 7261e934351Sopenharmony_ci EXPECT_EQ(status, DENY); 7271e934351Sopenharmony_ci} 7281e934351Sopenharmony_ci 7291e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, isCacheableMovedTempIfCondition3, testing::ext::TestSize.Level1) 7301e934351Sopenharmony_ci{ 7311e934351Sopenharmony_ci HttpRequestOptions requestOptions; 7321e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:35:59 GMT"); 7331e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "min-fresh=20"); 7341e934351Sopenharmony_ci 7351e934351Sopenharmony_ci HttpResponse response; 7361e934351Sopenharmony_ci response.SetResponseCode(200); 7371e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:30 GMT"); 7381e934351Sopenharmony_ci 7391e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 7401e934351Sopenharmony_ci responseHeader["cache-control"] = "private, no-store"; 7411e934351Sopenharmony_ci responseHeader["last-modified"] = "Thu, 10 Feb 2022 10:55:14 GMT"; 7421e934351Sopenharmony_ci 7431e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 7441e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 7451e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 7461e934351Sopenharmony_ci 7471e934351Sopenharmony_ci EXPECT_EQ(status, DENY); 7481e934351Sopenharmony_ci} 7491e934351Sopenharmony_ci 7501e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, isCacheableMovedTempIfCondition4, testing::ext::TestSize.Level1) 7511e934351Sopenharmony_ci{ 7521e934351Sopenharmony_ci HttpRequestOptions requestOptions; 7531e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:35:59 GMT"); 7541e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "min-fresh=20"); 7551e934351Sopenharmony_ci 7561e934351Sopenharmony_ci HttpResponse response; 7571e934351Sopenharmony_ci response.SetResponseCode(200); 7581e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:30 GMT"); 7591e934351Sopenharmony_ci 7601e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 7611e934351Sopenharmony_ci responseHeader["cache-control"] = "private, must-revalidate"; 7621e934351Sopenharmony_ci responseHeader["last-modified"] = "Thu, 10 Feb 2022 10:55:14 GMT"; 7631e934351Sopenharmony_ci 7641e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 7651e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 7661e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 7671e934351Sopenharmony_ci 7681e934351Sopenharmony_ci EXPECT_EQ(status, STALE); 7691e934351Sopenharmony_ci} 7701e934351Sopenharmony_ci 7711e934351Sopenharmony_ciHWTEST_F(HttpCacheStrategyTest, CompareNumber_6_2, testing::ext::TestSize.Level1) 7721e934351Sopenharmony_ci{ 7731e934351Sopenharmony_ci HttpRequestOptions requestOptions; 7741e934351Sopenharmony_ci requestOptions.SetRequestTime("Fri, 20 May 2022 09:35:59 GMT"); 7751e934351Sopenharmony_ci requestOptions.SetHeader("cache-control", "min-fresh=20"); 7761e934351Sopenharmony_ci 7771e934351Sopenharmony_ci HttpResponse response; 7781e934351Sopenharmony_ci response.SetResponseCode(200); 7791e934351Sopenharmony_ci response.SetResponseTime("Fri, 20 May 2022 09:36:30 GMT"); 7801e934351Sopenharmony_ci 7811e934351Sopenharmony_ci auto &responseHeader = const_cast<std::map<std::string, std::string> &>(response.GetHeader()); 7821e934351Sopenharmony_ci responseHeader["cache-control"] = "no-cache"; 7831e934351Sopenharmony_ci responseHeader["expires"] = "Sat, 04 Jun 2022 09:56:21 GMT"; 7841e934351Sopenharmony_ci responseHeader["date"] = "Fri, 20 May 2022 09:37:29 GMT"; 7851e934351Sopenharmony_ci 7861e934351Sopenharmony_ci HttpCacheStrategy cacheStrategy(requestOptions); 7871e934351Sopenharmony_ci CacheStatus status = cacheStrategy.RunStrategy(response); 7881e934351Sopenharmony_ci NETSTACK_LOGI("status = %{public}d", status); 7891e934351Sopenharmony_ci 7901e934351Sopenharmony_ci EXPECT_EQ(status, STALE); 7911e934351Sopenharmony_ci} 7921e934351Sopenharmony_ci} // namespace