1*c33a039bSNan Zhou #include "openbmc_dbus_rest.hpp" 2*c33a039bSNan Zhou 3*c33a039bSNan Zhou #include <gmock/gmock.h> // IWYU pragma: keep 4*c33a039bSNan Zhou #include <gtest/gtest.h> // IWYU pragma: keep 5*c33a039bSNan Zhou 6*c33a039bSNan Zhou // IWYU pragma: no_include <gtest/gtest-message.h> 7*c33a039bSNan Zhou // IWYU pragma: no_include <gtest/gtest-test-part.h> 8*c33a039bSNan Zhou // IWYU pragma: no_include "gtest/gtest_pred_impl.h" 9*c33a039bSNan Zhou // IWYU pragma: no_include <gmock/gmock-matchers.h> 10*c33a039bSNan Zhou 11*c33a039bSNan Zhou namespace crow::openbmc_mapper 12*c33a039bSNan Zhou { 13*c33a039bSNan Zhou namespace 14*c33a039bSNan Zhou { 15*c33a039bSNan Zhou 16*c33a039bSNan Zhou using ::testing::ElementsAre; 17*c33a039bSNan Zhou // Also see redfish-core/ut/configfile_test.cpp 18*c33a039bSNan Zhou TEST(OpenbmcDbusRestTest, ValidFilenameGood) 19*c33a039bSNan Zhou { 20*c33a039bSNan Zhou EXPECT_TRUE(validateFilename("GoodConfigFile")); 21*c33a039bSNan Zhou EXPECT_TRUE(validateFilename("_Underlines_")); 22*c33a039bSNan Zhou EXPECT_TRUE(validateFilename("8675309")); 23*c33a039bSNan Zhou EXPECT_TRUE(validateFilename("-Dashes-")); 24*c33a039bSNan Zhou EXPECT_TRUE(validateFilename("With Spaces")); 25*c33a039bSNan Zhou EXPECT_TRUE(validateFilename("One.Dot")); 26*c33a039bSNan Zhou EXPECT_TRUE(validateFilename("trailingdot.")); 27*c33a039bSNan Zhou EXPECT_TRUE(validateFilename("-_ o _-")); 28*c33a039bSNan Zhou EXPECT_TRUE(validateFilename(" ")); 29*c33a039bSNan Zhou EXPECT_TRUE(validateFilename(" .")); 30*c33a039bSNan Zhou } 31*c33a039bSNan Zhou 32*c33a039bSNan Zhou // There is no length test yet because validateFilename() does not care yet 33*c33a039bSNan Zhou TEST(OpenbmcDbusRestTest, ValidFilenameBad) 34*c33a039bSNan Zhou { 35*c33a039bSNan Zhou EXPECT_FALSE(validateFilename("")); 36*c33a039bSNan Zhou EXPECT_FALSE(validateFilename("Bad@file")); 37*c33a039bSNan Zhou EXPECT_FALSE(validateFilename("/../../../../../etc/badpath")); 38*c33a039bSNan Zhou EXPECT_FALSE(validateFilename("/../../etc/badpath")); 39*c33a039bSNan Zhou EXPECT_FALSE(validateFilename("/mydir/configFile")); 40*c33a039bSNan Zhou EXPECT_FALSE(validateFilename("/")); 41*c33a039bSNan Zhou EXPECT_FALSE(validateFilename(".leadingdot")); 42*c33a039bSNan Zhou EXPECT_FALSE(validateFilename("Two..Dots")); 43*c33a039bSNan Zhou EXPECT_FALSE(validateFilename("../../../../../../etc/shadow")); 44*c33a039bSNan Zhou EXPECT_FALSE(validateFilename(".")); 45*c33a039bSNan Zhou } 46*c33a039bSNan Zhou 47*c33a039bSNan Zhou TEST(OpenBmcDbusTest, TestArgSplit) 48*c33a039bSNan Zhou { 49*c33a039bSNan Zhou // test the basic types 50*c33a039bSNan Zhou EXPECT_THAT(dbusArgSplit("x"), ElementsAre("x")); 51*c33a039bSNan Zhou EXPECT_THAT(dbusArgSplit("y"), ElementsAre("y")); 52*c33a039bSNan Zhou EXPECT_THAT(dbusArgSplit("b"), ElementsAre("b")); 53*c33a039bSNan Zhou EXPECT_THAT(dbusArgSplit("n"), ElementsAre("n")); 54*c33a039bSNan Zhou EXPECT_THAT(dbusArgSplit("q"), ElementsAre("q")); 55*c33a039bSNan Zhou EXPECT_THAT(dbusArgSplit("i"), ElementsAre("i")); 56*c33a039bSNan Zhou EXPECT_THAT(dbusArgSplit("u"), ElementsAre("u")); 57*c33a039bSNan Zhou EXPECT_THAT(dbusArgSplit("x"), ElementsAre("x")); 58*c33a039bSNan Zhou EXPECT_THAT(dbusArgSplit("t"), ElementsAre("t")); 59*c33a039bSNan Zhou EXPECT_THAT(dbusArgSplit("d"), ElementsAre("d")); 60*c33a039bSNan Zhou EXPECT_THAT(dbusArgSplit("h"), ElementsAre("h")); 61*c33a039bSNan Zhou // test arrays 62*c33a039bSNan Zhou EXPECT_THAT(dbusArgSplit("ai"), ElementsAre("ai")); 63*c33a039bSNan Zhou EXPECT_THAT(dbusArgSplit("ax"), ElementsAre("ax")); 64*c33a039bSNan Zhou // test tuples 65*c33a039bSNan Zhou EXPECT_THAT(dbusArgSplit("(sss)"), ElementsAre("(sss)")); 66*c33a039bSNan Zhou EXPECT_THAT(dbusArgSplit("(sss)b"), ElementsAre("(sss)", "b")); 67*c33a039bSNan Zhou EXPECT_THAT(dbusArgSplit("b(sss)"), ElementsAre("b", "(sss)")); 68*c33a039bSNan Zhou 69*c33a039bSNan Zhou // Test nested types 70*c33a039bSNan Zhou EXPECT_THAT(dbusArgSplit("a{si}b"), ElementsAre("a{si}", "b")); 71*c33a039bSNan Zhou EXPECT_THAT(dbusArgSplit("a(sss)b"), ElementsAre("a(sss)", "b")); 72*c33a039bSNan Zhou EXPECT_THAT(dbusArgSplit("aa{si}b"), ElementsAre("aa{si}", "b")); 73*c33a039bSNan Zhou EXPECT_THAT(dbusArgSplit("i{si}b"), ElementsAre("i", "{si}", "b")); 74*c33a039bSNan Zhou } 75*c33a039bSNan Zhou } // namespace 76*c33a039bSNan Zhou } // namespace crow::openbmc_mapper 77