blob: ecaa682c576b8c977c948da21dbf7f560d837ea0 [file] [log] [blame]
Darin Petkovf2065b42011-05-17 16:36:27 -07001// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
adlr@google.com3defe6a2009-12-04 20:57:17 +00002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include <stdio.h>
Darin Petkovfbb40092010-07-29 17:05:50 -07006
adlr@google.com3defe6a2009-12-04 20:57:17 +00007#include <string>
Darin Petkovfbb40092010-07-29 17:05:50 -07008
9#include "base/file_util.h"
10#include "gtest/gtest.h"
adlr@google.com3defe6a2009-12-04 20:57:17 +000011#include "update_engine/install_plan.h"
Darin Petkova4a8a8c2010-07-15 22:21:12 -070012#include "update_engine/omaha_request_params.h"
adlr@google.com3defe6a2009-12-04 20:57:17 +000013#include "update_engine/test_utils.h"
14#include "update_engine/utils.h"
15
16using std::string;
17
18namespace chromeos_update_engine {
19
Darin Petkova4a8a8c2010-07-15 22:21:12 -070020class OmahaRequestDeviceParamsTest : public ::testing::Test {
Darin Petkov5a7f5652010-07-22 21:40:09 -070021 protected:
Darin Petkova4a8a8c2010-07-15 22:21:12 -070022 // Return true iff the OmahaRequestDeviceParams::Init succeeded. If
23 // out is non-NULL, it's set w/ the generated data.
Darin Petkov5a7f5652010-07-22 21:40:09 -070024 bool DoTest(OmahaRequestParams* out, const string& app_version,
25 const string& omaha_url);
26
27 virtual void SetUp() {
28 ASSERT_EQ(0, System(string("mkdir -p ") + kTestDir + "/etc"));
29 ASSERT_EQ(0, System(string("mkdir -p ") + kTestDir +
30 utils::kStatefulPartition + "/etc"));
Darin Petkov49d91322010-10-25 16:34:58 -070031 params_.set_root(string("./") + kTestDir);
Darin Petkov10d02dd2011-01-10 14:57:39 -080032 params_.SetLockDown(false);
Darin Petkov5a7f5652010-07-22 21:40:09 -070033 }
34
35 virtual void TearDown() {
36 EXPECT_EQ(0, System(string("rm -rf ") + kTestDir));
37 }
38
Darin Petkov49d91322010-10-25 16:34:58 -070039 OmahaRequestDeviceParams params_;
40
adlr@google.com3defe6a2009-12-04 20:57:17 +000041 static const string kTestDir;
42};
43
Darin Petkova4a8a8c2010-07-15 22:21:12 -070044const string OmahaRequestDeviceParamsTest::kTestDir =
45 "omaha_request_device_params-test";
adlr@google.com3defe6a2009-12-04 20:57:17 +000046
Darin Petkov5a7f5652010-07-22 21:40:09 -070047bool OmahaRequestDeviceParamsTest::DoTest(OmahaRequestParams* out,
48 const string& app_version,
49 const string& omaha_url) {
Patrick Dubroy7fbbe8a2011-08-01 17:28:22 +020050 bool success = params_.Init(app_version, omaha_url, "");
adlr@google.com3defe6a2009-12-04 20:57:17 +000051 if (out)
Darin Petkov49d91322010-10-25 16:34:58 -070052 *out = params_;
Darin Petkova4a8a8c2010-07-15 22:21:12 -070053 return success;
adlr@google.com3defe6a2009-12-04 20:57:17 +000054}
55
56namespace {
adlr@google.com3defe6a2009-12-04 20:57:17 +000057string GetMachineType() {
Gilad Arnold19a45f02012-07-19 12:36:10 -070058 string machine_type;
59 if (!utils::ReadPipe("uname -m", &machine_type))
adlr@google.com3defe6a2009-12-04 20:57:17 +000060 return "";
Gilad Arnold19a45f02012-07-19 12:36:10 -070061 // Strip anything from the first newline char.
62 size_t newline_pos = machine_type.find('\n');
63 if (newline_pos != string::npos)
64 machine_type.erase(newline_pos);
65 return machine_type;
adlr@google.com3defe6a2009-12-04 20:57:17 +000066}
67} // namespace {}
68
Darin Petkova4a8a8c2010-07-15 22:21:12 -070069TEST_F(OmahaRequestDeviceParamsTest, SimpleTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -070070 ASSERT_TRUE(WriteFileString(
71 kTestDir + "/etc/lsb-release",
72 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
73 "CHROMEOS_RELEASE_FOO=bar\n"
74 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
75 "CHROMEOS_RELEASE_TRACK=footrack\n"
76 "CHROMEOS_AUSERVER=http://www.google.com"));
77 OmahaRequestParams out;
78 EXPECT_TRUE(DoTest(&out, "", ""));
Darin Petkov5a7f5652010-07-22 21:40:09 -070079 EXPECT_EQ("Chrome OS", out.os_platform);
80 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp);
81 EXPECT_EQ("arm-generic", out.os_board);
82 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
83 EXPECT_EQ("0.2.2.3", out.app_version);
84 EXPECT_EQ("en-US", out.app_lang);
Darin Petkovfbb40092010-07-29 17:05:50 -070085 EXPECT_EQ("", out.hardware_class);
Darin Petkov5a7f5652010-07-22 21:40:09 -070086 EXPECT_TRUE(out.delta_okay);
87 EXPECT_EQ("footrack", out.app_track);
88 EXPECT_EQ("http://www.google.com", out.update_url);
adlr@google.com3defe6a2009-12-04 20:57:17 +000089}
90
Darin Petkovd315dc72010-11-15 09:52:24 -080091TEST_F(OmahaRequestDeviceParamsTest, AppIDTest) {
92 ASSERT_TRUE(WriteFileString(
93 kTestDir + "/etc/lsb-release",
94 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
95 "CHROMEOS_RELEASE_FOO=bar\n"
96 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
97 "CHROMEOS_RELEASE_TRACK=footrack\n"
98 "CHROMEOS_RELEASE_APPID={58c35cef-9d30-476e-9098-ce20377d535d}\n"
99 "CHROMEOS_AUSERVER=http://www.google.com"));
100 OmahaRequestParams out;
101 EXPECT_TRUE(DoTest(&out, "", ""));
102 EXPECT_EQ("Chrome OS", out.os_platform);
103 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp);
104 EXPECT_EQ("arm-generic", out.os_board);
105 EXPECT_EQ("{58c35cef-9d30-476e-9098-ce20377d535d}", out.app_id);
106 EXPECT_EQ("0.2.2.3", out.app_version);
107 EXPECT_EQ("en-US", out.app_lang);
108 EXPECT_EQ("", out.hardware_class);
109 EXPECT_TRUE(out.delta_okay);
110 EXPECT_EQ("footrack", out.app_track);
111 EXPECT_EQ("http://www.google.com", out.update_url);
112}
113
Darin Petkova4a8a8c2010-07-15 22:21:12 -0700114TEST_F(OmahaRequestDeviceParamsTest, MissingTrackTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700115 ASSERT_TRUE(WriteFileString(
116 kTestDir + "/etc/lsb-release",
117 "CHROMEOS_RELEASE_FOO=bar\n"
118 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
119 "CHROMEOS_RELEASE_TRXCK=footrack"));
120 OmahaRequestParams out;
121 EXPECT_TRUE(DoTest(&out, "", ""));
Darin Petkov5a7f5652010-07-22 21:40:09 -0700122 EXPECT_EQ("Chrome OS", out.os_platform);
123 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp);
124 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
125 EXPECT_EQ("0.2.2.3", out.app_version);
126 EXPECT_EQ("en-US", out.app_lang);
127 EXPECT_EQ("", out.app_track);
adlr@google.com3defe6a2009-12-04 20:57:17 +0000128}
129
Darin Petkova4a8a8c2010-07-15 22:21:12 -0700130TEST_F(OmahaRequestDeviceParamsTest, ConfusingReleaseTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700131 ASSERT_TRUE(WriteFileString(
132 kTestDir + "/etc/lsb-release",
133 "CHROMEOS_RELEASE_FOO=CHROMEOS_RELEASE_VERSION=1.2.3.4\n"
134 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
135 "CHROMEOS_RELEASE_TRXCK=footrack"));
136 OmahaRequestParams out;
137 EXPECT_TRUE(DoTest(&out, "", ""));
Darin Petkov5a7f5652010-07-22 21:40:09 -0700138 EXPECT_EQ("Chrome OS", out.os_platform);
139 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp);
140 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
141 EXPECT_EQ("0.2.2.3", out.app_version);
142 EXPECT_EQ("en-US", out.app_lang);
143 EXPECT_EQ("", out.app_track);
adlr@google.com3defe6a2009-12-04 20:57:17 +0000144}
145
Darin Petkov5a7f5652010-07-22 21:40:09 -0700146TEST_F(OmahaRequestDeviceParamsTest, MissingVersionTest) {
147 ASSERT_TRUE(WriteFileString(
148 kTestDir + "/etc/lsb-release",
149 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
150 "CHROMEOS_RELEASE_FOO=bar\n"
151 "CHROMEOS_RELEASE_TRACK=footrack"));
152 OmahaRequestParams out;
153 EXPECT_TRUE(DoTest(&out, "", ""));
Darin Petkov5a7f5652010-07-22 21:40:09 -0700154 EXPECT_EQ("Chrome OS", out.os_platform);
155 EXPECT_EQ(string("_") + GetMachineType(), out.os_sp);
156 EXPECT_EQ("arm-generic", out.os_board);
157 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
158 EXPECT_EQ("", out.app_version);
159 EXPECT_EQ("en-US", out.app_lang);
160 EXPECT_TRUE(out.delta_okay);
161 EXPECT_EQ("footrack", out.app_track);
162}
163
164TEST_F(OmahaRequestDeviceParamsTest, ForceVersionTest) {
165 ASSERT_TRUE(WriteFileString(
166 kTestDir + "/etc/lsb-release",
167 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
168 "CHROMEOS_RELEASE_FOO=bar\n"
169 "CHROMEOS_RELEASE_TRACK=footrack"));
170 OmahaRequestParams out;
171 EXPECT_TRUE(DoTest(&out, "ForcedVersion", ""));
Darin Petkov5a7f5652010-07-22 21:40:09 -0700172 EXPECT_EQ("Chrome OS", out.os_platform);
173 EXPECT_EQ(string("ForcedVersion_") + GetMachineType(), out.os_sp);
174 EXPECT_EQ("arm-generic", out.os_board);
175 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
176 EXPECT_EQ("ForcedVersion", out.app_version);
177 EXPECT_EQ("en-US", out.app_lang);
178 EXPECT_TRUE(out.delta_okay);
179 EXPECT_EQ("footrack", out.app_track);
180}
181
182TEST_F(OmahaRequestDeviceParamsTest, ForcedURLTest) {
183 ASSERT_TRUE(WriteFileString(
184 kTestDir + "/etc/lsb-release",
185 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
186 "CHROMEOS_RELEASE_FOO=bar\n"
187 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
188 "CHROMEOS_RELEASE_TRACK=footrack"));
189 OmahaRequestParams out;
190 EXPECT_TRUE(DoTest(&out, "", "http://forced.google.com"));
Darin Petkov5a7f5652010-07-22 21:40:09 -0700191 EXPECT_EQ("Chrome OS", out.os_platform);
192 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp);
193 EXPECT_EQ("arm-generic", out.os_board);
194 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
195 EXPECT_EQ("0.2.2.3", out.app_version);
196 EXPECT_EQ("en-US", out.app_lang);
197 EXPECT_TRUE(out.delta_okay);
198 EXPECT_EQ("footrack", out.app_track);
199 EXPECT_EQ("http://forced.google.com", out.update_url);
200}
201
202TEST_F(OmahaRequestDeviceParamsTest, MissingURLTest) {
203 ASSERT_TRUE(WriteFileString(
204 kTestDir + "/etc/lsb-release",
205 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
206 "CHROMEOS_RELEASE_FOO=bar\n"
207 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
208 "CHROMEOS_RELEASE_TRACK=footrack"));
209 OmahaRequestParams out;
210 EXPECT_TRUE(DoTest(&out, "", ""));
Darin Petkov5a7f5652010-07-22 21:40:09 -0700211 EXPECT_EQ("Chrome OS", out.os_platform);
212 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp);
213 EXPECT_EQ("arm-generic", out.os_board);
214 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
215 EXPECT_EQ("0.2.2.3", out.app_version);
216 EXPECT_EQ("en-US", out.app_lang);
217 EXPECT_TRUE(out.delta_okay);
218 EXPECT_EQ("footrack", out.app_track);
219 EXPECT_EQ(OmahaRequestParams::kUpdateUrl, out.update_url);
Andrew de los Reyes970bb282009-12-09 16:34:04 -0800220}
221
Andrew de los Reyes3f0303a2010-07-15 22:35:35 -0700222TEST_F(OmahaRequestDeviceParamsTest, NoDeltasTest) {
Andrew de los Reyes3f0303a2010-07-15 22:35:35 -0700223 ASSERT_TRUE(WriteFileString(
224 kTestDir + "/etc/lsb-release",
225 "CHROMEOS_RELEASE_FOO=CHROMEOS_RELEASE_VERSION=1.2.3.4\n"
226 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
227 "CHROMEOS_RELEASE_TRXCK=footrack"));
228 ASSERT_TRUE(WriteFileString(kTestDir + "/.nodelta", ""));
229 OmahaRequestParams out;
Darin Petkov5a7f5652010-07-22 21:40:09 -0700230 EXPECT_TRUE(DoTest(&out, "", ""));
Andrew de los Reyes3f0303a2010-07-15 22:35:35 -0700231 EXPECT_FALSE(out.delta_okay);
Andrew de los Reyes3f0303a2010-07-15 22:35:35 -0700232}
233
Darin Petkov49d91322010-10-25 16:34:58 -0700234TEST_F(OmahaRequestDeviceParamsTest, OverrideTest) {
235 ASSERT_TRUE(WriteFileString(
236 kTestDir + "/etc/lsb-release",
237 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
238 "CHROMEOS_RELEASE_FOO=bar\n"
239 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
240 "CHROMEOS_RELEASE_TRACK=footrack\n"
241 "CHROMEOS_AUSERVER=http://www.google.com"));
242 ASSERT_TRUE(WriteFileString(
243 kTestDir + utils::kStatefulPartition + "/etc/lsb-release",
244 "CHROMEOS_RELEASE_BOARD=x86-generic\n"
245 "CHROMEOS_RELEASE_TRACK=bartrack\n"
Darin Petkov10d02dd2011-01-10 14:57:39 -0800246 "CHROMEOS_AUSERVER=https://www.google.com"));
Darin Petkov49d91322010-10-25 16:34:58 -0700247 OmahaRequestParams out;
248 EXPECT_TRUE(DoTest(&out, "", ""));
249 EXPECT_EQ("Chrome OS", out.os_platform);
250 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp);
251 EXPECT_EQ("x86-generic", out.os_board);
252 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
253 EXPECT_EQ("0.2.2.3", out.app_version);
254 EXPECT_EQ("en-US", out.app_lang);
255 EXPECT_EQ("", out.hardware_class);
Darin Petkova3df55b2010-11-15 13:33:55 -0800256 EXPECT_FALSE(out.delta_okay);
Darin Petkov49d91322010-10-25 16:34:58 -0700257 EXPECT_EQ("bartrack", out.app_track);
Darin Petkov10d02dd2011-01-10 14:57:39 -0800258 EXPECT_EQ("https://www.google.com", out.update_url);
259}
260
261TEST_F(OmahaRequestDeviceParamsTest, OverrideLockDownTest) {
262 ASSERT_TRUE(WriteFileString(
263 kTestDir + "/etc/lsb-release",
264 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
265 "CHROMEOS_RELEASE_FOO=bar\n"
266 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
267 "CHROMEOS_RELEASE_TRACK=footrack\n"
268 "CHROMEOS_AUSERVER=https://www.google.com"));
269 ASSERT_TRUE(WriteFileString(
270 kTestDir + utils::kStatefulPartition + "/etc/lsb-release",
271 "CHROMEOS_RELEASE_BOARD=x86-generic\n"
272 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
273 "CHROMEOS_AUSERVER=http://www.google.com"));
274 params_.SetLockDown(true);
275 OmahaRequestParams out;
276 EXPECT_TRUE(DoTest(&out, "", ""));
277 EXPECT_EQ("arm-generic", out.os_board);
278 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
279 EXPECT_EQ("0.2.2.3", out.app_version);
280 EXPECT_EQ("", out.hardware_class);
281 EXPECT_FALSE(out.delta_okay);
282 EXPECT_EQ("dev-channel", out.app_track);
283 EXPECT_EQ("https://www.google.com", out.update_url);
Darin Petkov49d91322010-10-25 16:34:58 -0700284}
285
Darin Petkova3df55b2010-11-15 13:33:55 -0800286TEST_F(OmahaRequestDeviceParamsTest, OverrideSameTrackTest) {
287 ASSERT_TRUE(WriteFileString(
288 kTestDir + "/etc/lsb-release",
289 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
290 "CHROMEOS_RELEASE_FOO=bar\n"
291 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
292 "CHROMEOS_RELEASE_TRACK=footrack\n"
293 "CHROMEOS_AUSERVER=http://www.google.com"));
294 ASSERT_TRUE(WriteFileString(
295 kTestDir + utils::kStatefulPartition + "/etc/lsb-release",
296 "CHROMEOS_RELEASE_BOARD=x86-generic\n"
297 "CHROMEOS_RELEASE_TRACK=footrack"));
298 OmahaRequestParams out;
299 EXPECT_TRUE(DoTest(&out, "", ""));
Darin Petkova3df55b2010-11-15 13:33:55 -0800300 EXPECT_EQ("x86-generic", out.os_board);
301 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
302 EXPECT_EQ("0.2.2.3", out.app_version);
Darin Petkova3df55b2010-11-15 13:33:55 -0800303 EXPECT_EQ("", out.hardware_class);
304 EXPECT_TRUE(out.delta_okay);
305 EXPECT_EQ("footrack", out.app_track);
306 EXPECT_EQ("http://www.google.com", out.update_url);
307}
308
Darin Petkov49d91322010-10-25 16:34:58 -0700309TEST_F(OmahaRequestDeviceParamsTest, SetTrackSimpleTest) {
310 ASSERT_TRUE(WriteFileString(
311 kTestDir + "/etc/lsb-release",
312 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
313 "CHROMEOS_RELEASE_FOO=bar\n"
314 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
315 "CHROMEOS_RELEASE_TRACK=footrack\n"
316 "CHROMEOS_AUSERVER=http://www.google.com"));
317 {
318 OmahaRequestDeviceParams params;
319 params.set_root(string("./") + kTestDir);
Darin Petkov10d02dd2011-01-10 14:57:39 -0800320 params.SetLockDown(false);
Patrick Dubroy7fbbe8a2011-08-01 17:28:22 +0200321 EXPECT_TRUE(params.Init("", "", ""));
Darin Petkov49d91322010-10-25 16:34:58 -0700322 params.SetTrack("zootrack");
323 }
324 OmahaRequestParams out;
325 EXPECT_TRUE(DoTest(&out, "", ""));
326 EXPECT_EQ("arm-generic", out.os_board);
327 EXPECT_EQ("zootrack", out.app_track);
328}
329
330TEST_F(OmahaRequestDeviceParamsTest, SetTrackPreserveTest) {
331 ASSERT_TRUE(WriteFileString(
332 kTestDir + "/etc/lsb-release",
333 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
334 "CHROMEOS_RELEASE_FOO=bar\n"
335 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
336 "CHROMEOS_RELEASE_TRACK=footrack\n"
337 "CHROMEOS_AUSERVER=http://www.google.com"));
338 ASSERT_TRUE(WriteFileString(
339 kTestDir + utils::kStatefulPartition + "/etc/lsb-release",
340 "CHROMEOS_RELEASE_BOARD=x86-generic\n"
341 "CHROMEOS_RELEASE_TRACK=bartrack"));
342 {
343 OmahaRequestDeviceParams params;
344 params.set_root(string("./") + kTestDir);
Darin Petkov10d02dd2011-01-10 14:57:39 -0800345 params.SetLockDown(false);
Patrick Dubroy7fbbe8a2011-08-01 17:28:22 +0200346 EXPECT_TRUE(params.Init("", "", ""));
Darin Petkov49d91322010-10-25 16:34:58 -0700347 params.SetTrack("zootrack");
348 }
349 OmahaRequestParams out;
350 EXPECT_TRUE(DoTest(&out, "", ""));
351 EXPECT_EQ("x86-generic", out.os_board);
352 EXPECT_EQ("zootrack", out.app_track);
353}
354
355TEST_F(OmahaRequestDeviceParamsTest, SetTrackInvalidTest) {
356 ASSERT_TRUE(WriteFileString(
357 kTestDir + "/etc/lsb-release",
358 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
359 "CHROMEOS_RELEASE_FOO=bar\n"
360 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
361 "CHROMEOS_RELEASE_TRACK=footrack\n"
362 "CHROMEOS_AUSERVER=http://www.google.com"));
363 {
364 OmahaRequestDeviceParams params;
365 params.set_root(string("./") + kTestDir);
Darin Petkov10d02dd2011-01-10 14:57:39 -0800366 params.SetLockDown(true);
Patrick Dubroy7fbbe8a2011-08-01 17:28:22 +0200367 EXPECT_TRUE(params.Init("", "", ""));
Darin Petkov49d91322010-10-25 16:34:58 -0700368 params.SetTrack("zootrack");
369 }
370 OmahaRequestParams out;
371 EXPECT_TRUE(DoTest(&out, "", ""));
372 EXPECT_EQ("arm-generic", out.os_board);
373 EXPECT_EQ("footrack", out.app_track);
374}
375
376TEST_F(OmahaRequestDeviceParamsTest, IsValidTrackTest) {
Darin Petkov10d02dd2011-01-10 14:57:39 -0800377 params_.SetLockDown(true);
Darin Petkov3f375c72010-11-05 09:42:26 -0700378 EXPECT_TRUE(params_.IsValidTrack("canary-channel"));
Andrew de los Reyesdc928762011-04-12 13:15:25 -0700379 EXPECT_TRUE(params_.IsValidTrack("stable-channel"));
Darin Petkov49d91322010-10-25 16:34:58 -0700380 EXPECT_TRUE(params_.IsValidTrack("beta-channel"));
381 EXPECT_TRUE(params_.IsValidTrack("dev-channel"));
Don Garrett0bf89602012-03-22 14:11:19 -0700382 EXPECT_TRUE(params_.IsValidTrack("dogfood-channel"));
Darin Petkov49d91322010-10-25 16:34:58 -0700383 EXPECT_FALSE(params_.IsValidTrack("some-channel"));
384 EXPECT_FALSE(params_.IsValidTrack(""));
Darin Petkov10d02dd2011-01-10 14:57:39 -0800385 params_.SetLockDown(false);
Darin Petkov3f375c72010-11-05 09:42:26 -0700386 EXPECT_TRUE(params_.IsValidTrack("canary-channel"));
Andrew de los Reyesdc928762011-04-12 13:15:25 -0700387 EXPECT_TRUE(params_.IsValidTrack("stable-channel"));
Darin Petkov49d91322010-10-25 16:34:58 -0700388 EXPECT_TRUE(params_.IsValidTrack("beta-channel"));
389 EXPECT_TRUE(params_.IsValidTrack("dev-channel"));
Don Garrett0bf89602012-03-22 14:11:19 -0700390 EXPECT_TRUE(params_.IsValidTrack("dogfood-channel"));
Darin Petkov49d91322010-10-25 16:34:58 -0700391 EXPECT_TRUE(params_.IsValidTrack("some-channel"));
392 EXPECT_TRUE(params_.IsValidTrack(""));
393}
394
Darin Petkov49d91322010-10-25 16:34:58 -0700395TEST_F(OmahaRequestDeviceParamsTest, ValidTrackTest) {
396 ASSERT_TRUE(WriteFileString(
397 kTestDir + "/etc/lsb-release",
398 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
399 "CHROMEOS_RELEASE_FOO=bar\n"
400 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
401 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
402 "CHROMEOS_AUSERVER=http://www.google.com"));
Darin Petkov10d02dd2011-01-10 14:57:39 -0800403 params_.SetLockDown(true);
Darin Petkov49d91322010-10-25 16:34:58 -0700404 OmahaRequestParams out;
405 EXPECT_TRUE(DoTest(&out, "", ""));
406 EXPECT_EQ("Chrome OS", out.os_platform);
407 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp);
408 EXPECT_EQ("arm-generic", out.os_board);
409 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
410 EXPECT_EQ("0.2.2.3", out.app_version);
411 EXPECT_EQ("en-US", out.app_lang);
412 EXPECT_EQ("", out.hardware_class);
413 EXPECT_TRUE(out.delta_okay);
414 EXPECT_EQ("dev-channel", out.app_track);
415 EXPECT_EQ("http://www.google.com", out.update_url);
416}
417
Patrick Dubroy7fbbe8a2011-08-01 17:28:22 +0200418TEST_F(OmahaRequestDeviceParamsTest, ChannelSpecified) {
419 ASSERT_TRUE(WriteFileString(
420 kTestDir + "/etc/lsb-release",
421 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
422 "CHROMEOS_RELEASE_FOO=bar\n"
423 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
424 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
425 "CHROMEOS_AUSERVER=http://www.google.com"));
426 params_.SetLockDown(true);
427 // Passed-in value for release channel should be used.
428 params_.Init("", "", "beta-channel");
429 EXPECT_EQ("beta-channel", params_.app_track);
430
431 // When passed-in value is invalid, value from lsb-release should be used.
432 params_.Init("", "", "foo-channel");
433 EXPECT_EQ("dev-channel", params_.app_track);
434
435 // When passed-in value is empty, value from lsb-release should be used.
436 params_.Init("", "", "");
437 EXPECT_EQ("dev-channel", params_.app_track);
438}
439
Darin Petkov10d02dd2011-01-10 14:57:39 -0800440TEST_F(OmahaRequestDeviceParamsTest, ShouldLockDownTest) {
441 EXPECT_FALSE(params_.ShouldLockDown());
442}
443
adlr@google.com3defe6a2009-12-04 20:57:17 +0000444} // namespace chromeos_update_engine