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