blob: a4aeeecfbacd2ccb7762d2d0656092a1974d43b1 [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
Chris Sosabe45bef2013-04-09 18:25:12 -070026#include "update_engine/constants.h"
Gilad Arnold5bb4c902014-04-10 12:32:13 -070027#include "update_engine/fake_system_state.h"
adlr@google.com3defe6a2009-12-04 20:57:17 +000028#include "update_engine/install_plan.h"
Alex Deymoac41a822015-09-15 20:52:53 -070029#include "update_engine/platform_constants.h"
adlr@google.com3defe6a2009-12-04 20:57:17 +000030#include "update_engine/test_utils.h"
31#include "update_engine/utils.h"
32
Alex Deymo10875d92014-11-10 21:52:57 -080033using chromeos_update_engine::test_utils::System;
34using chromeos_update_engine::test_utils::WriteFileString;
adlr@google.com3defe6a2009-12-04 20:57:17 +000035using std::string;
36
37namespace chromeos_update_engine {
38
Jay Srinivasanae4697c2013-03-18 17:08:08 -070039class OmahaRequestParamsTest : public ::testing::Test {
40 public:
Gilad Arnold5bb4c902014-04-10 12:32:13 -070041 OmahaRequestParamsTest() : params_(&fake_system_state_) {}
Jay Srinivasanae4697c2013-03-18 17:08:08 -070042
Darin Petkov5a7f5652010-07-22 21:40:09 -070043 protected:
Jay Srinivasanae4697c2013-03-18 17:08:08 -070044 // Return true iff the OmahaRequestParams::Init succeeded. If
Alex Vakulenko88b591f2014-08-28 16:48:57 -070045 // out is non-null, it's set w/ the generated data.
Darin Petkov5a7f5652010-07-22 21:40:09 -070046 bool DoTest(OmahaRequestParams* out, const string& app_version,
47 const string& omaha_url);
48
Alex Deymo610277e2014-11-11 21:18:11 -080049 void SetUp() override {
Gilad Arnoldc9abbec2013-07-01 06:24:42 -070050 // Create a uniquely named test directory.
51 ASSERT_TRUE(utils::MakeTempDirectory(kTestDirTemplate,
52 &test_dir_));
53
54 ASSERT_EQ(0, System(string("mkdir -p ") + test_dir_ + "/etc"));
55 ASSERT_EQ(0, System(string("mkdir -p ") + test_dir_ +
Chris Sosabe45bef2013-04-09 18:25:12 -070056 kStatefulPartition + "/etc"));
Jay Srinivasanae4697c2013-03-18 17:08:08 -070057 // Create a fresh copy of the params for each test, so there's no
58 // unintended reuse of state across tests.
Gilad Arnold5bb4c902014-04-10 12:32:13 -070059 OmahaRequestParams new_params(&fake_system_state_);
Jay Srinivasanae4697c2013-03-18 17:08:08 -070060 params_ = new_params;
Gilad Arnoldd04f8e22014-01-09 13:13:40 -080061 params_.set_root(test_dir_);
Darin Petkov10d02dd2011-01-10 14:57:39 -080062 params_.SetLockDown(false);
Darin Petkov5a7f5652010-07-22 21:40:09 -070063 }
64
Alex Deymo610277e2014-11-11 21:18:11 -080065 void TearDown() override {
Gilad Arnoldc9abbec2013-07-01 06:24:42 -070066 EXPECT_EQ(0, System(string("rm -rf ") + test_dir_));
Darin Petkov5a7f5652010-07-22 21:40:09 -070067 }
68
Jay Srinivasanae4697c2013-03-18 17:08:08 -070069 OmahaRequestParams params_;
Gilad Arnold5bb4c902014-04-10 12:32:13 -070070 FakeSystemState fake_system_state_;
Darin Petkov49d91322010-10-25 16:34:58 -070071
Gilad Arnoldc9abbec2013-07-01 06:24:42 -070072 static const char* kTestDirTemplate;
73 string test_dir_;
adlr@google.com3defe6a2009-12-04 20:57:17 +000074};
75
Gilad Arnoldc9abbec2013-07-01 06:24:42 -070076const char* OmahaRequestParamsTest::kTestDirTemplate =
77 "omaha_request_params-test-XXXXXX";
adlr@google.com3defe6a2009-12-04 20:57:17 +000078
Jay Srinivasanae4697c2013-03-18 17:08:08 -070079bool OmahaRequestParamsTest::DoTest(OmahaRequestParams* out,
80 const string& app_version,
81 const string& omaha_url) {
82 bool success = params_.Init(app_version, omaha_url, false);
adlr@google.com3defe6a2009-12-04 20:57:17 +000083 if (out)
Darin Petkov49d91322010-10-25 16:34:58 -070084 *out = params_;
Darin Petkova4a8a8c2010-07-15 22:21:12 -070085 return success;
adlr@google.com3defe6a2009-12-04 20:57:17 +000086}
87
88namespace {
adlr@google.com3defe6a2009-12-04 20:57:17 +000089string GetMachineType() {
Gilad Arnold19a45f02012-07-19 12:36:10 -070090 string machine_type;
91 if (!utils::ReadPipe("uname -m", &machine_type))
adlr@google.com3defe6a2009-12-04 20:57:17 +000092 return "";
Gilad Arnold19a45f02012-07-19 12:36:10 -070093 // Strip anything from the first newline char.
94 size_t newline_pos = machine_type.find('\n');
95 if (newline_pos != string::npos)
96 machine_type.erase(newline_pos);
97 return machine_type;
adlr@google.com3defe6a2009-12-04 20:57:17 +000098}
Alex Vakulenkod2779df2014-06-16 13:19:00 -070099} // namespace
adlr@google.com3defe6a2009-12-04 20:57:17 +0000100
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700101TEST_F(OmahaRequestParamsTest, SimpleTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700102 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700103 test_dir_ + "/etc/lsb-release",
Darin Petkov5a7f5652010-07-22 21:40:09 -0700104 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
105 "CHROMEOS_RELEASE_FOO=bar\n"
106 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700107 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
Darin Petkov5a7f5652010-07-22 21:40:09 -0700108 "CHROMEOS_AUSERVER=http://www.google.com"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700109 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700110 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700111 EXPECT_EQ("Chrome OS", out.os_platform());
112 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
113 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700114 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700115 EXPECT_EQ("0.2.2.3", out.app_version());
116 EXPECT_EQ("en-US", out.app_lang());
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700117 EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700118 EXPECT_TRUE(out.delta_okay());
119 EXPECT_EQ("dev-channel", out.target_channel());
120 EXPECT_EQ("http://www.google.com", out.update_url());
adlr@google.com3defe6a2009-12-04 20:57:17 +0000121}
122
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700123TEST_F(OmahaRequestParamsTest, AppIDTest) {
Darin Petkovd315dc72010-11-15 09:52:24 -0800124 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700125 test_dir_ + "/etc/lsb-release",
Darin Petkovd315dc72010-11-15 09:52:24 -0800126 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
127 "CHROMEOS_RELEASE_FOO=bar\n"
128 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700129 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
Darin Petkovd315dc72010-11-15 09:52:24 -0800130 "CHROMEOS_RELEASE_APPID={58c35cef-9d30-476e-9098-ce20377d535d}\n"
131 "CHROMEOS_AUSERVER=http://www.google.com"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700132 OmahaRequestParams out(&fake_system_state_);
Darin Petkovd315dc72010-11-15 09:52:24 -0800133 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700134 EXPECT_EQ("Chrome OS", out.os_platform());
135 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
136 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700137 EXPECT_EQ("{58c35cef-9d30-476e-9098-ce20377d535d}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700138 EXPECT_EQ("0.2.2.3", out.app_version());
139 EXPECT_EQ("en-US", out.app_lang());
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700140 EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700141 EXPECT_TRUE(out.delta_okay());
142 EXPECT_EQ("dev-channel", out.target_channel());
143 EXPECT_EQ("http://www.google.com", out.update_url());
Darin Petkovd315dc72010-11-15 09:52:24 -0800144}
145
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700146TEST_F(OmahaRequestParamsTest, MissingChannelTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700147 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700148 test_dir_ + "/etc/lsb-release",
Darin Petkov5a7f5652010-07-22 21:40:09 -0700149 "CHROMEOS_RELEASE_FOO=bar\n"
150 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700151 "CHROMEOS_RELEASE_TRXCK=dev-channel"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700152 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700153 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700154 EXPECT_EQ("Chrome OS", out.os_platform());
155 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700156 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700157 EXPECT_EQ("0.2.2.3", out.app_version());
158 EXPECT_EQ("en-US", out.app_lang());
159 EXPECT_EQ("", out.target_channel());
adlr@google.com3defe6a2009-12-04 20:57:17 +0000160}
161
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700162TEST_F(OmahaRequestParamsTest, ConfusingReleaseTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700163 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700164 test_dir_ + "/etc/lsb-release",
Darin Petkov5a7f5652010-07-22 21:40:09 -0700165 "CHROMEOS_RELEASE_FOO=CHROMEOS_RELEASE_VERSION=1.2.3.4\n"
166 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700167 "CHROMEOS_RELEASE_TRXCK=dev-channel"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700168 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700169 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700170 EXPECT_EQ("Chrome OS", out.os_platform());
171 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700172 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700173 EXPECT_EQ("0.2.2.3", out.app_version());
174 EXPECT_EQ("en-US", out.app_lang());
175 EXPECT_EQ("", out.target_channel());
adlr@google.com3defe6a2009-12-04 20:57:17 +0000176}
177
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700178TEST_F(OmahaRequestParamsTest, MissingVersionTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700179 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700180 test_dir_ + "/etc/lsb-release",
Darin Petkov5a7f5652010-07-22 21:40:09 -0700181 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
182 "CHROMEOS_RELEASE_FOO=bar\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700183 "CHROMEOS_RELEASE_TRACK=dev-channel"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700184 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700185 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700186 EXPECT_EQ("Chrome OS", out.os_platform());
187 EXPECT_EQ(string("_") + GetMachineType(), out.os_sp());
188 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700189 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700190 EXPECT_EQ("", out.app_version());
191 EXPECT_EQ("en-US", out.app_lang());
192 EXPECT_TRUE(out.delta_okay());
193 EXPECT_EQ("dev-channel", out.target_channel());
Darin Petkov5a7f5652010-07-22 21:40:09 -0700194}
195
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700196TEST_F(OmahaRequestParamsTest, ForceVersionTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700197 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700198 test_dir_ + "/etc/lsb-release",
Darin Petkov5a7f5652010-07-22 21:40:09 -0700199 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
200 "CHROMEOS_RELEASE_FOO=bar\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700201 "CHROMEOS_RELEASE_TRACK=dev-channel"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700202 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700203 EXPECT_TRUE(DoTest(&out, "ForcedVersion", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700204 EXPECT_EQ("Chrome OS", out.os_platform());
205 EXPECT_EQ(string("ForcedVersion_") + GetMachineType(), out.os_sp());
206 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700207 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700208 EXPECT_EQ("ForcedVersion", out.app_version());
209 EXPECT_EQ("en-US", out.app_lang());
210 EXPECT_TRUE(out.delta_okay());
211 EXPECT_EQ("dev-channel", out.target_channel());
Darin Petkov5a7f5652010-07-22 21:40:09 -0700212}
213
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700214TEST_F(OmahaRequestParamsTest, ForcedURLTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700215 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700216 test_dir_ + "/etc/lsb-release",
Darin Petkov5a7f5652010-07-22 21:40:09 -0700217 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
218 "CHROMEOS_RELEASE_FOO=bar\n"
219 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700220 "CHROMEOS_RELEASE_TRACK=dev-channel"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700221 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700222 EXPECT_TRUE(DoTest(&out, "", "http://forced.google.com"));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700223 EXPECT_EQ("Chrome OS", out.os_platform());
224 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
225 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700226 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700227 EXPECT_EQ("0.2.2.3", out.app_version());
228 EXPECT_EQ("en-US", out.app_lang());
229 EXPECT_TRUE(out.delta_okay());
230 EXPECT_EQ("dev-channel", out.target_channel());
231 EXPECT_EQ("http://forced.google.com", out.update_url());
Darin Petkov5a7f5652010-07-22 21:40:09 -0700232}
233
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700234TEST_F(OmahaRequestParamsTest, MissingURLTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700235 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700236 test_dir_ + "/etc/lsb-release",
Darin Petkov5a7f5652010-07-22 21:40:09 -0700237 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
238 "CHROMEOS_RELEASE_FOO=bar\n"
239 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700240 "CHROMEOS_RELEASE_TRACK=dev-channel"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700241 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700242 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700243 EXPECT_EQ("Chrome OS", out.os_platform());
244 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
245 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700246 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700247 EXPECT_EQ("0.2.2.3", out.app_version());
248 EXPECT_EQ("en-US", out.app_lang());
249 EXPECT_TRUE(out.delta_okay());
250 EXPECT_EQ("dev-channel", out.target_channel());
Alex Deymoac41a822015-09-15 20:52:53 -0700251 EXPECT_EQ(constants::kOmahaDefaultProductionURL, out.update_url());
Andrew de los Reyes970bb282009-12-09 16:34:04 -0800252}
253
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700254TEST_F(OmahaRequestParamsTest, NoDeltasTest) {
Andrew de los Reyes3f0303a2010-07-15 22:35:35 -0700255 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700256 test_dir_ + "/etc/lsb-release",
Andrew de los Reyes3f0303a2010-07-15 22:35:35 -0700257 "CHROMEOS_RELEASE_FOO=CHROMEOS_RELEASE_VERSION=1.2.3.4\n"
258 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700259 "CHROMEOS_RELEASE_TRXCK=dev-channel"));
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700260 ASSERT_TRUE(WriteFileString(test_dir_ + "/.nodelta", ""));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700261 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700262 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700263 EXPECT_FALSE(out.delta_okay());
Andrew de los Reyes3f0303a2010-07-15 22:35:35 -0700264}
265
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700266TEST_F(OmahaRequestParamsTest, OverrideTest) {
Darin Petkov49d91322010-10-25 16:34:58 -0700267 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700268 test_dir_ + "/etc/lsb-release",
Darin Petkov49d91322010-10-25 16:34:58 -0700269 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
270 "CHROMEOS_RELEASE_FOO=bar\n"
271 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Darin Petkov10d02dd2011-01-10 14:57:39 -0800272 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
273 "CHROMEOS_AUSERVER=http://www.google.com"));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700274 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700275 test_dir_ + kStatefulPartition + "/etc/lsb-release",
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700276 "CHROMEOS_RELEASE_BOARD=x86-generic\n"
277 "CHROMEOS_RELEASE_TRACK=beta-channel\n"
278 "CHROMEOS_AUSERVER=https://www.google.com"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700279 OmahaRequestParams out(&fake_system_state_);
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700280 EXPECT_TRUE(DoTest(&out, "", ""));
281 EXPECT_EQ("Chrome OS", out.os_platform());
282 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
283 EXPECT_EQ("x86-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700284 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700285 EXPECT_EQ("0.2.2.3", out.app_version());
286 EXPECT_EQ("en-US", out.app_lang());
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700287 EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700288 EXPECT_FALSE(out.delta_okay());
289 EXPECT_EQ("beta-channel", out.target_channel());
290 EXPECT_EQ("https://www.google.com", out.update_url());
291}
292
293TEST_F(OmahaRequestParamsTest, OverrideLockDownTest) {
294 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700295 test_dir_ + "/etc/lsb-release",
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700296 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
297 "CHROMEOS_RELEASE_FOO=bar\n"
298 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
299 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
300 "CHROMEOS_AUSERVER=https://www.google.com"));
301 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700302 test_dir_ + kStatefulPartition + "/etc/lsb-release",
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700303 "CHROMEOS_RELEASE_BOARD=x86-generic\n"
304 "CHROMEOS_RELEASE_TRACK=stable-channel\n"
305 "CHROMEOS_AUSERVER=http://www.google.com"));
Darin Petkov10d02dd2011-01-10 14:57:39 -0800306 params_.SetLockDown(true);
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700307 OmahaRequestParams out(&fake_system_state_);
Darin Petkov10d02dd2011-01-10 14:57:39 -0800308 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700309 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700310 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700311 EXPECT_EQ("0.2.2.3", out.app_version());
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700312 EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700313 EXPECT_FALSE(out.delta_okay());
314 EXPECT_EQ("stable-channel", out.target_channel());
315 EXPECT_EQ("https://www.google.com", out.update_url());
Darin Petkov49d91322010-10-25 16:34:58 -0700316}
317
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700318TEST_F(OmahaRequestParamsTest, OverrideSameChannelTest) {
Darin Petkova3df55b2010-11-15 13:33:55 -0800319 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700320 test_dir_ + "/etc/lsb-release",
Darin Petkova3df55b2010-11-15 13:33:55 -0800321 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
322 "CHROMEOS_RELEASE_FOO=bar\n"
323 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700324 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
Darin Petkova3df55b2010-11-15 13:33:55 -0800325 "CHROMEOS_AUSERVER=http://www.google.com"));
326 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700327 test_dir_ + kStatefulPartition + "/etc/lsb-release",
Darin Petkova3df55b2010-11-15 13:33:55 -0800328 "CHROMEOS_RELEASE_BOARD=x86-generic\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700329 "CHROMEOS_RELEASE_TRACK=dev-channel"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700330 OmahaRequestParams out(&fake_system_state_);
Darin Petkova3df55b2010-11-15 13:33:55 -0800331 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700332 EXPECT_EQ("x86-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700333 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700334 EXPECT_EQ("0.2.2.3", out.app_version());
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700335 EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700336 EXPECT_TRUE(out.delta_okay());
337 EXPECT_EQ("dev-channel", out.target_channel());
338 EXPECT_EQ("http://www.google.com", out.update_url());
Darin Petkova3df55b2010-11-15 13:33:55 -0800339}
340
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700341TEST_F(OmahaRequestParamsTest, SetTargetChannelTest) {
Darin Petkov49d91322010-10-25 16:34:58 -0700342 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700343 test_dir_ + "/etc/lsb-release",
Darin Petkov49d91322010-10-25 16:34:58 -0700344 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
345 "CHROMEOS_RELEASE_FOO=bar\n"
346 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700347 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
Darin Petkov49d91322010-10-25 16:34:58 -0700348 "CHROMEOS_AUSERVER=http://www.google.com"));
349 {
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700350 OmahaRequestParams params(&fake_system_state_);
Gilad Arnoldd04f8e22014-01-09 13:13:40 -0800351 params.set_root(test_dir_);
Darin Petkov10d02dd2011-01-10 14:57:39 -0800352 params.SetLockDown(false);
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700353 EXPECT_TRUE(params.Init("", "", false));
354 params.SetTargetChannel("canary-channel", false);
355 EXPECT_FALSE(params.is_powerwash_allowed());
Darin Petkov49d91322010-10-25 16:34:58 -0700356 }
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700357 OmahaRequestParams out(&fake_system_state_);
Darin Petkov49d91322010-10-25 16:34:58 -0700358 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700359 EXPECT_EQ("canary-channel", out.target_channel());
360 EXPECT_FALSE(out.is_powerwash_allowed());
Darin Petkov49d91322010-10-25 16:34:58 -0700361}
362
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700363TEST_F(OmahaRequestParamsTest, SetIsPowerwashAllowedTest) {
Darin Petkov49d91322010-10-25 16:34:58 -0700364 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700365 test_dir_ + "/etc/lsb-release",
Darin Petkov49d91322010-10-25 16:34:58 -0700366 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
367 "CHROMEOS_RELEASE_FOO=bar\n"
368 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700369 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
Darin Petkov49d91322010-10-25 16:34:58 -0700370 "CHROMEOS_AUSERVER=http://www.google.com"));
Darin Petkov49d91322010-10-25 16:34:58 -0700371 {
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700372 OmahaRequestParams params(&fake_system_state_);
Gilad Arnoldd04f8e22014-01-09 13:13:40 -0800373 params.set_root(test_dir_);
Darin Petkov10d02dd2011-01-10 14:57:39 -0800374 params.SetLockDown(false);
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700375 EXPECT_TRUE(params.Init("", "", false));
376 params.SetTargetChannel("canary-channel", true);
377 EXPECT_TRUE(params.is_powerwash_allowed());
Darin Petkov49d91322010-10-25 16:34:58 -0700378 }
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700379 OmahaRequestParams out(&fake_system_state_);
Darin Petkov49d91322010-10-25 16:34:58 -0700380 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700381 EXPECT_EQ("canary-channel", out.target_channel());
382 EXPECT_TRUE(out.is_powerwash_allowed());
Darin Petkov49d91322010-10-25 16:34:58 -0700383}
384
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700385TEST_F(OmahaRequestParamsTest, SetTargetChannelInvalidTest) {
Darin Petkov49d91322010-10-25 16:34:58 -0700386 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700387 test_dir_ + "/etc/lsb-release",
Darin Petkov49d91322010-10-25 16:34:58 -0700388 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
389 "CHROMEOS_RELEASE_FOO=bar\n"
390 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700391 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
Darin Petkov49d91322010-10-25 16:34:58 -0700392 "CHROMEOS_AUSERVER=http://www.google.com"));
393 {
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700394 OmahaRequestParams params(&fake_system_state_);
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700395 params.set_root(string("./") + test_dir_);
Darin Petkov10d02dd2011-01-10 14:57:39 -0800396 params.SetLockDown(true);
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700397 EXPECT_TRUE(params.Init("", "", false));
398 params.SetTargetChannel("dogfood-channel", true);
399 EXPECT_FALSE(params.is_powerwash_allowed());
Darin Petkov49d91322010-10-25 16:34:58 -0700400 }
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700401 OmahaRequestParams out(&fake_system_state_);
Darin Petkov49d91322010-10-25 16:34:58 -0700402 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700403 EXPECT_EQ("arm-generic", out.os_board());
404 EXPECT_EQ("dev-channel", out.target_channel());
405 EXPECT_FALSE(out.is_powerwash_allowed());
Darin Petkov49d91322010-10-25 16:34:58 -0700406}
407
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700408TEST_F(OmahaRequestParamsTest, IsValidChannelTest) {
Darin Petkov10d02dd2011-01-10 14:57:39 -0800409 params_.SetLockDown(false);
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700410 EXPECT_TRUE(params_.IsValidChannel("canary-channel"));
411 EXPECT_TRUE(params_.IsValidChannel("stable-channel"));
412 EXPECT_TRUE(params_.IsValidChannel("beta-channel"));
413 EXPECT_TRUE(params_.IsValidChannel("dev-channel"));
414 EXPECT_FALSE(params_.IsValidChannel("testimage-channel"));
415 EXPECT_FALSE(params_.IsValidChannel("dogfood-channel"));
416 EXPECT_FALSE(params_.IsValidChannel("some-channel"));
417 EXPECT_FALSE(params_.IsValidChannel(""));
Darin Petkov49d91322010-10-25 16:34:58 -0700418}
419
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700420TEST_F(OmahaRequestParamsTest, ValidChannelTest) {
Darin Petkov49d91322010-10-25 16:34:58 -0700421 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700422 test_dir_ + "/etc/lsb-release",
Darin Petkov49d91322010-10-25 16:34:58 -0700423 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
424 "CHROMEOS_RELEASE_FOO=bar\n"
425 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
426 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
427 "CHROMEOS_AUSERVER=http://www.google.com"));
Darin Petkov10d02dd2011-01-10 14:57:39 -0800428 params_.SetLockDown(true);
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700429 OmahaRequestParams out(&fake_system_state_);
Darin Petkov49d91322010-10-25 16:34:58 -0700430 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700431 EXPECT_EQ("Chrome OS", out.os_platform());
432 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
433 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700434 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700435 EXPECT_EQ("0.2.2.3", out.app_version());
436 EXPECT_EQ("en-US", out.app_lang());
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700437 EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700438 EXPECT_TRUE(out.delta_okay());
439 EXPECT_EQ("dev-channel", out.target_channel());
440 EXPECT_EQ("http://www.google.com", out.update_url());
Darin Petkov49d91322010-10-25 16:34:58 -0700441}
442
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700443TEST_F(OmahaRequestParamsTest, SetTargetChannelWorks) {
Patrick Dubroy7fbbe8a2011-08-01 17:28:22 +0200444 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700445 test_dir_ + "/etc/lsb-release",
Patrick Dubroy7fbbe8a2011-08-01 17:28:22 +0200446 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
447 "CHROMEOS_RELEASE_FOO=bar\n"
448 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
449 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
450 "CHROMEOS_AUSERVER=http://www.google.com"));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700451 params_.SetLockDown(false);
Patrick Dubroy7fbbe8a2011-08-01 17:28:22 +0200452
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700453 // Check LSB value is used by default when SetTargetChannel is not called.
454 params_.Init("", "", false);
455 EXPECT_EQ("dev-channel", params_.target_channel());
Patrick Dubroy7fbbe8a2011-08-01 17:28:22 +0200456
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700457 // When an invalid value is set, it should be ignored and the
458 // value from lsb-release should be used instead.
459 params_.Init("", "", false);
460 EXPECT_FALSE(params_.SetTargetChannel("invalid-channel", false));
461 EXPECT_EQ("dev-channel", params_.target_channel());
462
463 // When set to a valid value, it should take effect.
464 params_.Init("", "", false);
465 EXPECT_TRUE(params_.SetTargetChannel("beta-channel", true));
466 EXPECT_EQ("beta-channel", params_.target_channel());
467
468 // When set to the same value, it should be idempotent.
469 params_.Init("", "", false);
470 EXPECT_TRUE(params_.SetTargetChannel("beta-channel", true));
471 EXPECT_EQ("beta-channel", params_.target_channel());
472
473 // When set to a valid value while a change is already pending, it should
Jay Srinivasan1c0fe792013-03-28 16:45:25 -0700474 // succeed.
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700475 params_.Init("", "", false);
Jay Srinivasan1c0fe792013-03-28 16:45:25 -0700476 EXPECT_TRUE(params_.SetTargetChannel("stable-channel", true));
477 EXPECT_EQ("stable-channel", params_.target_channel());
478
479 // Set a different channel in stateful LSB release.
480 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700481 test_dir_ + kStatefulPartition + "/etc/lsb-release",
Jay Srinivasan1c0fe792013-03-28 16:45:25 -0700482 "CHROMEOS_RELEASE_TRACK=stable-channel\n"
483 "CHROMEOS_IS_POWERWASH_ALLOWED=true\n"));
484
485 // When set to a valid value while a change is already pending, it should
486 // succeed.
487 params_.Init("", "", false);
488 EXPECT_TRUE(params_.SetTargetChannel("beta-channel", true));
489 // The target channel should reflect the change, but the download channel
490 // should continue to retain the old value ...
491 EXPECT_EQ("beta-channel", params_.target_channel());
492 EXPECT_EQ("stable-channel", params_.download_channel());
493
494 // ... until we update the download channel explicitly.
495 params_.UpdateDownloadChannel();
496 EXPECT_EQ("beta-channel", params_.download_channel());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700497 EXPECT_EQ("beta-channel", params_.target_channel());
Patrick Dubroy7fbbe8a2011-08-01 17:28:22 +0200498}
499
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700500TEST_F(OmahaRequestParamsTest, ChannelIndexTest) {
501 int canary = params_.GetChannelIndex("canary-channel");
502 int dev = params_.GetChannelIndex("dev-channel");
503 int beta = params_.GetChannelIndex("beta-channel");
504 int stable = params_.GetChannelIndex("stable-channel");
505 EXPECT_LE(canary, dev);
506 EXPECT_LE(dev, beta);
507 EXPECT_LE(beta, stable);
508
509 // testimage-channel or other names are not recognized, so index will be -1.
510 int testimage = params_.GetChannelIndex("testimage-channel");
511 int bogus = params_.GetChannelIndex("bogus-channel");
512 EXPECT_EQ(-1, testimage);
513 EXPECT_EQ(-1, bogus);
514}
515
516TEST_F(OmahaRequestParamsTest, ToMoreStableChannelFlagTest) {
517 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700518 test_dir_ + "/etc/lsb-release",
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700519 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
520 "CHROMEOS_RELEASE_FOO=bar\n"
521 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
522 "CHROMEOS_RELEASE_TRACK=canary-channel\n"
523 "CHROMEOS_AUSERVER=http://www.google.com"));
524 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700525 test_dir_ + kStatefulPartition + "/etc/lsb-release",
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700526 "CHROMEOS_RELEASE_BOARD=x86-generic\n"
527 "CHROMEOS_RELEASE_TRACK=stable-channel\n"
528 "CHROMEOS_AUSERVER=https://www.google.com"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700529 OmahaRequestParams out(&fake_system_state_);
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700530 EXPECT_TRUE(DoTest(&out, "", ""));
531 EXPECT_EQ("https://www.google.com", out.update_url());
532 EXPECT_FALSE(out.delta_okay());
533 EXPECT_EQ("stable-channel", out.target_channel());
534 EXPECT_TRUE(out.to_more_stable_channel());
535}
536
537TEST_F(OmahaRequestParamsTest, ShouldLockDownTest) {
Darin Petkov10d02dd2011-01-10 14:57:39 -0800538 EXPECT_FALSE(params_.ShouldLockDown());
539}
540
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700541TEST_F(OmahaRequestParamsTest, BoardAppIdUsedForNonCanaryChannelTest) {
542 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700543 test_dir_ + "/etc/lsb-release",
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700544 "CHROMEOS_RELEASE_APPID=r\n"
545 "CHROMEOS_BOARD_APPID=b\n"
546 "CHROMEOS_CANARY_APPID=c\n"
547 "CHROMEOS_RELEASE_TRACK=stable-channel\n"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700548 OmahaRequestParams out(&fake_system_state_);
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700549 EXPECT_TRUE(DoTest(&out, "", ""));
550 EXPECT_EQ("stable-channel", out.download_channel());
551 EXPECT_EQ("b", out.GetAppId());
552}
553
554TEST_F(OmahaRequestParamsTest, CanaryAppIdUsedForCanaryChannelTest) {
555 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700556 test_dir_ + "/etc/lsb-release",
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700557 "CHROMEOS_RELEASE_APPID=r\n"
558 "CHROMEOS_BOARD_APPID=b\n"
559 "CHROMEOS_CANARY_APPID=c\n"
560 "CHROMEOS_RELEASE_TRACK=canary-channel\n"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700561 OmahaRequestParams out(&fake_system_state_);
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700562 EXPECT_TRUE(DoTest(&out, "", ""));
563 EXPECT_EQ("canary-channel", out.download_channel());
564 EXPECT_EQ("c", out.GetAppId());
565}
566
567TEST_F(OmahaRequestParamsTest, ReleaseAppIdUsedAsDefaultTest) {
568 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700569 test_dir_ + "/etc/lsb-release",
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700570 "CHROMEOS_RELEASE_APPID=r\n"
571 "CHROMEOS_CANARY_APPID=c\n"
572 "CHROMEOS_RELEASE_TRACK=stable-channel\n"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700573 OmahaRequestParams out(&fake_system_state_);
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700574 EXPECT_TRUE(DoTest(&out, "", ""));
575 EXPECT_EQ("stable-channel", out.download_channel());
576 EXPECT_EQ("r", out.GetAppId());
577}
578
Chris Sosac1972482013-04-30 22:31:10 -0700579TEST_F(OmahaRequestParamsTest, CollectECFWVersionsTest) {
580 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700581 test_dir_ + "/etc/lsb-release",
Chris Sosac1972482013-04-30 22:31:10 -0700582 "CHROMEOS_RELEASE_APPID=r\n"
583 "CHROMEOS_CANARY_APPID=c\n"
584 "CHROMEOS_RELEASE_TRACK=stable-channel\n"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700585 OmahaRequestParams out(&fake_system_state_);
Chris Sosac1972482013-04-30 22:31:10 -0700586 out.hwid_ = string("STUMPY ALEX 12345");
587 EXPECT_FALSE(out.CollectECFWVersions());
588
589 out.hwid_ = string("SNOW 12345");
590 EXPECT_TRUE(out.CollectECFWVersions());
591
592 out.hwid_ = string("SAMS ALEX 12345");
593 EXPECT_TRUE(out.CollectECFWVersions());
594}
595
596
adlr@google.com3defe6a2009-12-04 20:57:17 +0000597} // namespace chromeos_update_engine