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