blob: 0b36e1484157b9546ddf9b6f6abde7d4beab0b69 [file] [log] [blame]
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#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 {
protected:
base::CommandLine command_line_ =
base::CommandLine(GetExecutableRelativePath());
};
TEST_F(GetUpdaterScopeForCommandLineTest, NoParams) {
EXPECT_EQ(GetUpdaterScopeForCommandLine(command_line_), UpdaterScope::kUser);
EXPECT_FALSE(IsPrefersForCommandLine(command_line_));
}
TEST_F(GetUpdaterScopeForCommandLineTest, System) {
command_line_.AppendSwitch(kSystemSwitch);
EXPECT_EQ(GetUpdaterScopeForCommandLine(command_line_),
UpdaterScope::kSystem);
EXPECT_FALSE(IsPrefersForCommandLine(command_line_));
}
#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
} // namespace updater