blob: 8f2d7c8dddebc5a04eec7dd06b98b05611bad6eb [file] [log] [blame]
Darin Petkova4a8a8c2010-07-15 22:21:12 -07001// Copyright (c) 2010 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) {
Darin Petkov49d91322010-10-25 16:34:58 -070050 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() {
58 FILE* fp = popen("uname -m", "r");
59 if (!fp)
60 return "";
61 string ret;
62 for (;;) {
63 char buffer[10];
64 size_t r = fread(buffer, 1, sizeof(buffer), fp);
65 if (r == 0)
66 break;
67 ret.insert(ret.begin(), buffer, buffer + r);
68 }
69 // strip trailing '\n' if it exists
70 if ((*ret.rbegin()) == '\n')
71 ret.resize(ret.size() - 1);
72 fclose(fp);
73 return ret;
74}
75} // namespace {}
76
Darin Petkova4a8a8c2010-07-15 22:21:12 -070077TEST_F(OmahaRequestDeviceParamsTest, SimpleTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -070078 ASSERT_TRUE(WriteFileString(
79 kTestDir + "/etc/lsb-release",
80 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
81 "CHROMEOS_RELEASE_FOO=bar\n"
82 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
83 "CHROMEOS_RELEASE_TRACK=footrack\n"
84 "CHROMEOS_AUSERVER=http://www.google.com"));
85 OmahaRequestParams out;
86 EXPECT_TRUE(DoTest(&out, "", ""));
Darin Petkov5a7f5652010-07-22 21:40:09 -070087 EXPECT_EQ("Chrome OS", out.os_platform);
88 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp);
89 EXPECT_EQ("arm-generic", out.os_board);
90 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
91 EXPECT_EQ("0.2.2.3", out.app_version);
92 EXPECT_EQ("en-US", out.app_lang);
Darin Petkovfbb40092010-07-29 17:05:50 -070093 EXPECT_EQ("", out.hardware_class);
Darin Petkov5a7f5652010-07-22 21:40:09 -070094 EXPECT_TRUE(out.delta_okay);
95 EXPECT_EQ("footrack", out.app_track);
96 EXPECT_EQ("http://www.google.com", out.update_url);
adlr@google.com3defe6a2009-12-04 20:57:17 +000097}
98
Darin Petkovd315dc72010-11-15 09:52:24 -080099TEST_F(OmahaRequestDeviceParamsTest, AppIDTest) {
100 ASSERT_TRUE(WriteFileString(
101 kTestDir + "/etc/lsb-release",
102 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
103 "CHROMEOS_RELEASE_FOO=bar\n"
104 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
105 "CHROMEOS_RELEASE_TRACK=footrack\n"
106 "CHROMEOS_RELEASE_APPID={58c35cef-9d30-476e-9098-ce20377d535d}\n"
107 "CHROMEOS_AUSERVER=http://www.google.com"));
108 OmahaRequestParams out;
109 EXPECT_TRUE(DoTest(&out, "", ""));
110 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);
113 EXPECT_EQ("{58c35cef-9d30-476e-9098-ce20377d535d}", out.app_id);
114 EXPECT_EQ("0.2.2.3", out.app_version);
115 EXPECT_EQ("en-US", out.app_lang);
116 EXPECT_EQ("", out.hardware_class);
117 EXPECT_TRUE(out.delta_okay);
118 EXPECT_EQ("footrack", out.app_track);
119 EXPECT_EQ("http://www.google.com", out.update_url);
120}
121
Darin Petkova4a8a8c2010-07-15 22:21:12 -0700122TEST_F(OmahaRequestDeviceParamsTest, MissingTrackTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700123 ASSERT_TRUE(WriteFileString(
124 kTestDir + "/etc/lsb-release",
125 "CHROMEOS_RELEASE_FOO=bar\n"
126 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
127 "CHROMEOS_RELEASE_TRXCK=footrack"));
128 OmahaRequestParams out;
129 EXPECT_TRUE(DoTest(&out, "", ""));
Darin Petkov5a7f5652010-07-22 21:40:09 -0700130 EXPECT_EQ("Chrome OS", out.os_platform);
131 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp);
132 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
133 EXPECT_EQ("0.2.2.3", out.app_version);
134 EXPECT_EQ("en-US", out.app_lang);
135 EXPECT_EQ("", out.app_track);
adlr@google.com3defe6a2009-12-04 20:57:17 +0000136}
137
Darin Petkova4a8a8c2010-07-15 22:21:12 -0700138TEST_F(OmahaRequestDeviceParamsTest, ConfusingReleaseTest) {
Darin Petkov5a7f5652010-07-22 21:40:09 -0700139 ASSERT_TRUE(WriteFileString(
140 kTestDir + "/etc/lsb-release",
141 "CHROMEOS_RELEASE_FOO=CHROMEOS_RELEASE_VERSION=1.2.3.4\n"
142 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
143 "CHROMEOS_RELEASE_TRXCK=footrack"));
144 OmahaRequestParams out;
145 EXPECT_TRUE(DoTest(&out, "", ""));
Darin Petkov5a7f5652010-07-22 21:40:09 -0700146 EXPECT_EQ("Chrome OS", out.os_platform);
147 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp);
148 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
149 EXPECT_EQ("0.2.2.3", out.app_version);
150 EXPECT_EQ("en-US", out.app_lang);
151 EXPECT_EQ("", out.app_track);
adlr@google.com3defe6a2009-12-04 20:57:17 +0000152}
153
Darin Petkov5a7f5652010-07-22 21:40:09 -0700154TEST_F(OmahaRequestDeviceParamsTest, MissingVersionTest) {
155 ASSERT_TRUE(WriteFileString(
156 kTestDir + "/etc/lsb-release",
157 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
158 "CHROMEOS_RELEASE_FOO=bar\n"
159 "CHROMEOS_RELEASE_TRACK=footrack"));
160 OmahaRequestParams out;
161 EXPECT_TRUE(DoTest(&out, "", ""));
Darin Petkov5a7f5652010-07-22 21:40:09 -0700162 EXPECT_EQ("Chrome OS", out.os_platform);
163 EXPECT_EQ(string("_") + GetMachineType(), out.os_sp);
164 EXPECT_EQ("arm-generic", out.os_board);
165 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
166 EXPECT_EQ("", out.app_version);
167 EXPECT_EQ("en-US", out.app_lang);
168 EXPECT_TRUE(out.delta_okay);
169 EXPECT_EQ("footrack", out.app_track);
170}
171
172TEST_F(OmahaRequestDeviceParamsTest, ForceVersionTest) {
173 ASSERT_TRUE(WriteFileString(
174 kTestDir + "/etc/lsb-release",
175 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
176 "CHROMEOS_RELEASE_FOO=bar\n"
177 "CHROMEOS_RELEASE_TRACK=footrack"));
178 OmahaRequestParams out;
179 EXPECT_TRUE(DoTest(&out, "ForcedVersion", ""));
Darin Petkov5a7f5652010-07-22 21:40:09 -0700180 EXPECT_EQ("Chrome OS", out.os_platform);
181 EXPECT_EQ(string("ForcedVersion_") + GetMachineType(), out.os_sp);
182 EXPECT_EQ("arm-generic", out.os_board);
183 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
184 EXPECT_EQ("ForcedVersion", out.app_version);
185 EXPECT_EQ("en-US", out.app_lang);
186 EXPECT_TRUE(out.delta_okay);
187 EXPECT_EQ("footrack", out.app_track);
188}
189
190TEST_F(OmahaRequestDeviceParamsTest, ForcedURLTest) {
191 ASSERT_TRUE(WriteFileString(
192 kTestDir + "/etc/lsb-release",
193 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
194 "CHROMEOS_RELEASE_FOO=bar\n"
195 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
196 "CHROMEOS_RELEASE_TRACK=footrack"));
197 OmahaRequestParams out;
198 EXPECT_TRUE(DoTest(&out, "", "http://forced.google.com"));
Darin Petkov5a7f5652010-07-22 21:40:09 -0700199 EXPECT_EQ("Chrome OS", out.os_platform);
200 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp);
201 EXPECT_EQ("arm-generic", out.os_board);
202 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
203 EXPECT_EQ("0.2.2.3", out.app_version);
204 EXPECT_EQ("en-US", out.app_lang);
205 EXPECT_TRUE(out.delta_okay);
206 EXPECT_EQ("footrack", out.app_track);
207 EXPECT_EQ("http://forced.google.com", out.update_url);
208}
209
210TEST_F(OmahaRequestDeviceParamsTest, MissingURLTest) {
211 ASSERT_TRUE(WriteFileString(
212 kTestDir + "/etc/lsb-release",
213 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
214 "CHROMEOS_RELEASE_FOO=bar\n"
215 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
216 "CHROMEOS_RELEASE_TRACK=footrack"));
217 OmahaRequestParams out;
218 EXPECT_TRUE(DoTest(&out, "", ""));
Darin Petkov5a7f5652010-07-22 21:40:09 -0700219 EXPECT_EQ("Chrome OS", out.os_platform);
220 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp);
221 EXPECT_EQ("arm-generic", out.os_board);
222 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
223 EXPECT_EQ("0.2.2.3", out.app_version);
224 EXPECT_EQ("en-US", out.app_lang);
225 EXPECT_TRUE(out.delta_okay);
226 EXPECT_EQ("footrack", out.app_track);
227 EXPECT_EQ(OmahaRequestParams::kUpdateUrl, out.update_url);
Andrew de los Reyes970bb282009-12-09 16:34:04 -0800228}
229
Andrew de los Reyes3f0303a2010-07-15 22:35:35 -0700230TEST_F(OmahaRequestDeviceParamsTest, NoDeltasTest) {
Andrew de los Reyes3f0303a2010-07-15 22:35:35 -0700231 ASSERT_TRUE(WriteFileString(
232 kTestDir + "/etc/lsb-release",
233 "CHROMEOS_RELEASE_FOO=CHROMEOS_RELEASE_VERSION=1.2.3.4\n"
234 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
235 "CHROMEOS_RELEASE_TRXCK=footrack"));
236 ASSERT_TRUE(WriteFileString(kTestDir + "/.nodelta", ""));
237 OmahaRequestParams out;
Darin Petkov5a7f5652010-07-22 21:40:09 -0700238 EXPECT_TRUE(DoTest(&out, "", ""));
Andrew de los Reyes3f0303a2010-07-15 22:35:35 -0700239 EXPECT_FALSE(out.delta_okay);
Andrew de los Reyes3f0303a2010-07-15 22:35:35 -0700240}
241
Darin Petkovfbb40092010-07-29 17:05:50 -0700242TEST_F(OmahaRequestDeviceParamsTest, HardwareClassTest) {
243 string test_class = " \t sample hardware class \n ";
244 FilePath hwid_path(kTestDir + "/sys/devices/platform/chromeos_acpi/HWID");
245 ASSERT_TRUE(file_util::CreateDirectory(hwid_path.DirName()));
246 ASSERT_EQ(test_class.size(),
247 file_util::WriteFile(hwid_path,
248 test_class.data(),
249 test_class.size()));
250 OmahaRequestParams out;
251 EXPECT_TRUE(DoTest(&out, "", ""));
252 EXPECT_EQ("sample hardware class", out.hardware_class);
253}
254
Darin Petkov49d91322010-10-25 16:34:58 -0700255TEST_F(OmahaRequestDeviceParamsTest, OverrideTest) {
256 ASSERT_TRUE(WriteFileString(
257 kTestDir + "/etc/lsb-release",
258 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
259 "CHROMEOS_RELEASE_FOO=bar\n"
260 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
261 "CHROMEOS_RELEASE_TRACK=footrack\n"
262 "CHROMEOS_AUSERVER=http://www.google.com"));
263 ASSERT_TRUE(WriteFileString(
264 kTestDir + utils::kStatefulPartition + "/etc/lsb-release",
265 "CHROMEOS_RELEASE_BOARD=x86-generic\n"
266 "CHROMEOS_RELEASE_TRACK=bartrack\n"
Darin Petkov10d02dd2011-01-10 14:57:39 -0800267 "CHROMEOS_AUSERVER=https://www.google.com"));
Darin Petkov49d91322010-10-25 16:34:58 -0700268 OmahaRequestParams out;
269 EXPECT_TRUE(DoTest(&out, "", ""));
270 EXPECT_EQ("Chrome OS", out.os_platform);
271 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp);
272 EXPECT_EQ("x86-generic", out.os_board);
273 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
274 EXPECT_EQ("0.2.2.3", out.app_version);
275 EXPECT_EQ("en-US", out.app_lang);
276 EXPECT_EQ("", out.hardware_class);
Darin Petkova3df55b2010-11-15 13:33:55 -0800277 EXPECT_FALSE(out.delta_okay);
Darin Petkov49d91322010-10-25 16:34:58 -0700278 EXPECT_EQ("bartrack", out.app_track);
Darin Petkov10d02dd2011-01-10 14:57:39 -0800279 EXPECT_EQ("https://www.google.com", out.update_url);
280}
281
282TEST_F(OmahaRequestDeviceParamsTest, OverrideLockDownTest) {
283 ASSERT_TRUE(WriteFileString(
284 kTestDir + "/etc/lsb-release",
285 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
286 "CHROMEOS_RELEASE_FOO=bar\n"
287 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
288 "CHROMEOS_RELEASE_TRACK=footrack\n"
289 "CHROMEOS_AUSERVER=https://www.google.com"));
290 ASSERT_TRUE(WriteFileString(
291 kTestDir + utils::kStatefulPartition + "/etc/lsb-release",
292 "CHROMEOS_RELEASE_BOARD=x86-generic\n"
293 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
294 "CHROMEOS_AUSERVER=http://www.google.com"));
295 params_.SetLockDown(true);
296 OmahaRequestParams out;
297 EXPECT_TRUE(DoTest(&out, "", ""));
298 EXPECT_EQ("arm-generic", out.os_board);
299 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
300 EXPECT_EQ("0.2.2.3", out.app_version);
301 EXPECT_EQ("", out.hardware_class);
302 EXPECT_FALSE(out.delta_okay);
303 EXPECT_EQ("dev-channel", out.app_track);
304 EXPECT_EQ("https://www.google.com", out.update_url);
Darin Petkov49d91322010-10-25 16:34:58 -0700305}
306
Darin Petkova3df55b2010-11-15 13:33:55 -0800307TEST_F(OmahaRequestDeviceParamsTest, OverrideSameTrackTest) {
308 ASSERT_TRUE(WriteFileString(
309 kTestDir + "/etc/lsb-release",
310 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
311 "CHROMEOS_RELEASE_FOO=bar\n"
312 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
313 "CHROMEOS_RELEASE_TRACK=footrack\n"
314 "CHROMEOS_AUSERVER=http://www.google.com"));
315 ASSERT_TRUE(WriteFileString(
316 kTestDir + utils::kStatefulPartition + "/etc/lsb-release",
317 "CHROMEOS_RELEASE_BOARD=x86-generic\n"
318 "CHROMEOS_RELEASE_TRACK=footrack"));
319 OmahaRequestParams out;
320 EXPECT_TRUE(DoTest(&out, "", ""));
Darin Petkova3df55b2010-11-15 13:33:55 -0800321 EXPECT_EQ("x86-generic", out.os_board);
322 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
323 EXPECT_EQ("0.2.2.3", out.app_version);
Darin Petkova3df55b2010-11-15 13:33:55 -0800324 EXPECT_EQ("", out.hardware_class);
325 EXPECT_TRUE(out.delta_okay);
326 EXPECT_EQ("footrack", out.app_track);
327 EXPECT_EQ("http://www.google.com", out.update_url);
328}
329
Darin Petkov49d91322010-10-25 16:34:58 -0700330TEST_F(OmahaRequestDeviceParamsTest, SetTrackSimpleTest) {
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 {
339 OmahaRequestDeviceParams params;
340 params.set_root(string("./") + kTestDir);
Darin Petkov10d02dd2011-01-10 14:57:39 -0800341 params.SetLockDown(false);
Darin Petkov49d91322010-10-25 16:34:58 -0700342 EXPECT_TRUE(params.Init("", ""));
343 params.SetTrack("zootrack");
344 }
345 OmahaRequestParams out;
346 EXPECT_TRUE(DoTest(&out, "", ""));
347 EXPECT_EQ("arm-generic", out.os_board);
348 EXPECT_EQ("zootrack", out.app_track);
349}
350
351TEST_F(OmahaRequestDeviceParamsTest, SetTrackPreserveTest) {
352 ASSERT_TRUE(WriteFileString(
353 kTestDir + "/etc/lsb-release",
354 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
355 "CHROMEOS_RELEASE_FOO=bar\n"
356 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
357 "CHROMEOS_RELEASE_TRACK=footrack\n"
358 "CHROMEOS_AUSERVER=http://www.google.com"));
359 ASSERT_TRUE(WriteFileString(
360 kTestDir + utils::kStatefulPartition + "/etc/lsb-release",
361 "CHROMEOS_RELEASE_BOARD=x86-generic\n"
362 "CHROMEOS_RELEASE_TRACK=bartrack"));
363 {
364 OmahaRequestDeviceParams params;
365 params.set_root(string("./") + kTestDir);
Darin Petkov10d02dd2011-01-10 14:57:39 -0800366 params.SetLockDown(false);
Darin Petkov49d91322010-10-25 16:34:58 -0700367 EXPECT_TRUE(params.Init("", ""));
368 params.SetTrack("zootrack");
369 }
370 OmahaRequestParams out;
371 EXPECT_TRUE(DoTest(&out, "", ""));
372 EXPECT_EQ("x86-generic", out.os_board);
373 EXPECT_EQ("zootrack", out.app_track);
374}
375
376TEST_F(OmahaRequestDeviceParamsTest, SetTrackInvalidTest) {
377 ASSERT_TRUE(WriteFileString(
378 kTestDir + "/etc/lsb-release",
379 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
380 "CHROMEOS_RELEASE_FOO=bar\n"
381 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
382 "CHROMEOS_RELEASE_TRACK=footrack\n"
383 "CHROMEOS_AUSERVER=http://www.google.com"));
384 {
385 OmahaRequestDeviceParams params;
386 params.set_root(string("./") + kTestDir);
Darin Petkov10d02dd2011-01-10 14:57:39 -0800387 params.SetLockDown(true);
Darin Petkov49d91322010-10-25 16:34:58 -0700388 EXPECT_TRUE(params.Init("", ""));
389 params.SetTrack("zootrack");
390 }
391 OmahaRequestParams out;
392 EXPECT_TRUE(DoTest(&out, "", ""));
393 EXPECT_EQ("arm-generic", out.os_board);
394 EXPECT_EQ("footrack", out.app_track);
395}
396
397TEST_F(OmahaRequestDeviceParamsTest, IsValidTrackTest) {
Darin Petkov10d02dd2011-01-10 14:57:39 -0800398 params_.SetLockDown(true);
Darin Petkov3f375c72010-11-05 09:42:26 -0700399 EXPECT_TRUE(params_.IsValidTrack("canary-channel"));
Darin Petkov49d91322010-10-25 16:34:58 -0700400 EXPECT_TRUE(params_.IsValidTrack("beta-channel"));
401 EXPECT_TRUE(params_.IsValidTrack("dev-channel"));
402 EXPECT_FALSE(params_.IsValidTrack("some-channel"));
403 EXPECT_FALSE(params_.IsValidTrack(""));
Darin Petkov10d02dd2011-01-10 14:57:39 -0800404 params_.SetLockDown(false);
Darin Petkov3f375c72010-11-05 09:42:26 -0700405 EXPECT_TRUE(params_.IsValidTrack("canary-channel"));
Darin Petkov49d91322010-10-25 16:34:58 -0700406 EXPECT_TRUE(params_.IsValidTrack("beta-channel"));
407 EXPECT_TRUE(params_.IsValidTrack("dev-channel"));
408 EXPECT_TRUE(params_.IsValidTrack("some-channel"));
409 EXPECT_TRUE(params_.IsValidTrack(""));
410}
411
Darin Petkov49d91322010-10-25 16:34:58 -0700412TEST_F(OmahaRequestDeviceParamsTest, ValidTrackTest) {
413 ASSERT_TRUE(WriteFileString(
414 kTestDir + "/etc/lsb-release",
415 "CHROMEOS_RELEASE_BOARD=arm-generic\n"
416 "CHROMEOS_RELEASE_FOO=bar\n"
417 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
418 "CHROMEOS_RELEASE_TRACK=dev-channel\n"
419 "CHROMEOS_AUSERVER=http://www.google.com"));
Darin Petkov10d02dd2011-01-10 14:57:39 -0800420 params_.SetLockDown(true);
Darin Petkov49d91322010-10-25 16:34:58 -0700421 OmahaRequestParams out;
422 EXPECT_TRUE(DoTest(&out, "", ""));
423 EXPECT_EQ("Chrome OS", out.os_platform);
424 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp);
425 EXPECT_EQ("arm-generic", out.os_board);
426 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
427 EXPECT_EQ("0.2.2.3", out.app_version);
428 EXPECT_EQ("en-US", out.app_lang);
429 EXPECT_EQ("", out.hardware_class);
430 EXPECT_TRUE(out.delta_okay);
431 EXPECT_EQ("dev-channel", out.app_track);
432 EXPECT_EQ("http://www.google.com", out.update_url);
433}
434
Darin Petkov10d02dd2011-01-10 14:57:39 -0800435TEST_F(OmahaRequestDeviceParamsTest, ShouldLockDownTest) {
436 EXPECT_FALSE(params_.ShouldLockDown());
437}
438
adlr@google.com3defe6a2009-12-04 20:57:17 +0000439} // namespace chromeos_update_engine