blob: 1bc320e7d2413333a582ba223de87fe7a64b199f [file] [log] [blame]
Ed Tanous40e9b922024-09-10 13:50:16 -07001// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright OpenBMC Authors
Nan Zhoua439ca22022-06-21 17:47:05 +00003#include "openbmc_dbus_rest.hpp"
Josh Lehan482c45a2022-03-29 17:10:44 -07004
Ed Tanous478b7ad2024-07-15 19:11:54 -07005#include <gmock/gmock.h>
6#include <gtest/gtest.h>
Josh Lehan482c45a2022-03-29 17:10:44 -07007
Nan Zhoua9bb43b2022-06-13 04:48:50 +00008namespace crow::openbmc_mapper
9{
10namespace
11{
12
13using ::testing::ElementsAre;
Josh Lehan482c45a2022-03-29 17:10:44 -070014// Also see redfish-core/ut/configfile_test.cpp
15TEST(OpenbmcDbusRestTest, ValidFilenameGood)
16{
Nan Zhoua9bb43b2022-06-13 04:48:50 +000017 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(" ."));
Josh Lehan482c45a2022-03-29 17:10:44 -070027}
28
29// There is no length test yet because validateFilename() does not care yet
30TEST(OpenbmcDbusRestTest, ValidFilenameBad)
31{
Nan Zhoua9bb43b2022-06-13 04:48:50 +000032 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("."));
Josh Lehan482c45a2022-03-29 17:10:44 -070042}
Nan Zhoudf91ea72022-06-13 23:58:49 +000043
44TEST(OpenBmcDbusTest, TestArgSplit)
45{
46 // test the basic types
Nan Zhoua9bb43b2022-06-13 04:48:50 +000047 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"));
Nan Zhoudf91ea72022-06-13 23:58:49 +000058 // test arrays
Nan Zhoua9bb43b2022-06-13 04:48:50 +000059 EXPECT_THAT(dbusArgSplit("ai"), ElementsAre("ai"));
60 EXPECT_THAT(dbusArgSplit("ax"), ElementsAre("ax"));
Nan Zhoudf91ea72022-06-13 23:58:49 +000061 // test tuples
Nan Zhoua9bb43b2022-06-13 04:48:50 +000062 EXPECT_THAT(dbusArgSplit("(sss)"), ElementsAre("(sss)"));
63 EXPECT_THAT(dbusArgSplit("(sss)b"), ElementsAre("(sss)", "b"));
64 EXPECT_THAT(dbusArgSplit("b(sss)"), ElementsAre("b", "(sss)"));
Nan Zhoudf91ea72022-06-13 23:58:49 +000065
66 // Test nested types
Nan Zhoua9bb43b2022-06-13 04:48:50 +000067 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"));
Nan Zhoudf91ea72022-06-13 23:58:49 +000071}
Nan Zhoua9bb43b2022-06-13 04:48:50 +000072} // namespace
73} // namespace crow::openbmc_mapper