omaha_request_params_unittest.cc revision 8427b4a6d0e6e02beedbb53798272f8ddc39386f
1f2065b4d77be793fe0a5b4280fe23433cbecaa1bDarin Petkov// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
23defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com// Use of this source code is governed by a BSD-style license that can be
33defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com// found in the LICENSE file.
43defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
58427b4a6d0e6e02beedbb53798272f8ddc39386fAlex Deymo#include "update_engine/omaha_request_params.h"
68427b4a6d0e6e02beedbb53798272f8ddc39386fAlex Deymo
73defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com#include <stdio.h>
8fbb40098314ab45efa60667ad7ccae354c4f18daDarin Petkov
93defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com#include <string>
10fbb40098314ab45efa60667ad7ccae354c4f18daDarin Petkov
118427b4a6d0e6e02beedbb53798272f8ddc39386fAlex Deymo#include <base/files/file_util.h>
128427b4a6d0e6e02beedbb53798272f8ddc39386fAlex Deymo#include <gtest/gtest.h>
138427b4a6d0e6e02beedbb53798272f8ddc39386fAlex Deymo
14be45bef9e283188b00e7def8967f81843669a7f1Chris Sosa#include "update_engine/constants.h"
155bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold#include "update_engine/fake_system_state.h"
163defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com#include "update_engine/install_plan.h"
173defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com#include "update_engine/test_utils.h"
183defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com#include "update_engine/utils.h"
193defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
203defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.comusing std::string;
213defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
223defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.comnamespace chromeos_update_engine {
233defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
24ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasanclass OmahaRequestParamsTest : public ::testing::Test {
25ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan public:
265bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParamsTest() : params_(&fake_system_state_) {}
27ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan
285a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov protected:
29ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  // Return true iff the OmahaRequestParams::Init succeeded. If
3088b591f24cb3f94f982d7024c2e8ed25c2cc26a2Alex Vakulenko  // out is non-null, it's set w/ the generated data.
315a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  bool DoTest(OmahaRequestParams* out, const string& app_version,
325a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov              const string& omaha_url);
335a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov
345a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  virtual void SetUp() {
35c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold    // Create a uniquely named test directory.
36c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold    ASSERT_TRUE(utils::MakeTempDirectory(kTestDirTemplate,
37c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold                                         &test_dir_));
38c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold
39c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold    ASSERT_EQ(0, System(string("mkdir -p ") + test_dir_ + "/etc"));
40c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold    ASSERT_EQ(0, System(string("mkdir -p ") + test_dir_ +
41be45bef9e283188b00e7def8967f81843669a7f1Chris Sosa                        kStatefulPartition + "/etc"));
42ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan    // Create a fresh copy of the params for each test, so there's no
43ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan    // unintended reuse of state across tests.
445bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold    OmahaRequestParams new_params(&fake_system_state_);
45ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan    params_ = new_params;
46d04f8e24716d5acca6a7d116b63851adc1506845Gilad Arnold    params_.set_root(test_dir_);
4710d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov    params_.SetLockDown(false);
485a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  }
495a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov
505a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  virtual void TearDown() {
51c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold    EXPECT_EQ(0, System(string("rm -rf ") + test_dir_));
525a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  }
535a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov
54ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  OmahaRequestParams params_;
555bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  FakeSystemState fake_system_state_;
5649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov
57c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold  static const char* kTestDirTemplate;
58c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold  string test_dir_;
593defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com};
603defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
61c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnoldconst char* OmahaRequestParamsTest::kTestDirTemplate =
62c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold  "omaha_request_params-test-XXXXXX";
633defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
64ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasanbool OmahaRequestParamsTest::DoTest(OmahaRequestParams* out,
65ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan                                    const string& app_version,
66ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan                                    const string& omaha_url) {
67ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  bool success = params_.Init(app_version, omaha_url, false);
683defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com  if (out)
6949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov    *out = params_;
70a4a8a8ccc2d9e0285728ed247b43f09433e63323Darin Petkov  return success;
713defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com}
723defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
733defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.comnamespace {
743defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.comstring GetMachineType() {
7519a45f0eda0917b7788b925b501e774208474fdeGilad Arnold  string machine_type;
7619a45f0eda0917b7788b925b501e774208474fdeGilad Arnold  if (!utils::ReadPipe("uname -m", &machine_type))
773defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com    return "";
7819a45f0eda0917b7788b925b501e774208474fdeGilad Arnold  // Strip anything from the first newline char.
7919a45f0eda0917b7788b925b501e774208474fdeGilad Arnold  size_t newline_pos = machine_type.find('\n');
8019a45f0eda0917b7788b925b501e774208474fdeGilad Arnold  if (newline_pos != string::npos)
8119a45f0eda0917b7788b925b501e774208474fdeGilad Arnold    machine_type.erase(newline_pos);
8219a45f0eda0917b7788b925b501e774208474fdeGilad Arnold  return machine_type;
833defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com}
84d2779df63aaad8b65fc5d4badee7dbc9bed7f2b6Alex Vakulenko}  // namespace
853defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
86ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, SimpleTest) {
875a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  ASSERT_TRUE(WriteFileString(
88c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
895a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
905a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
915a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
92ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel\n"
935a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
945bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
955a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
96ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("Chrome OS", out.os_platform());
97ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
98ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("arm-generic", out.os_board());
99db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
100ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("0.2.2.3", out.app_version());
101ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("en-US", out.app_lang());
1025bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
103ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(out.delta_okay());
104ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("dev-channel", out.target_channel());
105ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("http://www.google.com", out.update_url());
1063defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com}
1073defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
108ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, AppIDTest) {
109d315dc7f336ceff8c1648ccd1a199ebb8c0a5a84Darin Petkov  ASSERT_TRUE(WriteFileString(
110c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
111d315dc7f336ceff8c1648ccd1a199ebb8c0a5a84Darin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
112d315dc7f336ceff8c1648ccd1a199ebb8c0a5a84Darin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
113d315dc7f336ceff8c1648ccd1a199ebb8c0a5a84Darin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
114ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel\n"
115d315dc7f336ceff8c1648ccd1a199ebb8c0a5a84Darin Petkov      "CHROMEOS_RELEASE_APPID={58c35cef-9d30-476e-9098-ce20377d535d}\n"
116d315dc7f336ceff8c1648ccd1a199ebb8c0a5a84Darin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
1175bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
118d315dc7f336ceff8c1648ccd1a199ebb8c0a5a84Darin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
119ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("Chrome OS", out.os_platform());
120ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
121ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("arm-generic", out.os_board());
122db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("{58c35cef-9d30-476e-9098-ce20377d535d}", out.GetAppId());
123ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("0.2.2.3", out.app_version());
124ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("en-US", out.app_lang());
1255bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
126ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(out.delta_okay());
127ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("dev-channel", out.target_channel());
128ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("http://www.google.com", out.update_url());
129d315dc7f336ceff8c1648ccd1a199ebb8c0a5a84Darin Petkov}
130d315dc7f336ceff8c1648ccd1a199ebb8c0a5a84Darin Petkov
131ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, MissingChannelTest) {
1325a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  ASSERT_TRUE(WriteFileString(
133c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
1345a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
1355a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
136ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRXCK=dev-channel"));
1375bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
1385a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
139ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("Chrome OS", out.os_platform());
140ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
141db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
142ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("0.2.2.3", out.app_version());
143ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("en-US", out.app_lang());
144ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("", out.target_channel());
1453defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com}
1463defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
147ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, ConfusingReleaseTest) {
1485a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  ASSERT_TRUE(WriteFileString(
149c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
1505a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_FOO=CHROMEOS_RELEASE_VERSION=1.2.3.4\n"
1515a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
152ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRXCK=dev-channel"));
1535bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
1545a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
155ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("Chrome OS", out.os_platform());
156ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
157db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
158ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("0.2.2.3", out.app_version());
159ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("en-US", out.app_lang());
160ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("", out.target_channel());
1613defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com}
1623defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
163ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, MissingVersionTest) {
1645a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  ASSERT_TRUE(WriteFileString(
165c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
1665a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
1675a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
168ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel"));
1695bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
1705a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
171ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("Chrome OS", out.os_platform());
172ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(string("_") + GetMachineType(), out.os_sp());
173ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("arm-generic", out.os_board());
174db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
175ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("", out.app_version());
176ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("en-US", out.app_lang());
177ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(out.delta_okay());
178ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("dev-channel", out.target_channel());
1795a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov}
1805a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov
181ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, ForceVersionTest) {
1825a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  ASSERT_TRUE(WriteFileString(
183c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
1845a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
1855a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
186ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel"));
1875bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
1885a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(DoTest(&out, "ForcedVersion", ""));
189ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("Chrome OS", out.os_platform());
190ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(string("ForcedVersion_") + GetMachineType(), out.os_sp());
191ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("arm-generic", out.os_board());
192db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
193ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("ForcedVersion", out.app_version());
194ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("en-US", out.app_lang());
195ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(out.delta_okay());
196ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("dev-channel", out.target_channel());
1975a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov}
1985a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov
199ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, ForcedURLTest) {
2005a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  ASSERT_TRUE(WriteFileString(
201c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
2025a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
2035a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
2045a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
205ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel"));
2065bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
2075a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(DoTest(&out, "", "http://forced.google.com"));
208ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("Chrome OS", out.os_platform());
209ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
210ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("arm-generic", out.os_board());
211db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
212ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("0.2.2.3", out.app_version());
213ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("en-US", out.app_lang());
214ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(out.delta_okay());
215ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("dev-channel", out.target_channel());
216ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("http://forced.google.com", out.update_url());
2175a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov}
2185a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov
219ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, MissingURLTest) {
2205a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  ASSERT_TRUE(WriteFileString(
221c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
2225a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
2235a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
2245a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
225ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel"));
2265bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
2275a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
228ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("Chrome OS", out.os_platform());
229ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
230ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("arm-generic", out.os_board());
231db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
232ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("0.2.2.3", out.app_version());
233ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("en-US", out.app_lang());
234ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(out.delta_okay());
235ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("dev-channel", out.target_channel());
236ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(kProductionOmahaUrl, out.update_url());
237970bb28905b44bf9f2cb986bb412ecda1095b0b1Andrew de los Reyes}
238970bb28905b44bf9f2cb986bb412ecda1095b0b1Andrew de los Reyes
239ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, NoDeltasTest) {
2403f0303aa211e2de2d466cef063ff6f39fffe32ddAndrew de los Reyes  ASSERT_TRUE(WriteFileString(
241c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
2423f0303aa211e2de2d466cef063ff6f39fffe32ddAndrew de los Reyes      "CHROMEOS_RELEASE_FOO=CHROMEOS_RELEASE_VERSION=1.2.3.4\n"
2433f0303aa211e2de2d466cef063ff6f39fffe32ddAndrew de los Reyes      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
244ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRXCK=dev-channel"));
245c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold  ASSERT_TRUE(WriteFileString(test_dir_ + "/.nodelta", ""));
2465bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
2475a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
248ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_FALSE(out.delta_okay());
2493f0303aa211e2de2d466cef063ff6f39fffe32ddAndrew de los Reyes}
2503f0303aa211e2de2d466cef063ff6f39fffe32ddAndrew de los Reyes
251ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, OverrideTest) {
25249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  ASSERT_TRUE(WriteFileString(
253c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
25449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
25549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
25649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
257ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel\n"
25849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
25949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  ASSERT_TRUE(WriteFileString(
260c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + kStatefulPartition + "/etc/lsb-release",
26149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_BOARD=x86-generic\n"
262ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=beta-channel\n"
26310d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov      "CHROMEOS_AUSERVER=https://www.google.com"));
2645bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
26549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
266ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("Chrome OS", out.os_platform());
267ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
268ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("x86-generic", out.os_board());
269db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
270ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("0.2.2.3", out.app_version());
271ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("en-US", out.app_lang());
2725bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
273ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_FALSE(out.delta_okay());
274ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("beta-channel", out.target_channel());
275ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("https://www.google.com", out.update_url());
27610d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov}
27710d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov
278ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, OverrideLockDownTest) {
27910d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov  ASSERT_TRUE(WriteFileString(
280c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
28110d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
28210d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
28310d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
284ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel\n"
28510d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov      "CHROMEOS_AUSERVER=https://www.google.com"));
28610d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov  ASSERT_TRUE(WriteFileString(
287c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + kStatefulPartition + "/etc/lsb-release",
28810d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov      "CHROMEOS_RELEASE_BOARD=x86-generic\n"
289ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=stable-channel\n"
29010d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
29110d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov  params_.SetLockDown(true);
2925bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
29310d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
294ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("arm-generic", out.os_board());
295db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
296ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("0.2.2.3", out.app_version());
2975bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
298ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_FALSE(out.delta_okay());
299ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("stable-channel", out.target_channel());
300ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("https://www.google.com", out.update_url());
30149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov}
30249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov
303ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, OverrideSameChannelTest) {
304a3df55badfc7dc25792aba1ca6e7ade582b566a7Darin Petkov  ASSERT_TRUE(WriteFileString(
305c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
306a3df55badfc7dc25792aba1ca6e7ade582b566a7Darin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
307a3df55badfc7dc25792aba1ca6e7ade582b566a7Darin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
308a3df55badfc7dc25792aba1ca6e7ade582b566a7Darin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
309ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel\n"
310a3df55badfc7dc25792aba1ca6e7ade582b566a7Darin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
311a3df55badfc7dc25792aba1ca6e7ade582b566a7Darin Petkov  ASSERT_TRUE(WriteFileString(
312c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + kStatefulPartition + "/etc/lsb-release",
313a3df55badfc7dc25792aba1ca6e7ade582b566a7Darin Petkov      "CHROMEOS_RELEASE_BOARD=x86-generic\n"
314ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel"));
3155bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
316a3df55badfc7dc25792aba1ca6e7ade582b566a7Darin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
317ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("x86-generic", out.os_board());
318db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
319ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("0.2.2.3", out.app_version());
3205bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
321ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(out.delta_okay());
322ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("dev-channel", out.target_channel());
323ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("http://www.google.com", out.update_url());
324a3df55badfc7dc25792aba1ca6e7ade582b566a7Darin Petkov}
325a3df55badfc7dc25792aba1ca6e7ade582b566a7Darin Petkov
326ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, SetTargetChannelTest) {
32749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  ASSERT_TRUE(WriteFileString(
328c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
32949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
33049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
33149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
332ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel\n"
33349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
33449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  {
3355bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold    OmahaRequestParams params(&fake_system_state_);
336d04f8e24716d5acca6a7d116b63851adc1506845Gilad Arnold    params.set_root(test_dir_);
33710d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov    params.SetLockDown(false);
338ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan    EXPECT_TRUE(params.Init("", "", false));
339ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan    params.SetTargetChannel("canary-channel", false);
340ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan    EXPECT_FALSE(params.is_powerwash_allowed());
34149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  }
3425bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
34349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
344ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("canary-channel", out.target_channel());
345ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_FALSE(out.is_powerwash_allowed());
34649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov}
34749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov
348ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, SetIsPowerwashAllowedTest) {
34949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  ASSERT_TRUE(WriteFileString(
350c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
35149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
35249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
35349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
354ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel\n"
35549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
35649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  {
3575bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold    OmahaRequestParams params(&fake_system_state_);
358d04f8e24716d5acca6a7d116b63851adc1506845Gilad Arnold    params.set_root(test_dir_);
35910d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov    params.SetLockDown(false);
360ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan    EXPECT_TRUE(params.Init("", "", false));
361ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan    params.SetTargetChannel("canary-channel", true);
362ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan    EXPECT_TRUE(params.is_powerwash_allowed());
36349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  }
3645bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
36549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
366ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("canary-channel", out.target_channel());
367ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(out.is_powerwash_allowed());
36849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov}
36949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov
370ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, SetTargetChannelInvalidTest) {
37149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  ASSERT_TRUE(WriteFileString(
372c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
37349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
37449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
37549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
376ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel\n"
37749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
37849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  {
3795bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold    OmahaRequestParams params(&fake_system_state_);
380c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold    params.set_root(string("./") + test_dir_);
38110d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov    params.SetLockDown(true);
382ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan    EXPECT_TRUE(params.Init("", "", false));
383ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan    params.SetTargetChannel("dogfood-channel", true);
384ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan    EXPECT_FALSE(params.is_powerwash_allowed());
38549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  }
3865bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
38749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
388ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("arm-generic", out.os_board());
389ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("dev-channel", out.target_channel());
390ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_FALSE(out.is_powerwash_allowed());
39149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov}
39249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov
393ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, IsValidChannelTest) {
39410d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov  params_.SetLockDown(false);
395ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(params_.IsValidChannel("canary-channel"));
396ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(params_.IsValidChannel("stable-channel"));
397ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(params_.IsValidChannel("beta-channel"));
398ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(params_.IsValidChannel("dev-channel"));
399ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_FALSE(params_.IsValidChannel("testimage-channel"));
400ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_FALSE(params_.IsValidChannel("dogfood-channel"));
401ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_FALSE(params_.IsValidChannel("some-channel"));
402ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_FALSE(params_.IsValidChannel(""));
40349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov}
40449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov
405ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, ValidChannelTest) {
40649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  ASSERT_TRUE(WriteFileString(
407c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
40849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
40949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
41049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
41149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_TRACK=dev-channel\n"
41249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
41310d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov  params_.SetLockDown(true);
4145bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
41549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
416ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("Chrome OS", out.os_platform());
417ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
418ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("arm-generic", out.os_board());
419db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
420ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("0.2.2.3", out.app_version());
421ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("en-US", out.app_lang());
4225bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
423ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(out.delta_okay());
424ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("dev-channel", out.target_channel());
425ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("http://www.google.com", out.update_url());
42649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov}
42749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov
428ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, SetTargetChannelWorks) {
4297fbbe8a9e57ec52f7bc597d0cb607036300ac54cPatrick Dubroy  ASSERT_TRUE(WriteFileString(
430c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
4317fbbe8a9e57ec52f7bc597d0cb607036300ac54cPatrick Dubroy      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
4327fbbe8a9e57ec52f7bc597d0cb607036300ac54cPatrick Dubroy      "CHROMEOS_RELEASE_FOO=bar\n"
4337fbbe8a9e57ec52f7bc597d0cb607036300ac54cPatrick Dubroy      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
4347fbbe8a9e57ec52f7bc597d0cb607036300ac54cPatrick Dubroy      "CHROMEOS_RELEASE_TRACK=dev-channel\n"
4357fbbe8a9e57ec52f7bc597d0cb607036300ac54cPatrick Dubroy      "CHROMEOS_AUSERVER=http://www.google.com"));
436ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  params_.SetLockDown(false);
437ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan
438ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  // Check LSB value is used by default when SetTargetChannel is not called.
439ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  params_.Init("", "", false);
440ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("dev-channel", params_.target_channel());
441ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan
442ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  // When an invalid value is set, it should be ignored and the
443ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  // value from lsb-release should be used instead.
444ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  params_.Init("", "", false);
445ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_FALSE(params_.SetTargetChannel("invalid-channel", false));
446ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("dev-channel", params_.target_channel());
447ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan
448ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  // When set to a valid value, it should take effect.
449ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  params_.Init("", "", false);
450ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(params_.SetTargetChannel("beta-channel", true));
451ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("beta-channel", params_.target_channel());
452ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan
453ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  // When set to the same value, it should be idempotent.
454ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  params_.Init("", "", false);
455ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(params_.SetTargetChannel("beta-channel", true));
456ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("beta-channel", params_.target_channel());
457ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan
458ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  // When set to a valid value while a change is already pending, it should
4591c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  // succeed.
460ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  params_.Init("", "", false);
4611c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  EXPECT_TRUE(params_.SetTargetChannel("stable-channel", true));
4621c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  EXPECT_EQ("stable-channel", params_.target_channel());
4631c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan
4641c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  // Set a different channel in stateful LSB release.
4651c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  ASSERT_TRUE(WriteFileString(
466c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + kStatefulPartition + "/etc/lsb-release",
4671c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan      "CHROMEOS_RELEASE_TRACK=stable-channel\n"
4681c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan      "CHROMEOS_IS_POWERWASH_ALLOWED=true\n"));
4691c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan
4701c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  // When set to a valid value while a change is already pending, it should
4711c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  // succeed.
4721c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  params_.Init("", "", false);
4731c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  EXPECT_TRUE(params_.SetTargetChannel("beta-channel", true));
4741c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  // The target channel should reflect the change, but the download channel
4751c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  // should continue to retain the old value ...
4761c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  EXPECT_EQ("beta-channel", params_.target_channel());
4771c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  EXPECT_EQ("stable-channel", params_.download_channel());
4781c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan
4791c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  // ... until we update the download channel explicitly.
4801c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  params_.UpdateDownloadChannel();
4811c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  EXPECT_EQ("beta-channel", params_.download_channel());
482ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("beta-channel", params_.target_channel());
483ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan}
4847fbbe8a9e57ec52f7bc597d0cb607036300ac54cPatrick Dubroy
485ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, ChannelIndexTest) {
486ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  int canary = params_.GetChannelIndex("canary-channel");
487ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  int dev = params_.GetChannelIndex("dev-channel");
488ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  int beta = params_.GetChannelIndex("beta-channel");
489ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  int stable = params_.GetChannelIndex("stable-channel");
490ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_LE(canary, dev);
491ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_LE(dev, beta);
492ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_LE(beta, stable);
493ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan
494ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  // testimage-channel or other names are not recognized, so index will be -1.
495ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  int testimage = params_.GetChannelIndex("testimage-channel");
496ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  int bogus = params_.GetChannelIndex("bogus-channel");
497ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(-1, testimage);
498ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(-1, bogus);
499ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan}
5007fbbe8a9e57ec52f7bc597d0cb607036300ac54cPatrick Dubroy
501ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, ToMoreStableChannelFlagTest) {
502ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  ASSERT_TRUE(WriteFileString(
503c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
504ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
505ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_FOO=bar\n"
506ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
507ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=canary-channel\n"
508ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_AUSERVER=http://www.google.com"));
509ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  ASSERT_TRUE(WriteFileString(
510c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + kStatefulPartition + "/etc/lsb-release",
511ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_BOARD=x86-generic\n"
512ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=stable-channel\n"
513ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_AUSERVER=https://www.google.com"));
5145bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
515ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(DoTest(&out, "", ""));
516ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("https://www.google.com", out.update_url());
517ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_FALSE(out.delta_okay());
518ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("stable-channel", out.target_channel());
519ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(out.to_more_stable_channel());
5207fbbe8a9e57ec52f7bc597d0cb607036300ac54cPatrick Dubroy}
5217fbbe8a9e57ec52f7bc597d0cb607036300ac54cPatrick Dubroy
522ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, ShouldLockDownTest) {
52310d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov  EXPECT_FALSE(params_.ShouldLockDown());
52410d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov}
52510d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov
526db0acdfca1ea33987e8b29325f4594417d1fae57Jay SrinivasanTEST_F(OmahaRequestParamsTest, BoardAppIdUsedForNonCanaryChannelTest) {
527db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  ASSERT_TRUE(WriteFileString(
528c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
529db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan      "CHROMEOS_RELEASE_APPID=r\n"
530db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan      "CHROMEOS_BOARD_APPID=b\n"
531db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan      "CHROMEOS_CANARY_APPID=c\n"
532db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=stable-channel\n"));
5335bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
534db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_TRUE(DoTest(&out, "", ""));
535db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("stable-channel", out.download_channel());
536db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("b", out.GetAppId());
537db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan}
538db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan
539db0acdfca1ea33987e8b29325f4594417d1fae57Jay SrinivasanTEST_F(OmahaRequestParamsTest, CanaryAppIdUsedForCanaryChannelTest) {
540db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  ASSERT_TRUE(WriteFileString(
541c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
542db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan      "CHROMEOS_RELEASE_APPID=r\n"
543db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan      "CHROMEOS_BOARD_APPID=b\n"
544db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan      "CHROMEOS_CANARY_APPID=c\n"
545db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=canary-channel\n"));
5465bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
547db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_TRUE(DoTest(&out, "", ""));
548db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("canary-channel", out.download_channel());
549db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("c", out.GetAppId());
550db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan}
551db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan
552db0acdfca1ea33987e8b29325f4594417d1fae57Jay SrinivasanTEST_F(OmahaRequestParamsTest, ReleaseAppIdUsedAsDefaultTest) {
553db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  ASSERT_TRUE(WriteFileString(
554c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
555db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan      "CHROMEOS_RELEASE_APPID=r\n"
556db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan      "CHROMEOS_CANARY_APPID=c\n"
557db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=stable-channel\n"));
5585bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
559db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_TRUE(DoTest(&out, "", ""));
560db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("stable-channel", out.download_channel());
561db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("r", out.GetAppId());
562db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan}
563db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan
564c1972483fa3446852b42ce97d1ea43b9caaaf56fChris SosaTEST_F(OmahaRequestParamsTest, CollectECFWVersionsTest) {
565c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa  ASSERT_TRUE(WriteFileString(
566c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
567c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa      "CHROMEOS_RELEASE_APPID=r\n"
568c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa      "CHROMEOS_CANARY_APPID=c\n"
569c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa      "CHROMEOS_RELEASE_TRACK=stable-channel\n"));
5705bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
571c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa  out.hwid_ = string("STUMPY ALEX 12345");
572c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa  EXPECT_FALSE(out.CollectECFWVersions());
573c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa
574c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa  out.hwid_ = string("SNOW 12345");
575c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa  EXPECT_TRUE(out.CollectECFWVersions());
576c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa
577c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa  out.hwid_ = string("SAMS ALEX 12345");
578c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa  EXPECT_TRUE(out.CollectECFWVersions());
579c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa}
580c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa
581c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa
5823defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com}  // namespace chromeos_update_engine
583