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