TEST_F(ProcessTests, test_launchWorker) { { std::vector<char*> argv; for (size_t i = 0; i < kExpectedWorkerArgsCount; i++) { char* entry = new char[strlen(kExpectedWorkerArgs[i]) + 1]; EXPECT_NE(entry, nullptr); memset(entry, '\0', strlen(kExpectedWorkerArgs[i]) + 1); memcpy(entry, kExpectedWorkerArgs[i], strlen(kExpectedWorkerArgs[i])); argv.push_back(entry); } argv.push_back(nullptr); auto process = PlatformProcess::launchWorker( kProcessTestExecPath.c_str(), static_cast<int>(kExpectedWorkerArgsCount), &argv[0]); for (size_t i = 0; i < argv.size(); i++) { delete[] argv[i]; } EXPECT_NE(nullptr, process.get()); int code = 0; EXPECT_TRUE(getProcessExitCode(*process, code)); EXPECT_EQ(code, WORKER_SUCCESS_CODE); } }
TEST_F(ProcessTests, test_launchExtension) { { auto process = PlatformProcess::launchExtension(kProcessTestExecPath.c_str(), kExpectedExtensionArgs[3], kExpectedExtensionArgs[5], kExpectedExtensionArgs[7], true); EXPECT_NE(nullptr, process.get()); int code = 0; EXPECT_TRUE(getProcessExitCode(*process, code)); EXPECT_EQ(code, EXTENSION_SUCCESS_CODE); } }
TEST_F(ProcessTests, test_launchExtensionQuotes) { { std::shared_ptr<osquery::PlatformProcess> process = osquery::PlatformProcess::launchExtension(kProcessTestExecPath.c_str(), "exten\"sion-te\"st", "socket-name", "100", "5", "true"); EXPECT_NE(nullptr, process.get()); int code = 0; EXPECT_TRUE(getProcessExitCode(*process, code)); EXPECT_EQ(code, EXTENSION_SUCCESS_CODE); } }
TEST_F(ProcessTests, test_launchExtension) { { std::shared_ptr<osquery::PlatformProcess> process = osquery::PlatformProcess::launchExtension(kProcessTestExecPath.c_str(), "extension-test", kExpectedExtensionArgs[2], kExpectedExtensionArgs[4], kExpectedExtensionArgs[6], "true"); EXPECT_NE(nullptr, process.get()); int code = 0; EXPECT_TRUE(getProcessExitCode(*process, code)); EXPECT_EQ(code, EXTENSION_SUCCESS_CODE); } }