blob: 796b2a47622d6ad8be226532ebf5b31e90447bce [file] [log] [blame]
// Copyright 2018 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "init/usermode-helper.h"
#include <initializer_list>
#include <vector>
#include <gtest/gtest.h>
namespace {
// Convenience function.
bool ValidateProgramArgs(std::initializer_list<const char*> argv) {
std::vector<const char*> vargv(argv);
return usermode_helper::ValidateProgramArgs(argv.size(), vargv.data());
}
} // namespace
TEST(ValidateProgramArgs, UnknownPrograms) {
EXPECT_FALSE(ValidateProgramArgs({"/sbin/crash_reporter "}));
EXPECT_FALSE(ValidateProgramArgs({"crash_reporter"}));
EXPECT_FALSE(ValidateProgramArgs({"/bin/crash_reporter"}));
}
TEST(ValidateProgramArgs, GoodCrashReporter) {
EXPECT_TRUE(ValidateProgramArgs({"/sbin/crash_reporter", "--user=foo"}));
}
TEST(ValidateProgramArgs, BadCrashReporter) {
EXPECT_FALSE(ValidateProgramArgs({"/sbin/crash_reporter"}));
EXPECT_FALSE(ValidateProgramArgs({"/sbin/crash_reporter", "--init"}));
}
TEST(ValidateProgramArgs, GoodModprobe) {
EXPECT_TRUE(ValidateProgramArgs({"/sbin/modprobe", "-q", "--", "mod"}));
}
TEST(ValidateProgramArgs, BadModprobe) {
EXPECT_FALSE(ValidateProgramArgs({"/sbin/modprobe"}));
EXPECT_FALSE(ValidateProgramArgs({"/sbin/modprobe", "mod"}));
EXPECT_FALSE(ValidateProgramArgs({"/sbin/modprobe", "-q"}));
EXPECT_FALSE(ValidateProgramArgs({"/sbin/modprobe", "-q", "mod"}));
EXPECT_FALSE(ValidateProgramArgs({"/sbin/modprobe", "-q", "--"}));
EXPECT_FALSE(ValidateProgramArgs({"/sbin/modprobe", "--"}));
EXPECT_FALSE(ValidateProgramArgs({"/sbin/modprobe", "--", "mod"}));
EXPECT_FALSE(ValidateProgramArgs({"/sbin/modprobe", "-a", "mod1", "mod2"}));
EXPECT_FALSE(ValidateProgramArgs({"/sbin/modprobe", "-r", "mod"}));
}
TEST(ValidateProgramArgs, GoodPoweroff) {
EXPECT_TRUE(ValidateProgramArgs({"/sbin/poweroff"}));
}
TEST(ValidateProgramArgs, BadPoweroff) {
EXPECT_FALSE(ValidateProgramArgs({"/sbin/poweroff", "-f"}));
}
TEST(ValidateProgramArgs, GoodReboot) {
EXPECT_TRUE(ValidateProgramArgs({"/sbin/reboot"}));
}
TEST(ValidateProgramArgs, BadReboot) {
EXPECT_FALSE(ValidateProgramArgs({"/sbin/reboot", "-f"}));
}
TEST(ValidateProgramArgs, GoodRequestKey) {
EXPECT_TRUE(
ValidateProgramArgs({"/sbin/request-key", "<op>", "<key>", "<uid>",
"<gid>", "<keyring>", "<keyring>", "<keyring>"}));
}
TEST(ValidateProgramArgs, RequestKey) {
EXPECT_FALSE(
ValidateProgramArgs({"/sbin/request-key", "<op>", "<key>", "<uid>",
"<gid>", "<keyring>", "<keyring>", "--option"}));
EXPECT_FALSE(
ValidateProgramArgs({"/sbin/request-key", "<op>", "<key>", "<uid>",
"<gid>", "<keyring>", "<keyring>"}));
EXPECT_FALSE(ValidateProgramArgs({"/sbin/request-key", "<op>", "<key>",
"<uid>", "<gid>", "<keyring>", "<keyring>",
"<keyring>", "toomany"}));
}