blob: 90d8519c4c9fdb754e1013545769e0f53341cad2 [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"
adlr@google.com3defe6a2009-12-04 20:57:17 +000029#include "update_engine/test_utils.h"
30#include "update_engine/utils.h"
31
Alex Deymo10875d92014-11-10 21:52:57 -080032using chromeos_update_engine::test_utils::System;
33using 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.
50 ASSERT_TRUE(utils::MakeTempDirectory(kTestDirTemplate,
51 &test_dir_));
52
53 ASSERT_EQ(0, System(string("mkdir -p ") + test_dir_ + "/etc"));
54 ASSERT_EQ(0, System(string("mkdir -p ") + test_dir_ +
Chris Sosabe45bef2013-04-09 18:25:12 -070055 kStatefulPartition + "/etc"));
Jay Srinivasanae4697c2013-03-18 17:08:08 -070056 // Create a fresh copy of the params for each test, so there's no
57 // unintended reuse of state across tests.
Gilad Arnold5bb4c902014-04-10 12:32:13 -070058 OmahaRequestParams new_params(&fake_system_state_);
Jay Srinivasanae4697c2013-03-18 17:08:08 -070059 params_ = new_params;
Gilad Arnoldd04f8e22014-01-09 13:13:40 -080060 params_.set_root(test_dir_);
Darin Petkov10d02dd2011-01-10 14:57:39 -080061 params_.SetLockDown(false);
Darin Petkov5a7f5652010-07-22 21:40:09 -070062 }
63
Alex Deymo610277e2014-11-11 21:18:11 -080064 void TearDown() override {
Gilad Arnoldc9abbec2013-07-01 06:24:42 -070065 EXPECT_EQ(0, System(string("rm -rf ") + test_dir_));
Darin Petkov5a7f5652010-07-22 21:40:09 -070066 }
67
Jay Srinivasanae4697c2013-03-18 17:08:08 -070068 OmahaRequestParams params_;
Gilad Arnold5bb4c902014-04-10 12:32:13 -070069 FakeSystemState fake_system_state_;
Darin Petkov49d91322010-10-25 16:34:58 -070070
Gilad Arnoldc9abbec2013-07-01 06:24:42 -070071 static const char* kTestDirTemplate;
72 string test_dir_;
adlr@google.com3defe6a2009-12-04 20:57:17 +000073};
74
Gilad Arnoldc9abbec2013-07-01 06:24:42 -070075const char* OmahaRequestParamsTest::kTestDirTemplate =
76 "omaha_request_params-test-XXXXXX";
adlr@google.com3defe6a2009-12-04 20:57:17 +000077
Jay Srinivasanae4697c2013-03-18 17:08:08 -070078bool OmahaRequestParamsTest::DoTest(OmahaRequestParams* out,
79 const string& app_version,
80 const string& omaha_url) {
81 bool success = params_.Init(app_version, omaha_url, false);
adlr@google.com3defe6a2009-12-04 20:57:17 +000082 if (out)
Darin Petkov49d91322010-10-25 16:34:58 -070083 *out = params_;
Darin Petkova4a8a8c2010-07-15 22:21:12 -070084 return success;
adlr@google.com3defe6a2009-12-04 20:57:17 +000085}
86
87namespace {
adlr@google.com3defe6a2009-12-04 20:57:17 +000088string GetMachineType() {
Gilad Arnold19a45f02012-07-19 12:36:10 -070089 string machine_type;
90 if (!utils::ReadPipe("uname -m", &machine_type))
adlr@google.com3defe6a2009-12-04 20:57:17 +000091 return "";
Gilad Arnold19a45f02012-07-19 12:36:10 -070092 // Strip anything from the first newline char.
93 size_t newline_pos = machine_type.find('\n');
94 if (newline_pos != string::npos)
95 machine_type.erase(newline_pos);
96 return machine_type;
adlr@google.com3defe6a2009-12-04 20:57:17 +000097}
Alex Vakulenkod2779df2014-06-16 13:19:00 -070098} // namespace
adlr@google.com3defe6a2009-12-04 20:57:17 +000099
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700100TEST_F(OmahaRequestParamsTest, SimpleTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700101 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700102 test_dir_ + "/etc/lsb-release",
Darin Petkov5a7f5652010-07-22 21:40:09 -0700103 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
104 "CHROMEOS_RELEASE_FOO=bar\n"
105 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700106 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
Darin Petkov5a7f5652010-07-22 21:40:09 -0700107 "CHROMEOS_AUSERVER=http://www.google.com"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700108 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700109 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700110 EXPECT_EQ("Chrome OS", out.os_platform());
111 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
112 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700113 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700114 EXPECT_EQ("0.2.2.3", out.app_version());
115 EXPECT_EQ("en-US", out.app_lang());
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700116 EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700117 EXPECT_TRUE(out.delta_okay());
118 EXPECT_EQ("dev-channel", out.target_channel());
119 EXPECT_EQ("http://www.google.com", out.update_url());
adlr@google.com3defe6a2009-12-04 20:57:17 +0000120}
121
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700122TEST_F(OmahaRequestParamsTest, AppIDTest) {
Darin Petkovd315dc72010-11-15 09:52:24 -0800123 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700124 test_dir_ + "/etc/lsb-release",
Darin Petkovd315dc72010-11-15 09:52:24 -0800125 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
126 "CHROMEOS_RELEASE_FOO=bar\n"
127 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700128 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
Darin Petkovd315dc72010-11-15 09:52:24 -0800129 "CHROMEOS_RELEASE_APPID={58c35cef-9d30-476e-9098-ce20377d535d}\n"
130 "CHROMEOS_AUSERVER=http://www.google.com"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700131 OmahaRequestParams out(&fake_system_state_);
Darin Petkovd315dc72010-11-15 09:52:24 -0800132 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700133 EXPECT_EQ("Chrome OS", out.os_platform());
134 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
135 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700136 EXPECT_EQ("{58c35cef-9d30-476e-9098-ce20377d535d}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700137 EXPECT_EQ("0.2.2.3", out.app_version());
138 EXPECT_EQ("en-US", out.app_lang());
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700139 EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700140 EXPECT_TRUE(out.delta_okay());
141 EXPECT_EQ("dev-channel", out.target_channel());
142 EXPECT_EQ("http://www.google.com", out.update_url());
Darin Petkovd315dc72010-11-15 09:52:24 -0800143}
144
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700145TEST_F(OmahaRequestParamsTest, MissingChannelTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700146 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700147 test_dir_ + "/etc/lsb-release",
Darin Petkov5a7f5652010-07-22 21:40:09 -0700148 "CHROMEOS_RELEASE_FOO=bar\n"
149 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700150 "CHROMEOS_RELEASE_TRXCK=dev-channel"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700151 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700152 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700153 EXPECT_EQ("Chrome OS", out.os_platform());
154 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700155 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700156 EXPECT_EQ("0.2.2.3", out.app_version());
157 EXPECT_EQ("en-US", out.app_lang());
158 EXPECT_EQ("", out.target_channel());
adlr@google.com3defe6a2009-12-04 20:57:17 +0000159}
160
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700161TEST_F(OmahaRequestParamsTest, ConfusingReleaseTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700162 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700163 test_dir_ + "/etc/lsb-release",
Darin Petkov5a7f5652010-07-22 21:40:09 -0700164 "CHROMEOS_RELEASE_FOO=CHROMEOS_RELEASE_VERSION=1.2.3.4\n"
165 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700166 "CHROMEOS_RELEASE_TRXCK=dev-channel"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700167 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700168 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700169 EXPECT_EQ("Chrome OS", out.os_platform());
170 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700171 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700172 EXPECT_EQ("0.2.2.3", out.app_version());
173 EXPECT_EQ("en-US", out.app_lang());
174 EXPECT_EQ("", out.target_channel());
adlr@google.com3defe6a2009-12-04 20:57:17 +0000175}
176
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700177TEST_F(OmahaRequestParamsTest, MissingVersionTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700178 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700179 test_dir_ + "/etc/lsb-release",
Darin Petkov5a7f5652010-07-22 21:40:09 -0700180 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
181 "CHROMEOS_RELEASE_FOO=bar\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700182 "CHROMEOS_RELEASE_TRACK=dev-channel"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700183 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700184 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700185 EXPECT_EQ("Chrome OS", out.os_platform());
186 EXPECT_EQ(string("_") + GetMachineType(), out.os_sp());
187 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700188 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700189 EXPECT_EQ("", out.app_version());
190 EXPECT_EQ("en-US", out.app_lang());
191 EXPECT_TRUE(out.delta_okay());
192 EXPECT_EQ("dev-channel", out.target_channel());
Darin Petkov5a7f5652010-07-22 21:40:09 -0700193}
194
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700195TEST_F(OmahaRequestParamsTest, ForceVersionTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700196 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700197 test_dir_ + "/etc/lsb-release",
Darin Petkov5a7f5652010-07-22 21:40:09 -0700198 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
199 "CHROMEOS_RELEASE_FOO=bar\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700200 "CHROMEOS_RELEASE_TRACK=dev-channel"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700201 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700202 EXPECT_TRUE(DoTest(&out, "ForcedVersion", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700203 EXPECT_EQ("Chrome OS", out.os_platform());
204 EXPECT_EQ(string("ForcedVersion_") + GetMachineType(), out.os_sp());
205 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700206 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700207 EXPECT_EQ("ForcedVersion", out.app_version());
208 EXPECT_EQ("en-US", out.app_lang());
209 EXPECT_TRUE(out.delta_okay());
210 EXPECT_EQ("dev-channel", out.target_channel());
Darin Petkov5a7f5652010-07-22 21:40:09 -0700211}
212
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700213TEST_F(OmahaRequestParamsTest, ForcedURLTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700214 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700215 test_dir_ + "/etc/lsb-release",
Darin Petkov5a7f5652010-07-22 21:40:09 -0700216 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
217 "CHROMEOS_RELEASE_FOO=bar\n"
218 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700219 "CHROMEOS_RELEASE_TRACK=dev-channel"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700220 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700221 EXPECT_TRUE(DoTest(&out, "", "http://forced.google.com"));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700222 EXPECT_EQ("Chrome OS", out.os_platform());
223 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
224 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700225 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700226 EXPECT_EQ("0.2.2.3", out.app_version());
227 EXPECT_EQ("en-US", out.app_lang());
228 EXPECT_TRUE(out.delta_okay());
229 EXPECT_EQ("dev-channel", out.target_channel());
230 EXPECT_EQ("http://forced.google.com", out.update_url());
Darin Petkov5a7f5652010-07-22 21:40:09 -0700231}
232
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700233TEST_F(OmahaRequestParamsTest, MissingURLTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700234 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700235 test_dir_ + "/etc/lsb-release",
Darin Petkov5a7f5652010-07-22 21:40:09 -0700236 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
237 "CHROMEOS_RELEASE_FOO=bar\n"
238 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700239 "CHROMEOS_RELEASE_TRACK=dev-channel"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700240 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700241 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700242 EXPECT_EQ("Chrome OS", out.os_platform());
243 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
244 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700245 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700246 EXPECT_EQ("0.2.2.3", out.app_version());
247 EXPECT_EQ("en-US", out.app_lang());
248 EXPECT_TRUE(out.delta_okay());
249 EXPECT_EQ("dev-channel", out.target_channel());
250 EXPECT_EQ(kProductionOmahaUrl, out.update_url());
Andrew de los Reyes970bb282009-12-09 16:34:04 -0800251}
252
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700253TEST_F(OmahaRequestParamsTest, NoDeltasTest) {
Andrew de los Reyes3f0303a2010-07-15 22:35:35 -0700254 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700255 test_dir_ + "/etc/lsb-release",
Andrew de los Reyes3f0303a2010-07-15 22:35:35 -0700256 "CHROMEOS_RELEASE_FOO=CHROMEOS_RELEASE_VERSION=1.2.3.4\n"
257 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700258 "CHROMEOS_RELEASE_TRXCK=dev-channel"));
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700259 ASSERT_TRUE(WriteFileString(test_dir_ + "/.nodelta", ""));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700260 OmahaRequestParams out(&fake_system_state_);
Darin Petkov5a7f5652010-07-22 21:40:09 -0700261 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700262 EXPECT_FALSE(out.delta_okay());
Andrew de los Reyes3f0303a2010-07-15 22:35:35 -0700263}
264
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700265TEST_F(OmahaRequestParamsTest, OverrideTest) {
Darin Petkov49d91322010-10-25 16:34:58 -0700266 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700267 test_dir_ + "/etc/lsb-release",
Darin Petkov49d91322010-10-25 16:34:58 -0700268 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
269 "CHROMEOS_RELEASE_FOO=bar\n"
270 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Darin Petkov10d02dd2011-01-10 14:57:39 -0800271 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
272 "CHROMEOS_AUSERVER=http://www.google.com"));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700273 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700274 test_dir_ + kStatefulPartition + "/etc/lsb-release",
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700275 "CHROMEOS_RELEASE_BOARD=x86-generic\n"
276 "CHROMEOS_RELEASE_TRACK=beta-channel\n"
277 "CHROMEOS_AUSERVER=https://www.google.com"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700278 OmahaRequestParams out(&fake_system_state_);
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700279 EXPECT_TRUE(DoTest(&out, "", ""));
280 EXPECT_EQ("Chrome OS", out.os_platform());
281 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
282 EXPECT_EQ("x86-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700283 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700284 EXPECT_EQ("0.2.2.3", out.app_version());
285 EXPECT_EQ("en-US", out.app_lang());
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700286 EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700287 EXPECT_FALSE(out.delta_okay());
288 EXPECT_EQ("beta-channel", out.target_channel());
289 EXPECT_EQ("https://www.google.com", out.update_url());
290}
291
292TEST_F(OmahaRequestParamsTest, OverrideLockDownTest) {
293 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700294 test_dir_ + "/etc/lsb-release",
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700295 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
296 "CHROMEOS_RELEASE_FOO=bar\n"
297 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
298 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
299 "CHROMEOS_AUSERVER=https://www.google.com"));
300 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700301 test_dir_ + kStatefulPartition + "/etc/lsb-release",
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700302 "CHROMEOS_RELEASE_BOARD=x86-generic\n"
303 "CHROMEOS_RELEASE_TRACK=stable-channel\n"
304 "CHROMEOS_AUSERVER=http://www.google.com"));
Darin Petkov10d02dd2011-01-10 14:57:39 -0800305 params_.SetLockDown(true);
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700306 OmahaRequestParams out(&fake_system_state_);
Darin Petkov10d02dd2011-01-10 14:57:39 -0800307 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700308 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700309 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700310 EXPECT_EQ("0.2.2.3", out.app_version());
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700311 EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700312 EXPECT_FALSE(out.delta_okay());
313 EXPECT_EQ("stable-channel", out.target_channel());
314 EXPECT_EQ("https://www.google.com", out.update_url());
Darin Petkov49d91322010-10-25 16:34:58 -0700315}
316
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700317TEST_F(OmahaRequestParamsTest, OverrideSameChannelTest) {
Darin Petkova3df55b2010-11-15 13:33:55 -0800318 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700319 test_dir_ + "/etc/lsb-release",
Darin Petkova3df55b2010-11-15 13:33:55 -0800320 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
321 "CHROMEOS_RELEASE_FOO=bar\n"
322 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700323 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
Darin Petkova3df55b2010-11-15 13:33:55 -0800324 "CHROMEOS_AUSERVER=http://www.google.com"));
325 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700326 test_dir_ + kStatefulPartition + "/etc/lsb-release",
Darin Petkova3df55b2010-11-15 13:33:55 -0800327 "CHROMEOS_RELEASE_BOARD=x86-generic\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700328 "CHROMEOS_RELEASE_TRACK=dev-channel"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700329 OmahaRequestParams out(&fake_system_state_);
Darin Petkova3df55b2010-11-15 13:33:55 -0800330 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700331 EXPECT_EQ("x86-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700332 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700333 EXPECT_EQ("0.2.2.3", out.app_version());
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700334 EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700335 EXPECT_TRUE(out.delta_okay());
336 EXPECT_EQ("dev-channel", out.target_channel());
337 EXPECT_EQ("http://www.google.com", out.update_url());
Darin Petkova3df55b2010-11-15 13:33:55 -0800338}
339
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700340TEST_F(OmahaRequestParamsTest, SetTargetChannelTest) {
Darin Petkov49d91322010-10-25 16:34:58 -0700341 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700342 test_dir_ + "/etc/lsb-release",
Darin Petkov49d91322010-10-25 16:34:58 -0700343 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
344 "CHROMEOS_RELEASE_FOO=bar\n"
345 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700346 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
Darin Petkov49d91322010-10-25 16:34:58 -0700347 "CHROMEOS_AUSERVER=http://www.google.com"));
348 {
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700349 OmahaRequestParams params(&fake_system_state_);
Gilad Arnoldd04f8e22014-01-09 13:13:40 -0800350 params.set_root(test_dir_);
Darin Petkov10d02dd2011-01-10 14:57:39 -0800351 params.SetLockDown(false);
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700352 EXPECT_TRUE(params.Init("", "", false));
353 params.SetTargetChannel("canary-channel", false);
354 EXPECT_FALSE(params.is_powerwash_allowed());
Darin Petkov49d91322010-10-25 16:34:58 -0700355 }
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700356 OmahaRequestParams out(&fake_system_state_);
Darin Petkov49d91322010-10-25 16:34:58 -0700357 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700358 EXPECT_EQ("canary-channel", out.target_channel());
359 EXPECT_FALSE(out.is_powerwash_allowed());
Darin Petkov49d91322010-10-25 16:34:58 -0700360}
361
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700362TEST_F(OmahaRequestParamsTest, SetIsPowerwashAllowedTest) {
Darin Petkov49d91322010-10-25 16:34:58 -0700363 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700364 test_dir_ + "/etc/lsb-release",
Darin Petkov49d91322010-10-25 16:34:58 -0700365 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
366 "CHROMEOS_RELEASE_FOO=bar\n"
367 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700368 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
Darin Petkov49d91322010-10-25 16:34:58 -0700369 "CHROMEOS_AUSERVER=http://www.google.com"));
Darin Petkov49d91322010-10-25 16:34:58 -0700370 {
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700371 OmahaRequestParams params(&fake_system_state_);
Gilad Arnoldd04f8e22014-01-09 13:13:40 -0800372 params.set_root(test_dir_);
Darin Petkov10d02dd2011-01-10 14:57:39 -0800373 params.SetLockDown(false);
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700374 EXPECT_TRUE(params.Init("", "", false));
375 params.SetTargetChannel("canary-channel", true);
376 EXPECT_TRUE(params.is_powerwash_allowed());
Darin Petkov49d91322010-10-25 16:34:58 -0700377 }
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700378 OmahaRequestParams out(&fake_system_state_);
Darin Petkov49d91322010-10-25 16:34:58 -0700379 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700380 EXPECT_EQ("canary-channel", out.target_channel());
381 EXPECT_TRUE(out.is_powerwash_allowed());
Darin Petkov49d91322010-10-25 16:34:58 -0700382}
383
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700384TEST_F(OmahaRequestParamsTest, SetTargetChannelInvalidTest) {
Darin Petkov49d91322010-10-25 16:34:58 -0700385 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700386 test_dir_ + "/etc/lsb-release",
Darin Petkov49d91322010-10-25 16:34:58 -0700387 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
388 "CHROMEOS_RELEASE_FOO=bar\n"
389 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700390 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
Darin Petkov49d91322010-10-25 16:34:58 -0700391 "CHROMEOS_AUSERVER=http://www.google.com"));
392 {
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700393 OmahaRequestParams params(&fake_system_state_);
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700394 params.set_root(string("./") + test_dir_);
Darin Petkov10d02dd2011-01-10 14:57:39 -0800395 params.SetLockDown(true);
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700396 EXPECT_TRUE(params.Init("", "", false));
397 params.SetTargetChannel("dogfood-channel", true);
398 EXPECT_FALSE(params.is_powerwash_allowed());
Darin Petkov49d91322010-10-25 16:34:58 -0700399 }
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700400 OmahaRequestParams out(&fake_system_state_);
Darin Petkov49d91322010-10-25 16:34:58 -0700401 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700402 EXPECT_EQ("arm-generic", out.os_board());
403 EXPECT_EQ("dev-channel", out.target_channel());
404 EXPECT_FALSE(out.is_powerwash_allowed());
Darin Petkov49d91322010-10-25 16:34:58 -0700405}
406
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700407TEST_F(OmahaRequestParamsTest, IsValidChannelTest) {
Darin Petkov10d02dd2011-01-10 14:57:39 -0800408 params_.SetLockDown(false);
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700409 EXPECT_TRUE(params_.IsValidChannel("canary-channel"));
410 EXPECT_TRUE(params_.IsValidChannel("stable-channel"));
411 EXPECT_TRUE(params_.IsValidChannel("beta-channel"));
412 EXPECT_TRUE(params_.IsValidChannel("dev-channel"));
413 EXPECT_FALSE(params_.IsValidChannel("testimage-channel"));
414 EXPECT_FALSE(params_.IsValidChannel("dogfood-channel"));
415 EXPECT_FALSE(params_.IsValidChannel("some-channel"));
416 EXPECT_FALSE(params_.IsValidChannel(""));
Darin Petkov49d91322010-10-25 16:34:58 -0700417}
418
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700419TEST_F(OmahaRequestParamsTest, ValidChannelTest) {
Darin Petkov49d91322010-10-25 16:34:58 -0700420 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700421 test_dir_ + "/etc/lsb-release",
Darin Petkov49d91322010-10-25 16:34:58 -0700422 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
423 "CHROMEOS_RELEASE_FOO=bar\n"
424 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
425 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
426 "CHROMEOS_AUSERVER=http://www.google.com"));
Darin Petkov10d02dd2011-01-10 14:57:39 -0800427 params_.SetLockDown(true);
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700428 OmahaRequestParams out(&fake_system_state_);
Darin Petkov49d91322010-10-25 16:34:58 -0700429 EXPECT_TRUE(DoTest(&out, "", ""));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700430 EXPECT_EQ("Chrome OS", out.os_platform());
431 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
432 EXPECT_EQ("arm-generic", out.os_board());
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700433 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700434 EXPECT_EQ("0.2.2.3", out.app_version());
435 EXPECT_EQ("en-US", out.app_lang());
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700436 EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700437 EXPECT_TRUE(out.delta_okay());
438 EXPECT_EQ("dev-channel", out.target_channel());
439 EXPECT_EQ("http://www.google.com", out.update_url());
Darin Petkov49d91322010-10-25 16:34:58 -0700440}
441
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700442TEST_F(OmahaRequestParamsTest, SetTargetChannelWorks) {
Patrick Dubroy7fbbe8a2011-08-01 17:28:22 +0200443 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700444 test_dir_ + "/etc/lsb-release",
Patrick Dubroy7fbbe8a2011-08-01 17:28:22 +0200445 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
446 "CHROMEOS_RELEASE_FOO=bar\n"
447 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
448 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
449 "CHROMEOS_AUSERVER=http://www.google.com"));
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700450 params_.SetLockDown(false);
Patrick Dubroy7fbbe8a2011-08-01 17:28:22 +0200451
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700452 // Check LSB value is used by default when SetTargetChannel is not called.
453 params_.Init("", "", false);
454 EXPECT_EQ("dev-channel", params_.target_channel());
Patrick Dubroy7fbbe8a2011-08-01 17:28:22 +0200455
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700456 // When an invalid value is set, it should be ignored and the
457 // value from lsb-release should be used instead.
458 params_.Init("", "", false);
459 EXPECT_FALSE(params_.SetTargetChannel("invalid-channel", false));
460 EXPECT_EQ("dev-channel", params_.target_channel());
461
462 // When set to a valid value, it should take effect.
463 params_.Init("", "", false);
464 EXPECT_TRUE(params_.SetTargetChannel("beta-channel", true));
465 EXPECT_EQ("beta-channel", params_.target_channel());
466
467 // When set to the same value, it should be idempotent.
468 params_.Init("", "", false);
469 EXPECT_TRUE(params_.SetTargetChannel("beta-channel", true));
470 EXPECT_EQ("beta-channel", params_.target_channel());
471
472 // When set to a valid value while a change is already pending, it should
Jay Srinivasan1c0fe792013-03-28 16:45:25 -0700473 // succeed.
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700474 params_.Init("", "", false);
Jay Srinivasan1c0fe792013-03-28 16:45:25 -0700475 EXPECT_TRUE(params_.SetTargetChannel("stable-channel", true));
476 EXPECT_EQ("stable-channel", params_.target_channel());
477
478 // Set a different channel in stateful LSB release.
479 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700480 test_dir_ + kStatefulPartition + "/etc/lsb-release",
Jay Srinivasan1c0fe792013-03-28 16:45:25 -0700481 "CHROMEOS_RELEASE_TRACK=stable-channel\n"
482 "CHROMEOS_IS_POWERWASH_ALLOWED=true\n"));
483
484 // When set to a valid value while a change is already pending, it should
485 // succeed.
486 params_.Init("", "", false);
487 EXPECT_TRUE(params_.SetTargetChannel("beta-channel", true));
488 // The target channel should reflect the change, but the download channel
489 // should continue to retain the old value ...
490 EXPECT_EQ("beta-channel", params_.target_channel());
491 EXPECT_EQ("stable-channel", params_.download_channel());
492
493 // ... until we update the download channel explicitly.
494 params_.UpdateDownloadChannel();
495 EXPECT_EQ("beta-channel", params_.download_channel());
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700496 EXPECT_EQ("beta-channel", params_.target_channel());
Patrick Dubroy7fbbe8a2011-08-01 17:28:22 +0200497}
498
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700499TEST_F(OmahaRequestParamsTest, ChannelIndexTest) {
500 int canary = params_.GetChannelIndex("canary-channel");
501 int dev = params_.GetChannelIndex("dev-channel");
502 int beta = params_.GetChannelIndex("beta-channel");
503 int stable = params_.GetChannelIndex("stable-channel");
504 EXPECT_LE(canary, dev);
505 EXPECT_LE(dev, beta);
506 EXPECT_LE(beta, stable);
507
508 // testimage-channel or other names are not recognized, so index will be -1.
509 int testimage = params_.GetChannelIndex("testimage-channel");
510 int bogus = params_.GetChannelIndex("bogus-channel");
511 EXPECT_EQ(-1, testimage);
512 EXPECT_EQ(-1, bogus);
513}
514
515TEST_F(OmahaRequestParamsTest, ToMoreStableChannelFlagTest) {
516 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700517 test_dir_ + "/etc/lsb-release",
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700518 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
519 "CHROMEOS_RELEASE_FOO=bar\n"
520 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
521 "CHROMEOS_RELEASE_TRACK=canary-channel\n"
522 "CHROMEOS_AUSERVER=http://www.google.com"));
523 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700524 test_dir_ + kStatefulPartition + "/etc/lsb-release",
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700525 "CHROMEOS_RELEASE_BOARD=x86-generic\n"
526 "CHROMEOS_RELEASE_TRACK=stable-channel\n"
527 "CHROMEOS_AUSERVER=https://www.google.com"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700528 OmahaRequestParams out(&fake_system_state_);
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700529 EXPECT_TRUE(DoTest(&out, "", ""));
530 EXPECT_EQ("https://www.google.com", out.update_url());
531 EXPECT_FALSE(out.delta_okay());
532 EXPECT_EQ("stable-channel", out.target_channel());
533 EXPECT_TRUE(out.to_more_stable_channel());
534}
535
536TEST_F(OmahaRequestParamsTest, ShouldLockDownTest) {
Darin Petkov10d02dd2011-01-10 14:57:39 -0800537 EXPECT_FALSE(params_.ShouldLockDown());
538}
539
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700540TEST_F(OmahaRequestParamsTest, BoardAppIdUsedForNonCanaryChannelTest) {
541 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700542 test_dir_ + "/etc/lsb-release",
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700543 "CHROMEOS_RELEASE_APPID=r\n"
544 "CHROMEOS_BOARD_APPID=b\n"
545 "CHROMEOS_CANARY_APPID=c\n"
546 "CHROMEOS_RELEASE_TRACK=stable-channel\n"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700547 OmahaRequestParams out(&fake_system_state_);
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700548 EXPECT_TRUE(DoTest(&out, "", ""));
549 EXPECT_EQ("stable-channel", out.download_channel());
550 EXPECT_EQ("b", out.GetAppId());
551}
552
553TEST_F(OmahaRequestParamsTest, CanaryAppIdUsedForCanaryChannelTest) {
554 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700555 test_dir_ + "/etc/lsb-release",
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700556 "CHROMEOS_RELEASE_APPID=r\n"
557 "CHROMEOS_BOARD_APPID=b\n"
558 "CHROMEOS_CANARY_APPID=c\n"
559 "CHROMEOS_RELEASE_TRACK=canary-channel\n"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700560 OmahaRequestParams out(&fake_system_state_);
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700561 EXPECT_TRUE(DoTest(&out, "", ""));
562 EXPECT_EQ("canary-channel", out.download_channel());
563 EXPECT_EQ("c", out.GetAppId());
564}
565
566TEST_F(OmahaRequestParamsTest, ReleaseAppIdUsedAsDefaultTest) {
567 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700568 test_dir_ + "/etc/lsb-release",
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700569 "CHROMEOS_RELEASE_APPID=r\n"
570 "CHROMEOS_CANARY_APPID=c\n"
571 "CHROMEOS_RELEASE_TRACK=stable-channel\n"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700572 OmahaRequestParams out(&fake_system_state_);
Jay Srinivasandb0acdf2013-04-02 14:47:45 -0700573 EXPECT_TRUE(DoTest(&out, "", ""));
574 EXPECT_EQ("stable-channel", out.download_channel());
575 EXPECT_EQ("r", out.GetAppId());
576}
577
Chris Sosac1972482013-04-30 22:31:10 -0700578TEST_F(OmahaRequestParamsTest, CollectECFWVersionsTest) {
579 ASSERT_TRUE(WriteFileString(
Gilad Arnoldc9abbec2013-07-01 06:24:42 -0700580 test_dir_ + "/etc/lsb-release",
Chris Sosac1972482013-04-30 22:31:10 -0700581 "CHROMEOS_RELEASE_APPID=r\n"
582 "CHROMEOS_CANARY_APPID=c\n"
583 "CHROMEOS_RELEASE_TRACK=stable-channel\n"));
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700584 OmahaRequestParams out(&fake_system_state_);
Chris Sosac1972482013-04-30 22:31:10 -0700585 out.hwid_ = string("STUMPY ALEX 12345");
586 EXPECT_FALSE(out.CollectECFWVersions());
587
588 out.hwid_ = string("SNOW 12345");
589 EXPECT_TRUE(out.CollectECFWVersions());
590
591 out.hwid_ = string("SAMS ALEX 12345");
592 EXPECT_TRUE(out.CollectECFWVersions());
593}
594
595
adlr@google.com3defe6a2009-12-04 20:57:17 +0000596} // namespace chromeos_update_engine