xref: /openbmc/phosphor-user-manager/test/execute_cmd_test.cpp (revision 2746e0c0e6caac95e1b690b3757623e81470c370)
1 #include "user_mgr.hpp"
2 
3 #include <gtest/gtest.h>
4 
TEST(ExecuteCmdTest,CommandReturnsEmptyOutput)5 TEST(ExecuteCmdTest, CommandReturnsEmptyOutput)
6 {
7     std::vector<std::string> output = phosphor::user::executeCmd("/bin/true");
8     ASSERT_TRUE(output.empty());
9 }
10 
TEST(ExecuteCmdTest,CommandWithArgs)11 TEST(ExecuteCmdTest, CommandWithArgs)
12 {
13     std::vector<std::string> output = phosphor::user::executeCmd(
14         "/bin/echo", "testing", "with", "multiple", "args");
15     ASSERT_EQ(output.size(), 1);
16     EXPECT_EQ(output[0], "testing with multiple args");
17 }
18 
TEST(ExecuteCmdTest,CommandReturnsOutput)19 TEST(ExecuteCmdTest, CommandReturnsOutput)
20 {
21     std::vector<std::string> output =
22         phosphor::user::executeCmd("/bin/echo", "-e", "hello\\nworld");
23     ASSERT_EQ(output.size(), 2);
24     EXPECT_EQ(output[0], "hello");
25     EXPECT_EQ(output[1], "world");
26 }
27 
TEST(ExecuteCmdTest,NonExistentCommand)28 TEST(ExecuteCmdTest, NonExistentCommand)
29 {
30     EXPECT_THROW(
31         phosphor::user::executeCmd("/path/to/nonexistent_command"),
32         sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure);
33 }
34 
TEST(ExecuteCmdTest,CommandReturnsNonZeroExitCode)35 TEST(ExecuteCmdTest, CommandReturnsNonZeroExitCode)
36 {
37     EXPECT_THROW(
38         phosphor::user::executeCmd("/bin/false"),
39         sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure);
40 }
41