blob: d55abfa1d8d18252deee01410717f7698b0e2cce [file] [log] [blame]
Nan Zhou7047be62022-03-10 12:34:06 -08001#include "argument.hpp"
2
3#include <string>
4#include <vector>
5
6#include <gtest/gtest.h>
7
8namespace phosphor::certs
9{
10namespace
11{
12
13TEST(ProcessArguments, OnSuccessClientType)
14{
15 Arguments arguments;
16 std::vector<const char*> argv = {"binary", "--type", "client",
17 "--endpoint", "abc", "--path",
18 "def", "--unit", "ghi"};
19 EXPECT_EQ(processArguments(argv.size(), argv.data(), arguments), 0);
20 EXPECT_EQ(arguments.typeStr, "client");
21 EXPECT_EQ(arguments.endpoint, "abc");
22 EXPECT_EQ(arguments.path, "def");
23 EXPECT_EQ(arguments.unit, "ghi");
24}
25
26TEST(ProcessArguments, OnSuccessServerType)
27{
28 Arguments arguments;
29 std::vector<const char*> argv = {"binary", "--type", "server",
30 "--endpoint", "abc", "--path",
31 "def", "--unit", "ghi"};
32 EXPECT_EQ(processArguments(argv.size(), argv.data(), arguments), 0);
33 EXPECT_EQ(arguments.typeStr, "server");
34 EXPECT_EQ(arguments.endpoint, "abc");
35 EXPECT_EQ(arguments.path, "def");
36 EXPECT_EQ(arguments.unit, "ghi");
37}
38
39TEST(ProcessArguments, OnSuccessAuthorityType)
40{
41 Arguments arguments;
42 std::vector<const char*> argv = {"binary", "--type", "authority",
43 "--endpoint", "abc", "--path",
44 "def", "--unit", "ghi"};
45 EXPECT_NO_THROW(processArguments(argv.size(), argv.data(), arguments));
46 EXPECT_EQ(arguments.typeStr, "authority");
47 EXPECT_EQ(arguments.endpoint, "abc");
48 EXPECT_EQ(arguments.path, "def");
49 EXPECT_EQ(arguments.unit, "ghi");
50}
51
52TEST(ProcessArguments, UnitIsOptional)
53{
54 Arguments arguments;
55 std::vector<const char*> argv = {"binary", "--type", "client", "--endpoint",
56 "abc", "--path", "def"};
57 EXPECT_EQ(processArguments(argv.size(), argv.data(), arguments), 0);
58 EXPECT_EQ(arguments.typeStr, "client");
59 EXPECT_EQ(arguments.endpoint, "abc");
60 EXPECT_EQ(arguments.path, "def");
61 EXPECT_TRUE(arguments.unit.empty());
62}
63
64TEST(ProcessArguments, EmptyUnit)
65{
66 Arguments arguments;
67 std::vector<const char*> argv = {"binary", "--type", "client",
68 "--endpoint", "abc", "--path",
69 "def", "--unit", ""};
70 EXPECT_EQ(processArguments(argv.size(), argv.data(), arguments), 0);
71 EXPECT_EQ(arguments.typeStr, "client");
72 EXPECT_EQ(arguments.endpoint, "abc");
73 EXPECT_EQ(arguments.path, "def");
74 EXPECT_TRUE(arguments.unit.empty());
75}
76
77TEST(Type, MissTypeThrows)
78{
79 Arguments arguments;
80 std::vector<const char*> argv = {"binary", "--endpoint", "abc", "--path",
81 "def", "--unit", "ghi"};
82 EXPECT_NE(processArguments(argv.size(), argv.data(), arguments), 0);
83}
84
85TEST(Type, WrongTypeThrows)
86{
87 Arguments arguments;
88 std::vector<const char*> argv = {"binary", "--type", "no-supported",
89 "--endpoint", "abc", "--path",
90 "def", "--unit", "ghi"};
91 EXPECT_NE(processArguments(argv.size(), argv.data(), arguments), 0);
92}
93
94TEST(Endpoint, MissEndpointThrows)
95{
96 Arguments arguments;
97 std::vector<const char*> argv = {"binary", "--type", "client", "--path",
98 "def", "--unit", "ghi"};
99 EXPECT_NE(processArguments(argv.size(), argv.data(), arguments), 0);
100}
101
102TEST(Path, MissPathThrows)
103{
104 Arguments arguments;
105 std::vector<const char*> argv = {"binary", "--type", "client", "--endpoint",
106 "abc", "--unit", "ghi"};
107 EXPECT_NE(processArguments(argv.size(), argv.data(), arguments), 0);
108}
109} // namespace
110
111} // namespace phosphor::certs