blob: 33dd6d5e1b927aa6793d260540215f4be93dfd44 [file] [log] [blame]
Alex Deymoaea4c1c2015-08-19 20:24:43 -07001//
2// Copyright (C) 2011 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
adlr@google.com3defe6a2009-12-04 20:57:17 +000016
Alex Deymo8427b4a2014-11-05 14:00:32 -080017#include "update_engine/omaha_request_params.h"
18
adlr@google.com3defe6a2009-12-04 20:57:17 +000019#include <stdio.h>
Darin Petkovfbb40092010-07-29 17:05:50 -070020
adlr@google.com3defe6a2009-12-04 20:57:17 +000021#include <string>
Darin Petkovfbb40092010-07-29 17:05:50 -070022
Alex Deymo8427b4a2014-11-05 14:00:32 -080023#include <base/files/file_util.h>
24#include <gtest/gtest.h>
25
Alex Deymo39910dc2015-11-09 17:04:30 -080026#include "update_engine/common/constants.h"
27#include "update_engine/common/platform_constants.h"
28#include "update_engine/common/test_utils.h"
29#include "update_engine/common/utils.h"
Gilad Arnold5bb4c902014-04-10 12:32:13 -070030#include "update_engine/fake_system_state.h"
Alex Deymo39910dc2015-11-09 17:04:30 -080031#include "update_engine/payload_consumer/install_plan.h"
adlr@google.com3defe6a2009-12-04 20:57:17 +000032
Alex Deymo10875d92014-11-10 21:52:57 -080033using chromeos_update_engine::test_utils::WriteFileString;
adlr@google.com3defe6a2009-12-04 20:57:17 +000034using std::string;
35
36namespace chromeos_update_engine {
37
Jay Srinivasanae4697c2013-03-18 17:08:08 -070038class OmahaRequestParamsTest : public ::testing::Test {
39 public:
Gilad Arnold5bb4c902014-04-10 12:32:13 -070040 OmahaRequestParamsTest() : params_(&fake_system_state_) {}
Jay Srinivasanae4697c2013-03-18 17:08:08 -070041
Darin Petkov5a7f5652010-07-22 21:40:09 -070042 protected:
Jay Srinivasanae4697c2013-03-18 17:08:08 -070043 // Return true iff the OmahaRequestParams::Init succeeded. If
Alex Vakulenko88b591f2014-08-28 16:48:57 -070044 // out is non-null, it's set w/ the generated data.
Darin Petkov5a7f5652010-07-22 21:40:09 -070045 bool DoTest(OmahaRequestParams* out, const string& app_version,
46 const string& omaha_url);
47
Alex Deymo610277e2014-11-11 21:18:11 -080048 void SetUp() override {
Gilad Arnoldc9abbec2013-07-01 06:24:42 -070049 // Create a uniquely named test directory.
Alex Deymo85616652015-10-15 18:48:31 -070050 ASSERT_TRUE(utils::MakeTempDirectory(kTestDirTemplate, &test_dir_));
51 EXPECT_TRUE(base::CreateDirectory(base::FilePath(test_dir_ + "/etc")));
52 EXPECT_TRUE(base::CreateDirectory(
53 base::FilePath(test_dir_ + kStatefulPartition + "/etc")));
Jay Srinivasanae4697c2013-03-18 17:08:08 -070054 // Create a fresh copy of the params for each test, so there's no
55 // unintended reuse of state across tests.
Gilad Arnold5bb4c902014-04-10 12:32:13 -070056 OmahaRequestParams new_params(&fake_system_state_);
Jay Srinivasanae4697c2013-03-18 17:08:08 -070057 params_ = new_params;
Gilad Arnoldd04f8e22014-01-09 13:13:40 -080058 params_.set_root(test_dir_);
Alex Deymo85616652015-10-15 18:48:31 -070059 SetLockDown(false);
Darin Petkov5a7f5652010-07-22 21:40:09 -070060 }
61
Alex Deymo610277e2014-11-11 21:18:11 -080062 void TearDown() override {
Alex Deymo85616652015-10-15 18:48:31 -070063 EXPECT_TRUE(base::DeleteFile(base::FilePath(test_dir_), true));
64 }
65
66 void SetLockDown(bool locked_down) {
67 fake_system_state_.fake_hardware()->SetIsOfficialBuild(locked_down);
68 fake_system_state_.fake_hardware()->SetIsNormalBootMode(locked_down);
Darin Petkov5a7f5652010-07-22 21:40:09 -070069 }
70
Jay Srinivasanae4697c2013-03-18 17:08:08 -070071 OmahaRequestParams params_;
Gilad Arnold5bb4c902014-04-10 12:32:13 -070072 FakeSystemState fake_system_state_;
Darin Petkov49d91322010-10-25 16:34:58 -070073
Gilad Arnoldc9abbec2013-07-01 06:24:42 -070074 static const char* kTestDirTemplate;
75 string test_dir_;
adlr@google.com3defe6a2009-12-04 20:57:17 +000076};
77
Gilad Arnoldc9abbec2013-07-01 06:24:42 -070078const char* OmahaRequestParamsTest::kTestDirTemplate =
79 "omaha_request_params-test-XXXXXX";
adlr@google.com3defe6a2009-12-04 20:57:17 +000080
Jay Srinivasanae4697c2013-03-18 17:08:08 -070081bool OmahaRequestParamsTest::DoTest(OmahaRequestParams* out,
82 const string& app_version,
83 const string& omaha_url) {
84 bool success = params_.Init(app_version, omaha_url, false);
adlr@google.com3defe6a2009-12-04 20:57:17 +000085 if (out)
Darin Petkov49d91322010-10-25 16:34:58 -070086 *out = params_;
Darin Petkova4a8a8c2010-07-15 22:21:12 -070087 return success;
adlr@google.com3defe6a2009-12-04 20:57:17 +000088}
89
90namespace {
adlr@google.com3defe6a2009-12-04 20:57:17 +000091string GetMachineType() {
Gilad Arnold19a45f02012-07-19 12:36:10 -070092 string machine_type;
93 if (!utils::ReadPipe("uname -m", &machine_type))
adlr@google.com3defe6a2009-12-04 20:57:17 +000094 return "";
Gilad Arnold19a45f02012-07-19 12:36:10 -070095 // Strip anything from the first newline char.
96 size_t newline_pos = machine_type.find('\n');
97 if (newline_pos != string::npos)
98 machine_type.erase(newline_pos);
99 return machine_type;
adlr@google.com3defe6a2009-12-04 20:57:17 +0000100}
Alex Vakulenkod2779df2014-06-16 13:19:00 -0700101} // namespace
adlr@google.com3defe6a2009-12-04 20:57:17 +0000102
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700103TEST_F(OmahaRequestParamsTest, SimpleTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700104 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700105 test_dir_ + "/etc/lsb-release",
Darin Petkov5a7f5652010-07-22 21:40:09 -0700106 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
107 "CHROMEOS_RELEASE_FOO=bar\n"
108 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700109 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
Darin Petkov5a7f5652010-07-22 21:40:09 -0700110 "CHROMEOS_AUSERVER=http://www.google.com"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700111 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700112 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700113 EXPECT_EQ("Chrome OS", out.os_platform());
114 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
115 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700116 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700117 EXPECT_EQ("0.2.2.3", out.app_version());
118 EXPECT_EQ("en-US", out.app_lang());
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700119 EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700120 EXPECT_TRUE(out.delta_okay());
121 EXPECT_EQ("dev-channel", out.target_channel());
122 EXPECT_EQ("http://www.google.com", out.update_url());
adlr@google.com3defe6a2009-12-04 20:57:17 +0000123}
124
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700125TEST_F(OmahaRequestParamsTest, AppIDTest) {
Darin Petkovd315dc72010-11-15 09:52:24 -0800126 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700127 test_dir_ + "/etc/lsb-release",
Darin Petkovd315dc72010-11-15 09:52:24 -0800128 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
129 "CHROMEOS_RELEASE_FOO=bar\n"
130 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700131 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
Darin Petkovd315dc72010-11-15 09:52:24 -0800132 "CHROMEOS_RELEASE_APPID={58c35cef-9d30-476e-9098-ce20377d535d}\n"
133 "CHROMEOS_AUSERVER=http://www.google.com"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700134 OmahaRequestParams out(&fake_system_state_);
Darin Petkovd315dc72010-11-15 09:52:24 -0800135 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700136 EXPECT_EQ("Chrome OS", out.os_platform());
137 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
138 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700139 EXPECT_EQ("{58c35cef-9d30-476e-9098-ce20377d535d}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700140 EXPECT_EQ("0.2.2.3", out.app_version());
141 EXPECT_EQ("en-US", out.app_lang());
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700142 EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700143 EXPECT_TRUE(out.delta_okay());
144 EXPECT_EQ("dev-channel", out.target_channel());
145 EXPECT_EQ("http://www.google.com", out.update_url());
Darin Petkovd315dc72010-11-15 09:52:24 -0800146}
147
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700148TEST_F(OmahaRequestParamsTest, MissingChannelTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700149 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700150 test_dir_ + "/etc/lsb-release",
Darin Petkov5a7f5652010-07-22 21:40:09 -0700151 "CHROMEOS_RELEASE_FOO=bar\n"
152 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700153 "CHROMEOS_RELEASE_TRXCK=dev-channel"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700154 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700155 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700156 EXPECT_EQ("Chrome OS", out.os_platform());
157 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700158 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700159 EXPECT_EQ("0.2.2.3", out.app_version());
160 EXPECT_EQ("en-US", out.app_lang());
Alex Deymo85616652015-10-15 18:48:31 -0700161 // By default, if no channel is set, we should track the stable-channel.
162 EXPECT_EQ("stable-channel", out.target_channel());
adlr@google.com3defe6a2009-12-04 20:57:17 +0000163}
164
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700165TEST_F(OmahaRequestParamsTest, ConfusingReleaseTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700166 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700167 test_dir_ + "/etc/lsb-release",
Darin Petkov5a7f5652010-07-22 21:40:09 -0700168 "CHROMEOS_RELEASE_FOO=CHROMEOS_RELEASE_VERSION=1.2.3.4\n"
169 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700170 "CHROMEOS_RELEASE_TRXCK=dev-channel"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700171 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700172 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700173 EXPECT_EQ("Chrome OS", out.os_platform());
174 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700175 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700176 EXPECT_EQ("0.2.2.3", out.app_version());
177 EXPECT_EQ("en-US", out.app_lang());
Alex Deymo85616652015-10-15 18:48:31 -0700178 EXPECT_EQ("stable-channel", out.target_channel());
adlr@google.com3defe6a2009-12-04 20:57:17 +0000179}
180
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700181TEST_F(OmahaRequestParamsTest, MissingVersionTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700182 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700183 test_dir_ + "/etc/lsb-release",
Darin Petkov5a7f5652010-07-22 21:40:09 -0700184 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
185 "CHROMEOS_RELEASE_FOO=bar\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700186 "CHROMEOS_RELEASE_TRACK=dev-channel"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700187 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700188 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700189 EXPECT_EQ("Chrome OS", out.os_platform());
190 EXPECT_EQ(string("_") + GetMachineType(), out.os_sp());
191 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700192 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700193 EXPECT_EQ("", out.app_version());
194 EXPECT_EQ("en-US", out.app_lang());
195 EXPECT_TRUE(out.delta_okay());
196 EXPECT_EQ("dev-channel", out.target_channel());
Darin Petkov5a7f5652010-07-22 21:40:09 -0700197}
198
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700199TEST_F(OmahaRequestParamsTest, ForceVersionTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700200 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700201 test_dir_ + "/etc/lsb-release",
Darin Petkov5a7f5652010-07-22 21:40:09 -0700202 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
203 "CHROMEOS_RELEASE_FOO=bar\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700204 "CHROMEOS_RELEASE_TRACK=dev-channel"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700205 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700206 EXPECT_TRUE(DoTest(&out, "ForcedVersion", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700207 EXPECT_EQ("Chrome OS", out.os_platform());
208 EXPECT_EQ(string("ForcedVersion_") + GetMachineType(), out.os_sp());
209 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700210 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700211 EXPECT_EQ("ForcedVersion", out.app_version());
212 EXPECT_EQ("en-US", out.app_lang());
213 EXPECT_TRUE(out.delta_okay());
214 EXPECT_EQ("dev-channel", out.target_channel());
Darin Petkov5a7f5652010-07-22 21:40:09 -0700215}
216
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700217TEST_F(OmahaRequestParamsTest, ForcedURLTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700218 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700219 test_dir_ + "/etc/lsb-release",
Darin Petkov5a7f5652010-07-22 21:40:09 -0700220 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
221 "CHROMEOS_RELEASE_FOO=bar\n"
222 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700223 "CHROMEOS_RELEASE_TRACK=dev-channel"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700224 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700225 EXPECT_TRUE(DoTest(&out, "", "http://forced.google.com"));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700226 EXPECT_EQ("Chrome OS", out.os_platform());
227 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
228 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700229 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700230 EXPECT_EQ("0.2.2.3", out.app_version());
231 EXPECT_EQ("en-US", out.app_lang());
232 EXPECT_TRUE(out.delta_okay());
233 EXPECT_EQ("dev-channel", out.target_channel());
234 EXPECT_EQ("http://forced.google.com", out.update_url());
Darin Petkov5a7f5652010-07-22 21:40:09 -0700235}
236
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700237TEST_F(OmahaRequestParamsTest, MissingURLTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700238 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700239 test_dir_ + "/etc/lsb-release",
Darin Petkov5a7f5652010-07-22 21:40:09 -0700240 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
241 "CHROMEOS_RELEASE_FOO=bar\n"
242 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700243 "CHROMEOS_RELEASE_TRACK=dev-channel"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700244 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700245 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700246 EXPECT_EQ("Chrome OS", out.os_platform());
247 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
248 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700249 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700250 EXPECT_EQ("0.2.2.3", out.app_version());
251 EXPECT_EQ("en-US", out.app_lang());
252 EXPECT_TRUE(out.delta_okay());
253 EXPECT_EQ("dev-channel", out.target_channel());
Alex Deymoac41a822015-09-15 20:52:53 -0700254 EXPECT_EQ(constants::kOmahaDefaultProductionURL, out.update_url());
Andrew de los Reyes970bb282009-12-09 16:34:04 -0800255}
256
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700257TEST_F(OmahaRequestParamsTest, NoDeltasTest) {
Andrew de los Reyes3f0303a2010-07-15 22:35:35 -0700258 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700259 test_dir_ + "/etc/lsb-release",
Andrew de los Reyes3f0303a2010-07-15 22:35:35 -0700260 "CHROMEOS_RELEASE_FOO=CHROMEOS_RELEASE_VERSION=1.2.3.4\n"
261 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700262 "CHROMEOS_RELEASE_TRXCK=dev-channel"));
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700263 ASSERT_TRUE(WriteFileString(test_dir_ + "/.nodelta", ""));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700264 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700265 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700266 EXPECT_FALSE(out.delta_okay());
Andrew de los Reyes3f0303a2010-07-15 22:35:35 -0700267}
268
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700269TEST_F(OmahaRequestParamsTest, OverrideTest) {
Darin Petkov49d91322010-10-25 16:34:58 -0700270 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700271 test_dir_ + "/etc/lsb-release",
Darin Petkov49d91322010-10-25 16:34:58 -0700272 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
273 "CHROMEOS_RELEASE_FOO=bar\n"
274 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Darin Petkov10d02dd2011-01-10 14:57:39 -0800275 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
276 "CHROMEOS_AUSERVER=http://www.google.com"));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700277 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700278 test_dir_ + kStatefulPartition + "/etc/lsb-release",
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700279 "CHROMEOS_RELEASE_BOARD=x86-generic\n"
280 "CHROMEOS_RELEASE_TRACK=beta-channel\n"
281 "CHROMEOS_AUSERVER=https://www.google.com"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700282 OmahaRequestParams out(&fake_system_state_);
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700283 EXPECT_TRUE(DoTest(&out, "", ""));
284 EXPECT_EQ("Chrome OS", out.os_platform());
285 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
286 EXPECT_EQ("x86-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700287 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700288 EXPECT_EQ("0.2.2.3", out.app_version());
289 EXPECT_EQ("en-US", out.app_lang());
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700290 EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700291 EXPECT_FALSE(out.delta_okay());
292 EXPECT_EQ("beta-channel", out.target_channel());
293 EXPECT_EQ("https://www.google.com", out.update_url());
294}
295
296TEST_F(OmahaRequestParamsTest, OverrideLockDownTest) {
297 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700298 test_dir_ + "/etc/lsb-release",
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700299 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
300 "CHROMEOS_RELEASE_FOO=bar\n"
301 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
302 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
303 "CHROMEOS_AUSERVER=https://www.google.com"));
304 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700305 test_dir_ + kStatefulPartition + "/etc/lsb-release",
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700306 "CHROMEOS_RELEASE_BOARD=x86-generic\n"
307 "CHROMEOS_RELEASE_TRACK=stable-channel\n"
308 "CHROMEOS_AUSERVER=http://www.google.com"));
Alex Deymo85616652015-10-15 18:48:31 -0700309 SetLockDown(true);
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700310 OmahaRequestParams out(&fake_system_state_);
Darin Petkov10d02dd2011-01-10 14:57:39 -0800311 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700312 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700313 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700314 EXPECT_EQ("0.2.2.3", out.app_version());
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700315 EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700316 EXPECT_FALSE(out.delta_okay());
317 EXPECT_EQ("stable-channel", out.target_channel());
318 EXPECT_EQ("https://www.google.com", out.update_url());
Darin Petkov49d91322010-10-25 16:34:58 -0700319}
320
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700321TEST_F(OmahaRequestParamsTest, OverrideSameChannelTest) {
Darin Petkova3df55b2010-11-15 13:33:55 -0800322 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700323 test_dir_ + "/etc/lsb-release",
Darin Petkova3df55b2010-11-15 13:33:55 -0800324 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
325 "CHROMEOS_RELEASE_FOO=bar\n"
326 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700327 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
Darin Petkova3df55b2010-11-15 13:33:55 -0800328 "CHROMEOS_AUSERVER=http://www.google.com"));
329 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700330 test_dir_ + kStatefulPartition + "/etc/lsb-release",
Darin Petkova3df55b2010-11-15 13:33:55 -0800331 "CHROMEOS_RELEASE_BOARD=x86-generic\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700332 "CHROMEOS_RELEASE_TRACK=dev-channel"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700333 OmahaRequestParams out(&fake_system_state_);
Darin Petkova3df55b2010-11-15 13:33:55 -0800334 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700335 EXPECT_EQ("x86-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700336 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700337 EXPECT_EQ("0.2.2.3", out.app_version());
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700338 EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700339 EXPECT_TRUE(out.delta_okay());
340 EXPECT_EQ("dev-channel", out.target_channel());
341 EXPECT_EQ("http://www.google.com", out.update_url());
Darin Petkova3df55b2010-11-15 13:33:55 -0800342}
343
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700344TEST_F(OmahaRequestParamsTest, SetTargetChannelTest) {
Darin Petkov49d91322010-10-25 16:34:58 -0700345 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700346 test_dir_ + "/etc/lsb-release",
Darin Petkov49d91322010-10-25 16:34:58 -0700347 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
348 "CHROMEOS_RELEASE_FOO=bar\n"
349 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700350 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
Darin Petkov49d91322010-10-25 16:34:58 -0700351 "CHROMEOS_AUSERVER=http://www.google.com"));
352 {
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700353 OmahaRequestParams params(&fake_system_state_);
Gilad Arnoldd04f8e22014-01-09 13:13:40 -0800354 params.set_root(test_dir_);
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700355 EXPECT_TRUE(params.Init("", "", false));
Alex Deymod942f9d2015-11-06 16:11:50 -0800356 params.SetTargetChannel("canary-channel", false, nullptr);
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700357 EXPECT_FALSE(params.is_powerwash_allowed());
Darin Petkov49d91322010-10-25 16:34:58 -0700358 }
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700359 OmahaRequestParams out(&fake_system_state_);
Alex Deymo3be05c82015-10-23 11:29:11 -0700360 out.set_root(test_dir_);
Darin Petkov49d91322010-10-25 16:34:58 -0700361 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700362 EXPECT_EQ("canary-channel", out.target_channel());
363 EXPECT_FALSE(out.is_powerwash_allowed());
Darin Petkov49d91322010-10-25 16:34:58 -0700364}
365
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700366TEST_F(OmahaRequestParamsTest, SetIsPowerwashAllowedTest) {
Darin Petkov49d91322010-10-25 16:34:58 -0700367 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700368 test_dir_ + "/etc/lsb-release",
Darin Petkov49d91322010-10-25 16:34:58 -0700369 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
370 "CHROMEOS_RELEASE_FOO=bar\n"
371 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700372 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
Darin Petkov49d91322010-10-25 16:34:58 -0700373 "CHROMEOS_AUSERVER=http://www.google.com"));
Darin Petkov49d91322010-10-25 16:34:58 -0700374 {
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700375 OmahaRequestParams params(&fake_system_state_);
Gilad Arnoldd04f8e22014-01-09 13:13:40 -0800376 params.set_root(test_dir_);
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700377 EXPECT_TRUE(params.Init("", "", false));
Alex Deymod942f9d2015-11-06 16:11:50 -0800378 params.SetTargetChannel("canary-channel", true, nullptr);
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700379 EXPECT_TRUE(params.is_powerwash_allowed());
Darin Petkov49d91322010-10-25 16:34:58 -0700380 }
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700381 OmahaRequestParams out(&fake_system_state_);
Alex Deymo3be05c82015-10-23 11:29:11 -0700382 out.set_root(test_dir_);
Darin Petkov49d91322010-10-25 16:34:58 -0700383 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700384 EXPECT_EQ("canary-channel", out.target_channel());
385 EXPECT_TRUE(out.is_powerwash_allowed());
Darin Petkov49d91322010-10-25 16:34:58 -0700386}
387
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700388TEST_F(OmahaRequestParamsTest, SetTargetChannelInvalidTest) {
Darin Petkov49d91322010-10-25 16:34:58 -0700389 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700390 test_dir_ + "/etc/lsb-release",
Darin Petkov49d91322010-10-25 16:34:58 -0700391 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
392 "CHROMEOS_RELEASE_FOO=bar\n"
393 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700394 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
Darin Petkov49d91322010-10-25 16:34:58 -0700395 "CHROMEOS_AUSERVER=http://www.google.com"));
396 {
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700397 OmahaRequestParams params(&fake_system_state_);
Alex Deymo85616652015-10-15 18:48:31 -0700398 params.set_root(test_dir_);
399 SetLockDown(true);
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700400 EXPECT_TRUE(params.Init("", "", false));
Alex Deymod942f9d2015-11-06 16:11:50 -0800401 string error_message;
402 EXPECT_FALSE(
403 params.SetTargetChannel("dogfood-channel", true, &error_message));
404 // The error message should include a message about the valid channels.
405 EXPECT_NE(string::npos, error_message.find("stable-channel"));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700406 EXPECT_FALSE(params.is_powerwash_allowed());
Darin Petkov49d91322010-10-25 16:34:58 -0700407 }
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700408 OmahaRequestParams out(&fake_system_state_);
Alex Deymo3be05c82015-10-23 11:29:11 -0700409 out.set_root(test_dir_);
Darin Petkov49d91322010-10-25 16:34:58 -0700410 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700411 EXPECT_EQ("arm-generic", out.os_board());
412 EXPECT_EQ("dev-channel", out.target_channel());
413 EXPECT_FALSE(out.is_powerwash_allowed());
Darin Petkov49d91322010-10-25 16:34:58 -0700414}
415
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700416TEST_F(OmahaRequestParamsTest, IsValidChannelTest) {
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700417 EXPECT_TRUE(params_.IsValidChannel("canary-channel"));
418 EXPECT_TRUE(params_.IsValidChannel("stable-channel"));
419 EXPECT_TRUE(params_.IsValidChannel("beta-channel"));
420 EXPECT_TRUE(params_.IsValidChannel("dev-channel"));
421 EXPECT_FALSE(params_.IsValidChannel("testimage-channel"));
422 EXPECT_FALSE(params_.IsValidChannel("dogfood-channel"));
423 EXPECT_FALSE(params_.IsValidChannel("some-channel"));
424 EXPECT_FALSE(params_.IsValidChannel(""));
Darin Petkov49d91322010-10-25 16:34:58 -0700425}
426
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700427TEST_F(OmahaRequestParamsTest, ValidChannelTest) {
Darin Petkov49d91322010-10-25 16:34:58 -0700428 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700429 test_dir_ + "/etc/lsb-release",
Darin Petkov49d91322010-10-25 16:34:58 -0700430 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
431 "CHROMEOS_RELEASE_FOO=bar\n"
432 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
433 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
434 "CHROMEOS_AUSERVER=http://www.google.com"));
Alex Deymo85616652015-10-15 18:48:31 -0700435 SetLockDown(true);
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700436 OmahaRequestParams out(&fake_system_state_);
Darin Petkov49d91322010-10-25 16:34:58 -0700437 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700438 EXPECT_EQ("Chrome OS", out.os_platform());
439 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
440 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700441 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700442 EXPECT_EQ("0.2.2.3", out.app_version());
443 EXPECT_EQ("en-US", out.app_lang());
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700444 EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700445 EXPECT_TRUE(out.delta_okay());
446 EXPECT_EQ("dev-channel", out.target_channel());
447 EXPECT_EQ("http://www.google.com", out.update_url());
Darin Petkov49d91322010-10-25 16:34:58 -0700448}
449
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700450TEST_F(OmahaRequestParamsTest, SetTargetChannelWorks) {
Patrick Dubroy7fbbe8a2011-08-01 17:28:22 +0200451 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700452 test_dir_ + "/etc/lsb-release",
Patrick Dubroy7fbbe8a2011-08-01 17:28:22 +0200453 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
454 "CHROMEOS_RELEASE_FOO=bar\n"
455 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
456 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
457 "CHROMEOS_AUSERVER=http://www.google.com"));
Patrick Dubroy7fbbe8a2011-08-01 17:28:22 +0200458
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700459 // Check LSB value is used by default when SetTargetChannel is not called.
460 params_.Init("", "", false);
461 EXPECT_EQ("dev-channel", params_.target_channel());
Patrick Dubroy7fbbe8a2011-08-01 17:28:22 +0200462
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700463 // When an invalid value is set, it should be ignored and the
464 // value from lsb-release should be used instead.
465 params_.Init("", "", false);
Alex Deymod942f9d2015-11-06 16:11:50 -0800466 EXPECT_FALSE(params_.SetTargetChannel("invalid-channel", false, nullptr));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700467 EXPECT_EQ("dev-channel", params_.target_channel());
468
469 // When set to a valid value, it should take effect.
470 params_.Init("", "", false);
Alex Deymod942f9d2015-11-06 16:11:50 -0800471 EXPECT_TRUE(params_.SetTargetChannel("beta-channel", true, nullptr));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700472 EXPECT_EQ("beta-channel", params_.target_channel());
473
474 // When set to the same value, it should be idempotent.
475 params_.Init("", "", false);
Alex Deymod942f9d2015-11-06 16:11:50 -0800476 EXPECT_TRUE(params_.SetTargetChannel("beta-channel", true, nullptr));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700477 EXPECT_EQ("beta-channel", params_.target_channel());
478
479 // When set to a valid value while a change is already pending, it should
Jay Srinivasan1c0fe792013-03-28 16:45:25 -0700480 // succeed.
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700481 params_.Init("", "", false);
Alex Deymod942f9d2015-11-06 16:11:50 -0800482 EXPECT_TRUE(params_.SetTargetChannel("stable-channel", true, nullptr));
Jay Srinivasan1c0fe792013-03-28 16:45:25 -0700483 EXPECT_EQ("stable-channel", params_.target_channel());
484
485 // Set a different channel in stateful LSB release.
486 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700487 test_dir_ + kStatefulPartition + "/etc/lsb-release",
Jay Srinivasan1c0fe792013-03-28 16:45:25 -0700488 "CHROMEOS_RELEASE_TRACK=stable-channel\n"
489 "CHROMEOS_IS_POWERWASH_ALLOWED=true\n"));
490
491 // When set to a valid value while a change is already pending, it should
492 // succeed.
493 params_.Init("", "", false);
Alex Deymod942f9d2015-11-06 16:11:50 -0800494 EXPECT_TRUE(params_.SetTargetChannel("beta-channel", true, nullptr));
Jay Srinivasan1c0fe792013-03-28 16:45:25 -0700495 // The target channel should reflect the change, but the download channel
496 // should continue to retain the old value ...
497 EXPECT_EQ("beta-channel", params_.target_channel());
498 EXPECT_EQ("stable-channel", params_.download_channel());
499
500 // ... until we update the download channel explicitly.
501 params_.UpdateDownloadChannel();
502 EXPECT_EQ("beta-channel", params_.download_channel());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700503 EXPECT_EQ("beta-channel", params_.target_channel());
Patrick Dubroy7fbbe8a2011-08-01 17:28:22 +0200504}
505
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700506TEST_F(OmahaRequestParamsTest, ChannelIndexTest) {
507 int canary = params_.GetChannelIndex("canary-channel");
508 int dev = params_.GetChannelIndex("dev-channel");
509 int beta = params_.GetChannelIndex("beta-channel");
510 int stable = params_.GetChannelIndex("stable-channel");
511 EXPECT_LE(canary, dev);
512 EXPECT_LE(dev, beta);
513 EXPECT_LE(beta, stable);
514
515 // testimage-channel or other names are not recognized, so index will be -1.
516 int testimage = params_.GetChannelIndex("testimage-channel");
517 int bogus = params_.GetChannelIndex("bogus-channel");
518 EXPECT_EQ(-1, testimage);
519 EXPECT_EQ(-1, bogus);
520}
521
522TEST_F(OmahaRequestParamsTest, ToMoreStableChannelFlagTest) {
523 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700524 test_dir_ + "/etc/lsb-release",
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700525 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
526 "CHROMEOS_RELEASE_FOO=bar\n"
527 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
528 "CHROMEOS_RELEASE_TRACK=canary-channel\n"
529 "CHROMEOS_AUSERVER=http://www.google.com"));
530 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700531 test_dir_ + kStatefulPartition + "/etc/lsb-release",
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700532 "CHROMEOS_RELEASE_BOARD=x86-generic\n"
533 "CHROMEOS_RELEASE_TRACK=stable-channel\n"
534 "CHROMEOS_AUSERVER=https://www.google.com"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700535 OmahaRequestParams out(&fake_system_state_);
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700536 EXPECT_TRUE(DoTest(&out, "", ""));
537 EXPECT_EQ("https://www.google.com", out.update_url());
538 EXPECT_FALSE(out.delta_okay());
539 EXPECT_EQ("stable-channel", out.target_channel());
540 EXPECT_TRUE(out.to_more_stable_channel());
541}
542
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700543TEST_F(OmahaRequestParamsTest, BoardAppIdUsedForNonCanaryChannelTest) {
544 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700545 test_dir_ + "/etc/lsb-release",
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700546 "CHROMEOS_RELEASE_APPID=r\n"
547 "CHROMEOS_BOARD_APPID=b\n"
548 "CHROMEOS_CANARY_APPID=c\n"
549 "CHROMEOS_RELEASE_TRACK=stable-channel\n"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700550 OmahaRequestParams out(&fake_system_state_);
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700551 EXPECT_TRUE(DoTest(&out, "", ""));
552 EXPECT_EQ("stable-channel", out.download_channel());
553 EXPECT_EQ("b", out.GetAppId());
554}
555
556TEST_F(OmahaRequestParamsTest, CanaryAppIdUsedForCanaryChannelTest) {
557 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700558 test_dir_ + "/etc/lsb-release",
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700559 "CHROMEOS_RELEASE_APPID=r\n"
560 "CHROMEOS_BOARD_APPID=b\n"
561 "CHROMEOS_CANARY_APPID=c\n"
562 "CHROMEOS_RELEASE_TRACK=canary-channel\n"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700563 OmahaRequestParams out(&fake_system_state_);
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700564 EXPECT_TRUE(DoTest(&out, "", ""));
565 EXPECT_EQ("canary-channel", out.download_channel());
566 EXPECT_EQ("c", out.GetAppId());
567}
568
569TEST_F(OmahaRequestParamsTest, ReleaseAppIdUsedAsDefaultTest) {
570 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700571 test_dir_ + "/etc/lsb-release",
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700572 "CHROMEOS_RELEASE_APPID=r\n"
573 "CHROMEOS_CANARY_APPID=c\n"
574 "CHROMEOS_RELEASE_TRACK=stable-channel\n"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700575 OmahaRequestParams out(&fake_system_state_);
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700576 EXPECT_TRUE(DoTest(&out, "", ""));
577 EXPECT_EQ("stable-channel", out.download_channel());
578 EXPECT_EQ("r", out.GetAppId());
579}
580
Chris Sosac1972482013-04-30 22:31:10 -0700581TEST_F(OmahaRequestParamsTest, CollectECFWVersionsTest) {
582 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700583 test_dir_ + "/etc/lsb-release",
Chris Sosac1972482013-04-30 22:31:10 -0700584 "CHROMEOS_RELEASE_APPID=r\n"
585 "CHROMEOS_CANARY_APPID=c\n"
586 "CHROMEOS_RELEASE_TRACK=stable-channel\n"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700587 OmahaRequestParams out(&fake_system_state_);
Chris Sosac1972482013-04-30 22:31:10 -0700588 out.hwid_ = string("STUMPY ALEX 12345");
589 EXPECT_FALSE(out.CollectECFWVersions());
590
591 out.hwid_ = string("SNOW 12345");
592 EXPECT_TRUE(out.CollectECFWVersions());
593
594 out.hwid_ = string("SAMS ALEX 12345");
595 EXPECT_TRUE(out.CollectECFWVersions());
596}
597
adlr@google.com3defe6a2009-12-04 20:57:17 +0000598} // namespace chromeos_update_engine