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