#include "chrome/updater/updater_scope.h"
#include <string>
#include <vector>
#include "base/command_line.h"
#include "base/files/file_path.h"
#include "chrome/updater/constants.h"
#include "chrome/updater/util/util.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace updater {
class GetUpdaterScopeForCommandLineTest : public testing::Test { … };
TEST_F(GetUpdaterScopeForCommandLineTest, NoParams) { … }
TEST_F(GetUpdaterScopeForCommandLineTest, System) { … }
#if BUILDFLAG(IS_WIN)
TEST_F(GetUpdaterScopeForCommandLineTest, Prefers) {
command_line_.AppendSwitch(kCmdLinePrefersUser);
EXPECT_EQ(GetUpdaterScopeForCommandLine(command_line_), UpdaterScope::kUser);
EXPECT_FALSE(IsPrefersForCommandLine(command_line_));
}
TEST_F(GetUpdaterScopeForCommandLineTest, System_And_Prefers) {
command_line_.AppendSwitch(kSystemSwitch);
command_line_.AppendSwitch(kCmdLinePrefersUser);
EXPECT_EQ(GetUpdaterScopeForCommandLine(command_line_),
UpdaterScope::kSystem);
EXPECT_FALSE(IsPrefersForCommandLine(command_line_));
}
struct TagSwitchTestCase {
const std::string tag_switch;
};
class TagSwitchTest : public ::testing::WithParamInterface<TagSwitchTestCase>,
public GetUpdaterScopeForCommandLineTest {};
INSTANTIATE_TEST_SUITE_P(TagSwitchTestCases,
TagSwitchTest,
::testing::ValuesIn(std::vector<TagSwitchTestCase>{
{kInstallSwitch},
{kHandoffSwitch},
}));
TEST_P(TagSwitchTest, TagPrefers) {
command_line_.AppendSwitchASCII(
GetParam().tag_switch,
"appguid=5F46DE36-737D-4271-91C1-C062F9FE21D9&"
"appname=TestApp3&"
"needsadmin=prefers&");
EXPECT_EQ(GetUpdaterScopeForCommandLine(command_line_),
UpdaterScope::kSystem);
EXPECT_TRUE(IsPrefersForCommandLine(command_line_));
}
TEST_P(TagSwitchTest, Prefers_And_TagPrefers) {
command_line_.AppendSwitch(kCmdLinePrefersUser);
command_line_.AppendSwitchASCII(
GetParam().tag_switch,
"appguid=5F46DE36-737D-4271-91C1-C062F9FE21D9&"
"appname=TestApp3&"
"needsadmin=prefers&");
EXPECT_EQ(GetUpdaterScopeForCommandLine(command_line_), UpdaterScope::kUser);
EXPECT_TRUE(IsPrefersForCommandLine(command_line_));
}
TEST_P(TagSwitchTest, TagRuntime) {
command_line_.AppendSwitchASCII(GetParam().tag_switch, "runtime=true");
EXPECT_EQ(GetUpdaterScopeForCommandLine(command_line_), UpdaterScope::kUser);
}
TEST_P(TagSwitchTest, TagRuntimeUser) {
command_line_.AppendSwitchASCII(GetParam().tag_switch,
"runtime=true&needsadmin=false&");
EXPECT_EQ(GetUpdaterScopeForCommandLine(command_line_), UpdaterScope::kUser);
}
TEST_P(TagSwitchTest, TagRuntimeSystem) {
command_line_.AppendSwitchASCII(GetParam().tag_switch,
"runtime=true&needsadmin=true&");
EXPECT_EQ(GetUpdaterScopeForCommandLine(command_line_),
UpdaterScope::kSystem);
}
#endif
}