1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
|
// 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_.AppendSwitchUTF8(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_.AppendSwitchUTF8(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_.AppendSwitchUTF8(GetParam().tag_switch, "runtime=true");
EXPECT_EQ(GetUpdaterScopeForCommandLine(command_line_), UpdaterScope::kUser);
}
TEST_P(TagSwitchTest, TagRuntimeUser) {
command_line_.AppendSwitchUTF8(GetParam().tag_switch,
"runtime=true&needsadmin=false&");
EXPECT_EQ(GetUpdaterScopeForCommandLine(command_line_), UpdaterScope::kUser);
}
TEST_P(TagSwitchTest, TagRuntimeSystem) {
command_line_.AppendSwitchUTF8(GetParam().tag_switch,
"runtime=true&needsadmin=true&");
EXPECT_EQ(GetUpdaterScopeForCommandLine(command_line_),
UpdaterScope::kSystem);
}
#endif
} // namespace updater
|