xref: /openbmc/bmcweb/test/include/openbmc_dbus_rest_test.cpp (revision 40e9b92ec19acffb46f83a6e55b18974da5d708e)
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
TEST(OpenbmcDbusRestTest,ValidFilenameGood)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
TEST(OpenbmcDbusRestTest,ValidFilenameBad)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 
TEST(OpenBmcDbusTest,TestArgSplit)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