1 #include "argument.hpp"
2 
3 #include <string>
4 #include <vector>
5 
6 #include <gtest/gtest.h>
7 
8 namespace phosphor::certs
9 {
10 namespace
11 {
12 
13 TEST(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 
26 TEST(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 
39 TEST(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 
52 TEST(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 
64 TEST(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 
77 TEST(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 
85 TEST(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 
94 TEST(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 
102 TEST(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
112