1aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//
2aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Copyright (C) 2011 The Android Open Source Project
3aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//
4aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Licensed under the Apache License, Version 2.0 (the "License");
5aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// you may not use this file except in compliance with the License.
6aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// You may obtain a copy of the License at
7aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//
8aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//      http://www.apache.org/licenses/LICENSE-2.0
9aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//
10aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Unless required by applicable law or agreed to in writing, software
11aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// distributed under the License is distributed on an "AS IS" BASIS,
12aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// See the License for the specific language governing permissions and
14aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// limitations under the License.
15aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//
163defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
178427b4a6d0e6e02beedbb53798272f8ddc39386fAlex Deymo#include "update_engine/omaha_request_params.h"
188427b4a6d0e6e02beedbb53798272f8ddc39386fAlex Deymo
193defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com#include <stdio.h>
20fbb40098314ab45efa60667ad7ccae354c4f18daDarin Petkov
213defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com#include <string>
22fbb40098314ab45efa60667ad7ccae354c4f18daDarin Petkov
238427b4a6d0e6e02beedbb53798272f8ddc39386fAlex Deymo#include <base/files/file_util.h>
248427b4a6d0e6e02beedbb53798272f8ddc39386fAlex Deymo#include <gtest/gtest.h>
258427b4a6d0e6e02beedbb53798272f8ddc39386fAlex Deymo
2639910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#include "update_engine/common/constants.h"
2739910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#include "update_engine/common/platform_constants.h"
2839910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#include "update_engine/common/test_utils.h"
2939910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#include "update_engine/common/utils.h"
305bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold#include "update_engine/fake_system_state.h"
3139910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#include "update_engine/payload_consumer/install_plan.h"
323defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
3310875d90cf67f883ba7c9ed13bc8d706aa8c6fbcAlex Deymousing chromeos_update_engine::test_utils::WriteFileString;
343defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.comusing std::string;
353defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
363defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.comnamespace chromeos_update_engine {
373defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
38ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasanclass OmahaRequestParamsTest : public ::testing::Test {
39ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan public:
405bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParamsTest() : params_(&fake_system_state_) {}
41ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan
425a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov protected:
43ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  // Return true iff the OmahaRequestParams::Init succeeded. If
4488b591f24cb3f94f982d7024c2e8ed25c2cc26a2Alex Vakulenko  // out is non-null, it's set w/ the generated data.
455a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  bool DoTest(OmahaRequestParams* out, const string& app_version,
465a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov              const string& omaha_url);
475a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov
48610277efc6f7e5239158dfa4bb3b1021804326e0Alex Deymo  void SetUp() override {
49c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold    // Create a uniquely named test directory.
50856166594771c61973856f563e622ccb7dd48aa1Alex Deymo    ASSERT_TRUE(utils::MakeTempDirectory(kTestDirTemplate, &test_dir_));
51856166594771c61973856f563e622ccb7dd48aa1Alex Deymo    EXPECT_TRUE(base::CreateDirectory(base::FilePath(test_dir_ + "/etc")));
52856166594771c61973856f563e622ccb7dd48aa1Alex Deymo    EXPECT_TRUE(base::CreateDirectory(
53856166594771c61973856f563e622ccb7dd48aa1Alex Deymo        base::FilePath(test_dir_ + kStatefulPartition + "/etc")));
54ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan    // Create a fresh copy of the params for each test, so there's no
55ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan    // unintended reuse of state across tests.
565bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold    OmahaRequestParams new_params(&fake_system_state_);
57ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan    params_ = new_params;
58d04f8e24716d5acca6a7d116b63851adc1506845Gilad Arnold    params_.set_root(test_dir_);
59856166594771c61973856f563e622ccb7dd48aa1Alex Deymo    SetLockDown(false);
605a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  }
615a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov
62610277efc6f7e5239158dfa4bb3b1021804326e0Alex Deymo  void TearDown() override {
63856166594771c61973856f563e622ccb7dd48aa1Alex Deymo    EXPECT_TRUE(base::DeleteFile(base::FilePath(test_dir_), true));
64856166594771c61973856f563e622ccb7dd48aa1Alex Deymo  }
65856166594771c61973856f563e622ccb7dd48aa1Alex Deymo
66856166594771c61973856f563e622ccb7dd48aa1Alex Deymo  void SetLockDown(bool locked_down) {
67856166594771c61973856f563e622ccb7dd48aa1Alex Deymo    fake_system_state_.fake_hardware()->SetIsOfficialBuild(locked_down);
68856166594771c61973856f563e622ccb7dd48aa1Alex Deymo    fake_system_state_.fake_hardware()->SetIsNormalBootMode(locked_down);
695a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  }
705a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov
71ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  OmahaRequestParams params_;
725bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  FakeSystemState fake_system_state_;
7349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov
74c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold  static const char* kTestDirTemplate;
75c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold  string test_dir_;
763defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com};
773defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
78c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnoldconst char* OmahaRequestParamsTest::kTestDirTemplate =
79c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold  "omaha_request_params-test-XXXXXX";
803defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
81ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasanbool OmahaRequestParamsTest::DoTest(OmahaRequestParams* out,
82ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan                                    const string& app_version,
83ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan                                    const string& omaha_url) {
84ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  bool success = params_.Init(app_version, omaha_url, false);
853defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com  if (out)
8649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov    *out = params_;
87a4a8a8ccc2d9e0285728ed247b43f09433e63323Darin Petkov  return success;
883defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com}
893defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
903defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.comnamespace {
913defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.comstring GetMachineType() {
9219a45f0eda0917b7788b925b501e774208474fdeGilad Arnold  string machine_type;
9319a45f0eda0917b7788b925b501e774208474fdeGilad Arnold  if (!utils::ReadPipe("uname -m", &machine_type))
943defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com    return "";
9519a45f0eda0917b7788b925b501e774208474fdeGilad Arnold  // Strip anything from the first newline char.
9619a45f0eda0917b7788b925b501e774208474fdeGilad Arnold  size_t newline_pos = machine_type.find('\n');
9719a45f0eda0917b7788b925b501e774208474fdeGilad Arnold  if (newline_pos != string::npos)
9819a45f0eda0917b7788b925b501e774208474fdeGilad Arnold    machine_type.erase(newline_pos);
9919a45f0eda0917b7788b925b501e774208474fdeGilad Arnold  return machine_type;
1003defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com}
101d2779df63aaad8b65fc5d4badee7dbc9bed7f2b6Alex Vakulenko}  // namespace
1023defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
103ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, SimpleTest) {
1045a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  ASSERT_TRUE(WriteFileString(
105c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
1065a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
1075a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
1085a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
109ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel\n"
1105a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
1115bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
1125a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
113ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("Chrome OS", out.os_platform());
114ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
115ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("arm-generic", out.os_board());
116db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
117ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("0.2.2.3", out.app_version());
118ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("en-US", out.app_lang());
1195bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
120ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(out.delta_okay());
121ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("dev-channel", out.target_channel());
122ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("http://www.google.com", out.update_url());
1233defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com}
1243defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
125ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, AppIDTest) {
126d315dc7f336ceff8c1648ccd1a199ebb8c0a5a84Darin Petkov  ASSERT_TRUE(WriteFileString(
127c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
128d315dc7f336ceff8c1648ccd1a199ebb8c0a5a84Darin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
129d315dc7f336ceff8c1648ccd1a199ebb8c0a5a84Darin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
130d315dc7f336ceff8c1648ccd1a199ebb8c0a5a84Darin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
131ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel\n"
132d315dc7f336ceff8c1648ccd1a199ebb8c0a5a84Darin Petkov      "CHROMEOS_RELEASE_APPID={58c35cef-9d30-476e-9098-ce20377d535d}\n"
133d315dc7f336ceff8c1648ccd1a199ebb8c0a5a84Darin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
1345bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
135d315dc7f336ceff8c1648ccd1a199ebb8c0a5a84Darin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
136ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("Chrome OS", out.os_platform());
137ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
138ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("arm-generic", out.os_board());
139db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("{58c35cef-9d30-476e-9098-ce20377d535d}", out.GetAppId());
140ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("0.2.2.3", out.app_version());
141ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("en-US", out.app_lang());
1425bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
143ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(out.delta_okay());
144ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("dev-channel", out.target_channel());
145ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("http://www.google.com", out.update_url());
146d315dc7f336ceff8c1648ccd1a199ebb8c0a5a84Darin Petkov}
147d315dc7f336ceff8c1648ccd1a199ebb8c0a5a84Darin Petkov
148ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, MissingChannelTest) {
1495a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  ASSERT_TRUE(WriteFileString(
150c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
1515a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
1525a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
153ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRXCK=dev-channel"));
1545bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
1555a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
156ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("Chrome OS", out.os_platform());
157ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
158db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
159ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("0.2.2.3", out.app_version());
160ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("en-US", out.app_lang());
161856166594771c61973856f563e622ccb7dd48aa1Alex Deymo  // By default, if no channel is set, we should track the stable-channel.
162856166594771c61973856f563e622ccb7dd48aa1Alex Deymo  EXPECT_EQ("stable-channel", out.target_channel());
1633defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com}
1643defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
165ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, ConfusingReleaseTest) {
1665a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  ASSERT_TRUE(WriteFileString(
167c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
1685a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_FOO=CHROMEOS_RELEASE_VERSION=1.2.3.4\n"
1695a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
170ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRXCK=dev-channel"));
1715bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
1725a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
173ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("Chrome OS", out.os_platform());
174ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
175db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
176ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("0.2.2.3", out.app_version());
177ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("en-US", out.app_lang());
178856166594771c61973856f563e622ccb7dd48aa1Alex Deymo  EXPECT_EQ("stable-channel", out.target_channel());
1793defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com}
1803defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
181ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, MissingVersionTest) {
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, "", ""));
189ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("Chrome OS", out.os_platform());
190ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(string("_") + 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("", 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, ForceVersionTest) {
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"
204ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel"));
2055bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
2065a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(DoTest(&out, "ForcedVersion", ""));
207ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("Chrome OS", out.os_platform());
208ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(string("ForcedVersion_") + GetMachineType(), out.os_sp());
209ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("arm-generic", out.os_board());
210db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
211ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("ForcedVersion", out.app_version());
212ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("en-US", out.app_lang());
213ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(out.delta_okay());
214ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("dev-channel", out.target_channel());
2155a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov}
2165a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov
217ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, ForcedURLTest) {
2185a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  ASSERT_TRUE(WriteFileString(
219c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
2205a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
2215a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
2225a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
223ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel"));
2245bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
2255a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(DoTest(&out, "", "http://forced.google.com"));
226ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("Chrome OS", out.os_platform());
227ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
228ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("arm-generic", out.os_board());
229db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
230ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("0.2.2.3", out.app_version());
231ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("en-US", out.app_lang());
232ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(out.delta_okay());
233ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("dev-channel", out.target_channel());
234ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("http://forced.google.com", out.update_url());
2355a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov}
2365a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov
237ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, MissingURLTest) {
2385a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  ASSERT_TRUE(WriteFileString(
239c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
2405a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
2415a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
2425a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
243ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel"));
2445bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
2455a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
246ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("Chrome OS", out.os_platform());
247ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
248ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("arm-generic", out.os_board());
249db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
250ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("0.2.2.3", out.app_version());
251ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("en-US", out.app_lang());
252ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(out.delta_okay());
253ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("dev-channel", out.target_channel());
254ac41a82e4be1be43913292d13d58b5eb2c572f53Alex Deymo  EXPECT_EQ(constants::kOmahaDefaultProductionURL, out.update_url());
255970bb28905b44bf9f2cb986bb412ecda1095b0b1Andrew de los Reyes}
256970bb28905b44bf9f2cb986bb412ecda1095b0b1Andrew de los Reyes
257ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, NoDeltasTest) {
2583f0303aa211e2de2d466cef063ff6f39fffe32ddAndrew de los Reyes  ASSERT_TRUE(WriteFileString(
259c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
2603f0303aa211e2de2d466cef063ff6f39fffe32ddAndrew de los Reyes      "CHROMEOS_RELEASE_FOO=CHROMEOS_RELEASE_VERSION=1.2.3.4\n"
2613f0303aa211e2de2d466cef063ff6f39fffe32ddAndrew de los Reyes      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
262ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRXCK=dev-channel"));
263c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold  ASSERT_TRUE(WriteFileString(test_dir_ + "/.nodelta", ""));
2645bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
2655a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
266ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_FALSE(out.delta_okay());
2673f0303aa211e2de2d466cef063ff6f39fffe32ddAndrew de los Reyes}
2683f0303aa211e2de2d466cef063ff6f39fffe32ddAndrew de los Reyes
269ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, OverrideTest) {
27049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  ASSERT_TRUE(WriteFileString(
271c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
27249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
27349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
27449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
275ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel\n"
27649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
27749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  ASSERT_TRUE(WriteFileString(
278c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + kStatefulPartition + "/etc/lsb-release",
27949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_BOARD=x86-generic\n"
280ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=beta-channel\n"
28110d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov      "CHROMEOS_AUSERVER=https://www.google.com"));
2825bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
28349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
284ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("Chrome OS", out.os_platform());
285ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
286ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("x86-generic", out.os_board());
287db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
288ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("0.2.2.3", out.app_version());
289ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("en-US", out.app_lang());
2905bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
291ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_FALSE(out.delta_okay());
292ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("beta-channel", out.target_channel());
293ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("https://www.google.com", out.update_url());
29410d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov}
29510d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov
296ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, OverrideLockDownTest) {
29710d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov  ASSERT_TRUE(WriteFileString(
298c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
29910d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
30010d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
30110d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
302ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel\n"
30310d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov      "CHROMEOS_AUSERVER=https://www.google.com"));
30410d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov  ASSERT_TRUE(WriteFileString(
305c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + kStatefulPartition + "/etc/lsb-release",
30610d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov      "CHROMEOS_RELEASE_BOARD=x86-generic\n"
307ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=stable-channel\n"
30810d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
309856166594771c61973856f563e622ccb7dd48aa1Alex Deymo  SetLockDown(true);
3105bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
31110d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
312ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("arm-generic", out.os_board());
313db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
314ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("0.2.2.3", out.app_version());
3155bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
316ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_FALSE(out.delta_okay());
317ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("stable-channel", out.target_channel());
318ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("https://www.google.com", out.update_url());
31949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov}
32049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov
321ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, OverrideSameChannelTest) {
322a3df55badfc7dc25792aba1ca6e7ade582b566a7Darin Petkov  ASSERT_TRUE(WriteFileString(
323c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
324a3df55badfc7dc25792aba1ca6e7ade582b566a7Darin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
325a3df55badfc7dc25792aba1ca6e7ade582b566a7Darin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
326a3df55badfc7dc25792aba1ca6e7ade582b566a7Darin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
327ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel\n"
328a3df55badfc7dc25792aba1ca6e7ade582b566a7Darin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
329a3df55badfc7dc25792aba1ca6e7ade582b566a7Darin Petkov  ASSERT_TRUE(WriteFileString(
330c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + kStatefulPartition + "/etc/lsb-release",
331a3df55badfc7dc25792aba1ca6e7ade582b566a7Darin Petkov      "CHROMEOS_RELEASE_BOARD=x86-generic\n"
332ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel"));
3335bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
334a3df55badfc7dc25792aba1ca6e7ade582b566a7Darin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
335ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("x86-generic", out.os_board());
336db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
337ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("0.2.2.3", out.app_version());
3385bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
339ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(out.delta_okay());
340ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("dev-channel", out.target_channel());
341ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("http://www.google.com", out.update_url());
342a3df55badfc7dc25792aba1ca6e7ade582b566a7Darin Petkov}
343a3df55badfc7dc25792aba1ca6e7ade582b566a7Darin Petkov
344ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, SetTargetChannelTest) {
34549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  ASSERT_TRUE(WriteFileString(
346c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
34749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
34849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
34949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
350ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel\n"
35149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
35249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  {
3535bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold    OmahaRequestParams params(&fake_system_state_);
354d04f8e24716d5acca6a7d116b63851adc1506845Gilad Arnold    params.set_root(test_dir_);
355ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan    EXPECT_TRUE(params.Init("", "", false));
356d942f9d3c8529f896329b19261df6eba044de1b2Alex Deymo    params.SetTargetChannel("canary-channel", false, nullptr);
357ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan    EXPECT_FALSE(params.is_powerwash_allowed());
35849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  }
3595bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
3603be05c82442b2fbab693b6399f64610e8542462bAlex Deymo  out.set_root(test_dir_);
36149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
362ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("canary-channel", out.target_channel());
363ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_FALSE(out.is_powerwash_allowed());
36449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov}
36549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov
366ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, SetIsPowerwashAllowedTest) {
36749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  ASSERT_TRUE(WriteFileString(
368c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
36949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
37049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
37149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
372ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel\n"
37349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
37449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  {
3755bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold    OmahaRequestParams params(&fake_system_state_);
376d04f8e24716d5acca6a7d116b63851adc1506845Gilad Arnold    params.set_root(test_dir_);
377ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan    EXPECT_TRUE(params.Init("", "", false));
378d942f9d3c8529f896329b19261df6eba044de1b2Alex Deymo    params.SetTargetChannel("canary-channel", true, nullptr);
379ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan    EXPECT_TRUE(params.is_powerwash_allowed());
38049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  }
3815bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
3823be05c82442b2fbab693b6399f64610e8542462bAlex Deymo  out.set_root(test_dir_);
38349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
384ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("canary-channel", out.target_channel());
385ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(out.is_powerwash_allowed());
38649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov}
38749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov
388ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, SetTargetChannelInvalidTest) {
38949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  ASSERT_TRUE(WriteFileString(
390c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
39149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
39249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
39349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
394ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=dev-channel\n"
39549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
39649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  {
3975bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold    OmahaRequestParams params(&fake_system_state_);
398856166594771c61973856f563e622ccb7dd48aa1Alex Deymo    params.set_root(test_dir_);
399856166594771c61973856f563e622ccb7dd48aa1Alex Deymo    SetLockDown(true);
400ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan    EXPECT_TRUE(params.Init("", "", false));
401d942f9d3c8529f896329b19261df6eba044de1b2Alex Deymo    string error_message;
402d942f9d3c8529f896329b19261df6eba044de1b2Alex Deymo    EXPECT_FALSE(
403d942f9d3c8529f896329b19261df6eba044de1b2Alex Deymo        params.SetTargetChannel("dogfood-channel", true, &error_message));
404d942f9d3c8529f896329b19261df6eba044de1b2Alex Deymo    // The error message should include a message about the valid channels.
405d942f9d3c8529f896329b19261df6eba044de1b2Alex Deymo    EXPECT_NE(string::npos, error_message.find("stable-channel"));
406ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan    EXPECT_FALSE(params.is_powerwash_allowed());
40749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  }
4085bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
4093be05c82442b2fbab693b6399f64610e8542462bAlex Deymo  out.set_root(test_dir_);
41049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
411ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("arm-generic", out.os_board());
412ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("dev-channel", out.target_channel());
413ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_FALSE(out.is_powerwash_allowed());
41449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov}
41549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov
416ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, IsValidChannelTest) {
417ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(params_.IsValidChannel("canary-channel"));
418ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(params_.IsValidChannel("stable-channel"));
419ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(params_.IsValidChannel("beta-channel"));
420ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(params_.IsValidChannel("dev-channel"));
421ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_FALSE(params_.IsValidChannel("testimage-channel"));
422ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_FALSE(params_.IsValidChannel("dogfood-channel"));
423ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_FALSE(params_.IsValidChannel("some-channel"));
424ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_FALSE(params_.IsValidChannel(""));
42549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov}
42649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov
427ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, ValidChannelTest) {
42849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  ASSERT_TRUE(WriteFileString(
429c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
43049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
43149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
43249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
43349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_TRACK=dev-channel\n"
43449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
435856166594771c61973856f563e622ccb7dd48aa1Alex Deymo  SetLockDown(true);
4365bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
43749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
438ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("Chrome OS", out.os_platform());
439ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp());
440ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("arm-generic", out.os_board());
441db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.GetAppId());
442ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("0.2.2.3", out.app_version());
443ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("en-US", out.app_lang());
4445bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  EXPECT_EQ(fake_system_state_.hardware()->GetHardwareClass(), out.hwid());
445ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(out.delta_okay());
446ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("dev-channel", out.target_channel());
447ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("http://www.google.com", out.update_url());
44849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov}
44949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov
450ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, SetTargetChannelWorks) {
4517fbbe8a9e57ec52f7bc597d0cb607036300ac54cPatrick Dubroy  ASSERT_TRUE(WriteFileString(
452c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
4537fbbe8a9e57ec52f7bc597d0cb607036300ac54cPatrick Dubroy      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
4547fbbe8a9e57ec52f7bc597d0cb607036300ac54cPatrick Dubroy      "CHROMEOS_RELEASE_FOO=bar\n"
4557fbbe8a9e57ec52f7bc597d0cb607036300ac54cPatrick Dubroy      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
4567fbbe8a9e57ec52f7bc597d0cb607036300ac54cPatrick Dubroy      "CHROMEOS_RELEASE_TRACK=dev-channel\n"
4577fbbe8a9e57ec52f7bc597d0cb607036300ac54cPatrick Dubroy      "CHROMEOS_AUSERVER=http://www.google.com"));
458ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan
459ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  // Check LSB value is used by default when SetTargetChannel is not called.
460ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  params_.Init("", "", false);
461ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("dev-channel", params_.target_channel());
462ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan
463ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  // When an invalid value is set, it should be ignored and the
464ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  // value from lsb-release should be used instead.
465ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  params_.Init("", "", false);
466d942f9d3c8529f896329b19261df6eba044de1b2Alex Deymo  EXPECT_FALSE(params_.SetTargetChannel("invalid-channel", false, nullptr));
467ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("dev-channel", params_.target_channel());
468ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan
469ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  // When set to a valid value, it should take effect.
470ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  params_.Init("", "", false);
471d942f9d3c8529f896329b19261df6eba044de1b2Alex Deymo  EXPECT_TRUE(params_.SetTargetChannel("beta-channel", true, nullptr));
472ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("beta-channel", params_.target_channel());
473ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan
474ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  // When set to the same value, it should be idempotent.
475ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  params_.Init("", "", false);
476d942f9d3c8529f896329b19261df6eba044de1b2Alex Deymo  EXPECT_TRUE(params_.SetTargetChannel("beta-channel", true, nullptr));
477ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("beta-channel", params_.target_channel());
478ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan
479ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  // When set to a valid value while a change is already pending, it should
4801c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  // succeed.
481ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  params_.Init("", "", false);
482d942f9d3c8529f896329b19261df6eba044de1b2Alex Deymo  EXPECT_TRUE(params_.SetTargetChannel("stable-channel", true, nullptr));
4831c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  EXPECT_EQ("stable-channel", params_.target_channel());
4841c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan
4851c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  // Set a different channel in stateful LSB release.
4861c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  ASSERT_TRUE(WriteFileString(
487c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + kStatefulPartition + "/etc/lsb-release",
4881c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan      "CHROMEOS_RELEASE_TRACK=stable-channel\n"
4891c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan      "CHROMEOS_IS_POWERWASH_ALLOWED=true\n"));
4901c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan
4911c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  // When set to a valid value while a change is already pending, it should
4921c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  // succeed.
4931c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  params_.Init("", "", false);
494d942f9d3c8529f896329b19261df6eba044de1b2Alex Deymo  EXPECT_TRUE(params_.SetTargetChannel("beta-channel", true, nullptr));
4951c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  // The target channel should reflect the change, but the download channel
4961c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  // should continue to retain the old value ...
4971c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  EXPECT_EQ("beta-channel", params_.target_channel());
4981c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  EXPECT_EQ("stable-channel", params_.download_channel());
4991c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan
5001c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  // ... until we update the download channel explicitly.
5011c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  params_.UpdateDownloadChannel();
5021c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan  EXPECT_EQ("beta-channel", params_.download_channel());
503ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("beta-channel", params_.target_channel());
504ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan}
5057fbbe8a9e57ec52f7bc597d0cb607036300ac54cPatrick Dubroy
506ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, ChannelIndexTest) {
507ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  int canary = params_.GetChannelIndex("canary-channel");
508ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  int dev = params_.GetChannelIndex("dev-channel");
509ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  int beta = params_.GetChannelIndex("beta-channel");
510ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  int stable = params_.GetChannelIndex("stable-channel");
511ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_LE(canary, dev);
512ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_LE(dev, beta);
513ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_LE(beta, stable);
514ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan
515ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  // testimage-channel or other names are not recognized, so index will be -1.
516ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  int testimage = params_.GetChannelIndex("testimage-channel");
517ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  int bogus = params_.GetChannelIndex("bogus-channel");
518ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(-1, testimage);
519ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ(-1, bogus);
520ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan}
5217fbbe8a9e57ec52f7bc597d0cb607036300ac54cPatrick Dubroy
522ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, ToMoreStableChannelFlagTest) {
523ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  ASSERT_TRUE(WriteFileString(
524c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
525ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
526ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_FOO=bar\n"
527ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
528ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=canary-channel\n"
529ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_AUSERVER=http://www.google.com"));
530ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  ASSERT_TRUE(WriteFileString(
531c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + kStatefulPartition + "/etc/lsb-release",
532ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_BOARD=x86-generic\n"
533ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=stable-channel\n"
534ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan      "CHROMEOS_AUSERVER=https://www.google.com"));
5355bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
536ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(DoTest(&out, "", ""));
537ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("https://www.google.com", out.update_url());
538ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_FALSE(out.delta_okay());
539ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_EQ("stable-channel", out.target_channel());
540ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan  EXPECT_TRUE(out.to_more_stable_channel());
5417fbbe8a9e57ec52f7bc597d0cb607036300ac54cPatrick Dubroy}
5427fbbe8a9e57ec52f7bc597d0cb607036300ac54cPatrick Dubroy
543db0acdfca1ea33987e8b29325f4594417d1fae57Jay SrinivasanTEST_F(OmahaRequestParamsTest, BoardAppIdUsedForNonCanaryChannelTest) {
544db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  ASSERT_TRUE(WriteFileString(
545c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
546db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan      "CHROMEOS_RELEASE_APPID=r\n"
547db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan      "CHROMEOS_BOARD_APPID=b\n"
548db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan      "CHROMEOS_CANARY_APPID=c\n"
549db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=stable-channel\n"));
5505bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
551db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_TRUE(DoTest(&out, "", ""));
552db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("stable-channel", out.download_channel());
553db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("b", out.GetAppId());
554db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan}
555db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan
556db0acdfca1ea33987e8b29325f4594417d1fae57Jay SrinivasanTEST_F(OmahaRequestParamsTest, CanaryAppIdUsedForCanaryChannelTest) {
557db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  ASSERT_TRUE(WriteFileString(
558c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
559db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan      "CHROMEOS_RELEASE_APPID=r\n"
560db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan      "CHROMEOS_BOARD_APPID=b\n"
561db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan      "CHROMEOS_CANARY_APPID=c\n"
562db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=canary-channel\n"));
5635bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
564db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_TRUE(DoTest(&out, "", ""));
565db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("canary-channel", out.download_channel());
566db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("c", out.GetAppId());
567db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan}
568db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan
569db0acdfca1ea33987e8b29325f4594417d1fae57Jay SrinivasanTEST_F(OmahaRequestParamsTest, ReleaseAppIdUsedAsDefaultTest) {
570db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  ASSERT_TRUE(WriteFileString(
571c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
572db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan      "CHROMEOS_RELEASE_APPID=r\n"
573db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan      "CHROMEOS_CANARY_APPID=c\n"
574db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan      "CHROMEOS_RELEASE_TRACK=stable-channel\n"));
5755bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
576db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_TRUE(DoTest(&out, "", ""));
577db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("stable-channel", out.download_channel());
578db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan  EXPECT_EQ("r", out.GetAppId());
579db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan}
580db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan
581c1972483fa3446852b42ce97d1ea43b9caaaf56fChris SosaTEST_F(OmahaRequestParamsTest, CollectECFWVersionsTest) {
582c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa  ASSERT_TRUE(WriteFileString(
583c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold      test_dir_ + "/etc/lsb-release",
584c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa      "CHROMEOS_RELEASE_APPID=r\n"
585c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa      "CHROMEOS_CANARY_APPID=c\n"
586c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa      "CHROMEOS_RELEASE_TRACK=stable-channel\n"));
5875bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold  OmahaRequestParams out(&fake_system_state_);
588c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa  out.hwid_ = string("STUMPY ALEX 12345");
589c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa  EXPECT_FALSE(out.CollectECFWVersions());
590c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa
591c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa  out.hwid_ = string("SNOW 12345");
592c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa  EXPECT_TRUE(out.CollectECFWVersions());
593c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa
594c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa  out.hwid_ = string("SAMS ALEX 12345");
595c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa  EXPECT_TRUE(out.CollectECFWVersions());
596c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa}
597c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa
5983defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com}  // namespace chromeos_update_engine
599