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> 24297e583af1cec04f5f332b57b91f846921744c91Sen Jiang#include <base/files/scoped_temp_dir.h> 258427b4a6d0e6e02beedbb53798272f8ddc39386fAlex Deymo#include <gtest/gtest.h> 268427b4a6d0e6e02beedbb53798272f8ddc39386fAlex Deymo 2739910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#include "update_engine/common/constants.h" 28297e583af1cec04f5f332b57b91f846921744c91Sen Jiang#include "update_engine/common/fake_prefs.h" 2939910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#include "update_engine/common/platform_constants.h" 3039910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#include "update_engine/common/test_utils.h" 3139910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#include "update_engine/common/utils.h" 325bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold#include "update_engine/fake_system_state.h" 333defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com 3410875d90cf67f883ba7c9ed13bc8d706aa8c6fbcAlex Deymousing chromeos_update_engine::test_utils::WriteFileString; 353defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.comusing std::string; 363defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com 373defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.comnamespace chromeos_update_engine { 383defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com 39ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasanclass OmahaRequestParamsTest : public ::testing::Test { 40ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan public: 415bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold OmahaRequestParamsTest() : params_(&fake_system_state_) {} 42ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan 435a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov protected: 44610277efc6f7e5239158dfa4bb3b1021804326e0Alex Deymo void SetUp() override { 45c9abbec864f283d1873883bc8f9b523020ee2acbGilad Arnold // Create a uniquely named test directory. 46297e583af1cec04f5f332b57b91f846921744c91Sen Jiang ASSERT_TRUE(tempdir_.CreateUniqueTempDir()); 47ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan // Create a fresh copy of the params for each test, so there's no 48ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan // unintended reuse of state across tests. 49297e583af1cec04f5f332b57b91f846921744c91Sen Jiang params_ = OmahaRequestParams(&fake_system_state_); 50297e583af1cec04f5f332b57b91f846921744c91Sen Jiang params_.set_root(tempdir_.path().value()); 51856166594771c61973856f563e622ccb7dd48aa1Alex Deymo SetLockDown(false); 52297e583af1cec04f5f332b57b91f846921744c91Sen Jiang fake_system_state_.set_prefs(&fake_prefs_); 53856166594771c61973856f563e622ccb7dd48aa1Alex Deymo } 54856166594771c61973856f563e622ccb7dd48aa1Alex Deymo 55856166594771c61973856f563e622ccb7dd48aa1Alex Deymo void SetLockDown(bool locked_down) { 56856166594771c61973856f563e622ccb7dd48aa1Alex Deymo fake_system_state_.fake_hardware()->SetIsOfficialBuild(locked_down); 57856166594771c61973856f563e622ccb7dd48aa1Alex Deymo fake_system_state_.fake_hardware()->SetIsNormalBootMode(locked_down); 585a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov } 595a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov 60ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan OmahaRequestParams params_; 615bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold FakeSystemState fake_system_state_; 62297e583af1cec04f5f332b57b91f846921744c91Sen Jiang FakePrefs fake_prefs_; 6349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov 64297e583af1cec04f5f332b57b91f846921744c91Sen Jiang base::ScopedTempDir tempdir_; 653defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com}; 663defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com 673defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.comnamespace { 683defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.comstring GetMachineType() { 6919a45f0eda0917b7788b925b501e774208474fdeGilad Arnold string machine_type; 7019a45f0eda0917b7788b925b501e774208474fdeGilad Arnold if (!utils::ReadPipe("uname -m", &machine_type)) 713defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com return ""; 7219a45f0eda0917b7788b925b501e774208474fdeGilad Arnold // Strip anything from the first newline char. 7319a45f0eda0917b7788b925b501e774208474fdeGilad Arnold size_t newline_pos = machine_type.find('\n'); 7419a45f0eda0917b7788b925b501e774208474fdeGilad Arnold if (newline_pos != string::npos) 7519a45f0eda0917b7788b925b501e774208474fdeGilad Arnold machine_type.erase(newline_pos); 7619a45f0eda0917b7788b925b501e774208474fdeGilad Arnold return machine_type; 773defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com} 78d2779df63aaad8b65fc5d4badee7dbc9bed7f2b6Alex Vakulenko} // namespace 793defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com 80ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, MissingChannelTest) { 81297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_TRUE(params_.Init("", "", false)); 82856166594771c61973856f563e622ccb7dd48aa1Alex Deymo // By default, if no channel is set, we should track the stable-channel. 83297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_EQ("stable-channel", params_.target_channel()); 845a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov} 855a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov 86ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, ForceVersionTest) { 87297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_TRUE(params_.Init("ForcedVersion", "", false)); 88297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_EQ(string("ForcedVersion_") + GetMachineType(), params_.os_sp()); 89297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_EQ("ForcedVersion", params_.app_version()); 905a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov} 915a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov 92ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, ForcedURLTest) { 93297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_TRUE(params_.Init("", "http://forced.google.com", false)); 94297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_EQ("http://forced.google.com", params_.update_url()); 955a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov} 965a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov 97ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, MissingURLTest) { 98297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_TRUE(params_.Init("", "", false)); 99297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_EQ(constants::kOmahaDefaultProductionURL, params_.update_url()); 1003f0303aa211e2de2d466cef063ff6f39fffe32ddAndrew de los Reyes} 1013f0303aa211e2de2d466cef063ff6f39fffe32ddAndrew de los Reyes 102297e583af1cec04f5f332b57b91f846921744c91Sen JiangTEST_F(OmahaRequestParamsTest, DeltaOKTest) { 103297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_TRUE(params_.Init("", "", false)); 104297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_TRUE(params_.delta_okay()); 10510d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov} 10610d02dd60d4c4f41f7f4ed92322fa7b597760118Darin Petkov 107297e583af1cec04f5f332b57b91f846921744c91Sen JiangTEST_F(OmahaRequestParamsTest, NoDeltasTest) { 108297e583af1cec04f5f332b57b91f846921744c91Sen Jiang ASSERT_TRUE(WriteFileString(tempdir_.path().Append(".nodelta").value(), "")); 109297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_TRUE(params_.Init("", "", false)); 110297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_FALSE(params_.delta_okay()); 111a3df55badfc7dc25792aba1ca6e7ade582b566a7Darin Petkov} 112a3df55badfc7dc25792aba1ca6e7ade582b566a7Darin Petkov 113ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, SetTargetChannelTest) { 11449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov { 1155bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold OmahaRequestParams params(&fake_system_state_); 116297e583af1cec04f5f332b57b91f846921744c91Sen Jiang params.set_root(tempdir_.path().value()); 117ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_TRUE(params.Init("", "", false)); 118297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_TRUE(params.SetTargetChannel("canary-channel", false, nullptr)); 119ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_FALSE(params.is_powerwash_allowed()); 12049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov } 121297e583af1cec04f5f332b57b91f846921744c91Sen Jiang params_.set_root(tempdir_.path().value()); 122297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_TRUE(params_.Init("", "", false)); 123297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_EQ("canary-channel", params_.target_channel()); 124297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_FALSE(params_.is_powerwash_allowed()); 12549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov} 12649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov 127ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, SetIsPowerwashAllowedTest) { 12849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov { 1295bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold OmahaRequestParams params(&fake_system_state_); 130297e583af1cec04f5f332b57b91f846921744c91Sen Jiang params.set_root(tempdir_.path().value()); 131ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_TRUE(params.Init("", "", false)); 132297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_TRUE(params.SetTargetChannel("canary-channel", true, nullptr)); 133ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_TRUE(params.is_powerwash_allowed()); 13449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov } 135297e583af1cec04f5f332b57b91f846921744c91Sen Jiang params_.set_root(tempdir_.path().value()); 136297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_TRUE(params_.Init("", "", false)); 137297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_EQ("canary-channel", params_.target_channel()); 138297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_TRUE(params_.is_powerwash_allowed()); 13949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov} 14049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov 141ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, SetTargetChannelInvalidTest) { 14249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov { 1435bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold OmahaRequestParams params(&fake_system_state_); 144297e583af1cec04f5f332b57b91f846921744c91Sen Jiang params.set_root(tempdir_.path().value()); 145856166594771c61973856f563e622ccb7dd48aa1Alex Deymo SetLockDown(true); 146ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_TRUE(params.Init("", "", false)); 147d942f9d3c8529f896329b19261df6eba044de1b2Alex Deymo string error_message; 148d942f9d3c8529f896329b19261df6eba044de1b2Alex Deymo EXPECT_FALSE( 149d942f9d3c8529f896329b19261df6eba044de1b2Alex Deymo params.SetTargetChannel("dogfood-channel", true, &error_message)); 150d942f9d3c8529f896329b19261df6eba044de1b2Alex Deymo // The error message should include a message about the valid channels. 151d942f9d3c8529f896329b19261df6eba044de1b2Alex Deymo EXPECT_NE(string::npos, error_message.find("stable-channel")); 152ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_FALSE(params.is_powerwash_allowed()); 15349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov } 154297e583af1cec04f5f332b57b91f846921744c91Sen Jiang params_.set_root(tempdir_.path().value()); 155297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_TRUE(params_.Init("", "", false)); 156297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_EQ("stable-channel", params_.target_channel()); 157297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_FALSE(params_.is_powerwash_allowed()); 15849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov} 15949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov 160ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, IsValidChannelTest) { 161ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_TRUE(params_.IsValidChannel("canary-channel")); 162ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_TRUE(params_.IsValidChannel("stable-channel")); 163ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_TRUE(params_.IsValidChannel("beta-channel")); 164ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_TRUE(params_.IsValidChannel("dev-channel")); 165ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_FALSE(params_.IsValidChannel("testimage-channel")); 166ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_FALSE(params_.IsValidChannel("dogfood-channel")); 167ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_FALSE(params_.IsValidChannel("some-channel")); 168ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_FALSE(params_.IsValidChannel("")); 16949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov} 17049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov 171ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, SetTargetChannelWorks) { 172297e583af1cec04f5f332b57b91f846921744c91Sen Jiang params_.set_target_channel("dev-channel"); 173ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_EQ("dev-channel", params_.target_channel()); 174ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan 175297e583af1cec04f5f332b57b91f846921744c91Sen Jiang // When an invalid value is set, it should be ignored. 176d942f9d3c8529f896329b19261df6eba044de1b2Alex Deymo EXPECT_FALSE(params_.SetTargetChannel("invalid-channel", false, nullptr)); 177ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_EQ("dev-channel", params_.target_channel()); 178ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan 179ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan // When set to a valid value, it should take effect. 180d942f9d3c8529f896329b19261df6eba044de1b2Alex Deymo EXPECT_TRUE(params_.SetTargetChannel("beta-channel", true, nullptr)); 181ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_EQ("beta-channel", params_.target_channel()); 182ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan 183ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan // When set to the same value, it should be idempotent. 184d942f9d3c8529f896329b19261df6eba044de1b2Alex Deymo EXPECT_TRUE(params_.SetTargetChannel("beta-channel", true, nullptr)); 185ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_EQ("beta-channel", params_.target_channel()); 186ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan 187ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan // When set to a valid value while a change is already pending, it should 1881c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan // succeed. 189d942f9d3c8529f896329b19261df6eba044de1b2Alex Deymo EXPECT_TRUE(params_.SetTargetChannel("stable-channel", true, nullptr)); 1901c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan EXPECT_EQ("stable-channel", params_.target_channel()); 1911c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan 192297e583af1cec04f5f332b57b91f846921744c91Sen Jiang // Set a different channel in mutable_image_props_. 193297e583af1cec04f5f332b57b91f846921744c91Sen Jiang params_.set_target_channel("stable-channel"); 1941c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan 1951c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan // When set to a valid value while a change is already pending, it should 1961c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan // succeed. 1971c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan params_.Init("", "", false); 198d942f9d3c8529f896329b19261df6eba044de1b2Alex Deymo EXPECT_TRUE(params_.SetTargetChannel("beta-channel", true, nullptr)); 1991c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan // The target channel should reflect the change, but the download channel 2001c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan // should continue to retain the old value ... 2011c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan EXPECT_EQ("beta-channel", params_.target_channel()); 2021c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan EXPECT_EQ("stable-channel", params_.download_channel()); 2031c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan 2041c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan // ... until we update the download channel explicitly. 2051c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan params_.UpdateDownloadChannel(); 2061c0fe79c7ef2b43946d756b54c8505d2bf48b93bJay Srinivasan EXPECT_EQ("beta-channel", params_.download_channel()); 207ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_EQ("beta-channel", params_.target_channel()); 208ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan} 2097fbbe8a9e57ec52f7bc597d0cb607036300ac54cPatrick Dubroy 210ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, ChannelIndexTest) { 211ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan int canary = params_.GetChannelIndex("canary-channel"); 212ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan int dev = params_.GetChannelIndex("dev-channel"); 213ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan int beta = params_.GetChannelIndex("beta-channel"); 214ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan int stable = params_.GetChannelIndex("stable-channel"); 215ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_LE(canary, dev); 216ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_LE(dev, beta); 217ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_LE(beta, stable); 218ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan 219ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan // testimage-channel or other names are not recognized, so index will be -1. 220ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan int testimage = params_.GetChannelIndex("testimage-channel"); 221ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan int bogus = params_.GetChannelIndex("bogus-channel"); 222ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_EQ(-1, testimage); 223ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan EXPECT_EQ(-1, bogus); 224ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan} 2257fbbe8a9e57ec52f7bc597d0cb607036300ac54cPatrick Dubroy 226ae4697c073b84b260990a141acd53c6806da0708Jay SrinivasanTEST_F(OmahaRequestParamsTest, ToMoreStableChannelFlagTest) { 227297e583af1cec04f5f332b57b91f846921744c91Sen Jiang params_.image_props_.current_channel = "canary-channel"; 228297e583af1cec04f5f332b57b91f846921744c91Sen Jiang params_.download_channel_ = "stable-channel"; 229297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_TRUE(params_.to_more_stable_channel()); 230db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan} 231db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan 232297e583af1cec04f5f332b57b91f846921744c91Sen JiangTEST_F(OmahaRequestParamsTest, CollectECFWVersionsTest) { 233297e583af1cec04f5f332b57b91f846921744c91Sen Jiang params_.hwid_ = string("STUMPY ALEX 12345"); 234297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_FALSE(params_.CollectECFWVersions()); 235db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan 236297e583af1cec04f5f332b57b91f846921744c91Sen Jiang params_.hwid_ = string("SNOW 12345"); 237297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_TRUE(params_.CollectECFWVersions()); 238db0acdfca1ea33987e8b29325f4594417d1fae57Jay Srinivasan 239297e583af1cec04f5f332b57b91f846921744c91Sen Jiang params_.hwid_ = string("SAMS ALEX 12345"); 240297e583af1cec04f5f332b57b91f846921744c91Sen Jiang EXPECT_TRUE(params_.CollectECFWVersions()); 241c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa} 242c1972483fa3446852b42ce97d1ea43b9caaaf56fChris Sosa 2433defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com} // namespace chromeos_update_engine 244