TestStorageAccessHeader.cpp (3527B)
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 6 #include <ostream> 7 8 #include "gtest/gtest-param-test.h" 9 #include "gtest/gtest.h" 10 11 #include "nsNetUtil.h" 12 13 using namespace mozilla; 14 using namespace mozilla::net; 15 16 struct SAParseTestData { 17 nsCString header; 18 nsresult result; 19 20 ActivateStorageAccessVariant variant; 21 // only set if variant == ActivateOrigin, otherwise asserted to be empty 22 nsCString origin; 23 24 friend void PrintTo(const SAParseTestData& aData, std::ostream* aOs) { 25 *aOs << "(header=" << aData.header << ", result=" << (int)aData.result 26 << ", variant=" << aData.variant << ", origin=" << aData.origin << ")"; 27 } 28 }; 29 30 class SAParseTest : public ::testing::TestWithParam<SAParseTestData> {}; 31 32 TEST_P(SAParseTest, Simple) { 33 const SAParseTestData test = GetParam(); 34 35 Result<ActivateStorageAccess, nsresult> activate = 36 ParseActivateStorageAccess(test.header); 37 38 (void)activate 39 .map([&test](const ActivateStorageAccess& got) { 40 EXPECT_EQ(test.result, NS_OK); 41 EXPECT_EQ(test.variant, got.variant); 42 EXPECT_EQ(test.origin, got.origin); 43 if (got.variant != ActivateStorageAccessVariant::RetryOrigin) { 44 // origin only gets set in the RetryOrigin variant 45 EXPECT_EQ(got.origin, ""_ns); 46 } 47 return 0; 48 }) 49 .mapErr([&test](nsresult gotResult) { 50 EXPECT_EQ(test.result, gotResult); 51 EXPECT_EQ(test.origin, ""_ns); 52 53 return gotResult; 54 }); 55 } 56 57 MOZ_RUNINIT const SAParseTestData sa_parse_tests[] = { 58 {"load"_ns, NS_OK, ActivateStorageAccessVariant::Load, ""_ns}, 59 {"retry; allowed-origin=*"_ns, NS_OK, 60 ActivateStorageAccessVariant::RetryAny, ""_ns}, 61 {"retry; allowed-origin=\"https://example.com\""_ns, NS_OK, 62 ActivateStorageAccessVariant::RetryOrigin, "https://example.com"_ns}, 63 {"retry; allowed-origin=\"*\""_ns, NS_OK, 64 ActivateStorageAccessVariant::RetryOrigin, "*"_ns}, 65 {"retry ;allowed-origin=*"_ns, NS_ERROR_FAILURE, 66 ActivateStorageAccessVariant::Load, ""_ns}, 67 {"retry; allowed-origin = *"_ns, NS_ERROR_FAILURE, 68 ActivateStorageAccessVariant::Load, ""_ns}, 69 {"retry=value; allowed-origin=\"*\""_ns, NS_ERROR_FAILURE, 70 ActivateStorageAccessVariant::Load, ""_ns}, 71 {"retry=value;allowed-origin=\"*\""_ns, NS_ERROR_FAILURE, 72 ActivateStorageAccessVariant::Load, ""_ns}, 73 {"retry;allowed-origin=*;allowed-origin=\"https://example.com\""_ns, NS_OK, 74 ActivateStorageAccessVariant::RetryOrigin, "https://example.com"_ns}, 75 {"retry;allowed-origin=\"https://example.com\";allowed-origin=*;"_ns, 76 NS_ERROR_FAILURE, ActivateStorageAccessVariant::Load, ""_ns}, 77 {"retry;allowed-origin=\"https://example.net\";allowed-origin=\"https://example.com\""_ns, 78 NS_OK, ActivateStorageAccessVariant::RetryOrigin, 79 "https://example.com"_ns}, 80 {"retry;allowed-origin=\"https://example.com\";allowed-origin=*;"_ns, 81 NS_ERROR_FAILURE, ActivateStorageAccessVariant::Load, ""_ns}, 82 {"\"load\""_ns, NS_ERROR_FAILURE, ActivateStorageAccessVariant::Load, 83 ""_ns}, 84 {"something-else"_ns, NS_ERROR_FAILURE, ActivateStorageAccessVariant::Load, 85 ""_ns}, 86 }; 87 88 INSTANTIATE_TEST_SUITE_P(TestStorageAccessHeader, SAParseTest, 89 testing::ValuesIn(sa_parse_tests));