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