omaha_request_params_unittest.cc revision 49d91329a3a84d7e2b35f6e1ffc8a9b4d478515b
1a4a8a8ccc2d9e0285728ed247b43f09433e63323Darin Petkov// Copyright (c) 2010 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
53defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com#include <stdio.h>
6fbb40098314ab45efa60667ad7ccae354c4f18daDarin Petkov
73defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com#include <string>
8fbb40098314ab45efa60667ad7ccae354c4f18daDarin Petkov
9fbb40098314ab45efa60667ad7ccae354c4f18daDarin Petkov#include "base/file_util.h"
10fbb40098314ab45efa60667ad7ccae354c4f18daDarin Petkov#include "gtest/gtest.h"
113defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com#include "update_engine/install_plan.h"
12a4a8a8ccc2d9e0285728ed247b43f09433e63323Darin Petkov#include "update_engine/omaha_request_params.h"
133defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com#include "update_engine/test_utils.h"
143defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com#include "update_engine/utils.h"
153defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
163defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.comusing std::string;
173defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
183defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.comnamespace chromeos_update_engine {
193defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
20a4a8a8ccc2d9e0285728ed247b43f09433e63323Darin Petkovclass OmahaRequestDeviceParamsTest : public ::testing::Test {
215a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov protected:
22a4a8a8ccc2d9e0285728ed247b43f09433e63323Darin Petkov  // Return true iff the OmahaRequestDeviceParams::Init succeeded. If
23a4a8a8ccc2d9e0285728ed247b43f09433e63323Darin Petkov  // out is non-NULL, it's set w/ the generated data.
245a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  bool DoTest(OmahaRequestParams* out, const string& app_version,
255a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov              const string& omaha_url);
265a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov
275a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  virtual void SetUp() {
285a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov    ASSERT_EQ(0, System(string("mkdir -p ") + kTestDir + "/etc"));
295a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov    ASSERT_EQ(0, System(string("mkdir -p ") + kTestDir +
305a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov                        utils::kStatefulPartition + "/etc"));
3149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov    params_.set_root(string("./") + kTestDir);
3249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov    params_.SetBuildTypeOfficial(false);
335a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  }
345a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov
355a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  virtual void TearDown() {
365a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov    EXPECT_EQ(0, System(string("rm -rf ") + kTestDir));
375a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  }
385a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov
3949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  OmahaRequestDeviceParams params_;
4049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov
413defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com  static const string kTestDir;
423defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com};
433defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
44a4a8a8ccc2d9e0285728ed247b43f09433e63323Darin Petkovconst string OmahaRequestDeviceParamsTest::kTestDir =
45a4a8a8ccc2d9e0285728ed247b43f09433e63323Darin Petkov    "omaha_request_device_params-test";
463defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
475a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkovbool OmahaRequestDeviceParamsTest::DoTest(OmahaRequestParams* out,
485a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov                                          const string& app_version,
495a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov                                          const string& omaha_url) {
5049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  bool success = params_.Init(app_version, omaha_url);
513defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com  if (out)
5249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov    *out = params_;
53a4a8a8ccc2d9e0285728ed247b43f09433e63323Darin Petkov  return success;
543defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com}
553defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
563defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.comnamespace {
573defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.comstring GetMachineType() {
583defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com  FILE* fp = popen("uname -m", "r");
593defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com  if (!fp)
603defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com    return "";
613defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com  string ret;
623defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com  for (;;) {
633defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com    char buffer[10];
643defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com    size_t r = fread(buffer, 1, sizeof(buffer), fp);
653defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com    if (r == 0)
663defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com      break;
673defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com    ret.insert(ret.begin(), buffer, buffer + r);
683defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com  }
693defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com  // strip trailing '\n' if it exists
703defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com  if ((*ret.rbegin()) == '\n')
713defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com    ret.resize(ret.size() - 1);
723defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com  fclose(fp);
733defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com  return ret;
743defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com}
753defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com}  // namespace {}
763defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
77a4a8a8ccc2d9e0285728ed247b43f09433e63323Darin PetkovTEST_F(OmahaRequestDeviceParamsTest, SimpleTest) {
785a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  ASSERT_TRUE(WriteFileString(
795a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      kTestDir + "/etc/lsb-release",
805a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
815a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
825a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
835a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_TRACK=footrack\n"
845a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
855a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  OmahaRequestParams out;
865a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
875a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("Chrome OS", out.os_platform);
885a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp);
895a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("arm-generic", out.os_board);
905a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
915a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("0.2.2.3", out.app_version);
925a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("en-US", out.app_lang);
93fbb40098314ab45efa60667ad7ccae354c4f18daDarin Petkov  EXPECT_EQ("", out.hardware_class);
945a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(out.delta_okay);
955a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("footrack", out.app_track);
965a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("http://www.google.com", out.update_url);
973defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com}
983defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
99a4a8a8ccc2d9e0285728ed247b43f09433e63323Darin PetkovTEST_F(OmahaRequestDeviceParamsTest, MissingTrackTest) {
1005a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  ASSERT_TRUE(WriteFileString(
1015a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      kTestDir + "/etc/lsb-release",
1025a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
1035a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
1045a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_TRXCK=footrack"));
1055a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  OmahaRequestParams out;
1065a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
1075a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("Chrome OS", out.os_platform);
1085a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp);
1095a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
1105a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("0.2.2.3", out.app_version);
1115a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("en-US", out.app_lang);
1125a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("", out.app_track);
1133defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com}
1143defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
115a4a8a8ccc2d9e0285728ed247b43f09433e63323Darin PetkovTEST_F(OmahaRequestDeviceParamsTest, ConfusingReleaseTest) {
1165a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  ASSERT_TRUE(WriteFileString(
1175a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      kTestDir + "/etc/lsb-release",
1185a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_FOO=CHROMEOS_RELEASE_VERSION=1.2.3.4\n"
1195a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
1205a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_TRXCK=footrack"));
1215a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  OmahaRequestParams out;
1225a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
1235a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("Chrome OS", out.os_platform);
1245a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp);
1255a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
1265a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("0.2.2.3", out.app_version);
1275a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("en-US", out.app_lang);
1285a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("", out.app_track);
1293defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com}
1303defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com
1315a7f565a542196f24eb87ddac96508f8a84e3329Darin PetkovTEST_F(OmahaRequestDeviceParamsTest, MissingVersionTest) {
1325a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  ASSERT_TRUE(WriteFileString(
1335a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      kTestDir + "/etc/lsb-release",
1345a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
1355a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
1365a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_TRACK=footrack"));
1375a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  OmahaRequestParams out;
1385a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
1395a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("Chrome OS", out.os_platform);
1405a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ(string("_") + GetMachineType(), out.os_sp);
1415a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("arm-generic", out.os_board);
1425a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
1435a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("", out.app_version);
1445a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("en-US", out.app_lang);
1455a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(out.delta_okay);
1465a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("footrack", out.app_track);
1475a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov}
1485a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov
1495a7f565a542196f24eb87ddac96508f8a84e3329Darin PetkovTEST_F(OmahaRequestDeviceParamsTest, ForceVersionTest) {
1505a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  ASSERT_TRUE(WriteFileString(
1515a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      kTestDir + "/etc/lsb-release",
1525a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
1535a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
1545a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_TRACK=footrack"));
1555a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  OmahaRequestParams out;
1565a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(DoTest(&out, "ForcedVersion", ""));
1575a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("Chrome OS", out.os_platform);
1585a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ(string("ForcedVersion_") + GetMachineType(), out.os_sp);
1595a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("arm-generic", out.os_board);
1605a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
1615a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("ForcedVersion", out.app_version);
1625a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("en-US", out.app_lang);
1635a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(out.delta_okay);
1645a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("footrack", out.app_track);
1655a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov}
1665a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov
1675a7f565a542196f24eb87ddac96508f8a84e3329Darin PetkovTEST_F(OmahaRequestDeviceParamsTest, ForcedURLTest) {
1685a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  ASSERT_TRUE(WriteFileString(
1695a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      kTestDir + "/etc/lsb-release",
1705a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
1715a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
1725a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
1735a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_TRACK=footrack"));
1745a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  OmahaRequestParams out;
1755a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(DoTest(&out, "", "http://forced.google.com"));
1765a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("Chrome OS", out.os_platform);
1775a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp);
1785a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("arm-generic", out.os_board);
1795a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
1805a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("0.2.2.3", out.app_version);
1815a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("en-US", out.app_lang);
1825a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(out.delta_okay);
1835a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("footrack", out.app_track);
1845a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("http://forced.google.com", out.update_url);
1855a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov}
1865a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov
1875a7f565a542196f24eb87ddac96508f8a84e3329Darin PetkovTEST_F(OmahaRequestDeviceParamsTest, MissingURLTest) {
1885a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  ASSERT_TRUE(WriteFileString(
1895a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      kTestDir + "/etc/lsb-release",
1905a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
1915a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
1925a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
1935a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov      "CHROMEOS_RELEASE_TRACK=footrack"));
1945a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  OmahaRequestParams out;
1955a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
1965a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("Chrome OS", out.os_platform);
1975a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp);
1985a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("arm-generic", out.os_board);
1995a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
2005a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("0.2.2.3", out.app_version);
2015a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("en-US", out.app_lang);
2025a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(out.delta_okay);
2035a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ("footrack", out.app_track);
2045a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_EQ(OmahaRequestParams::kUpdateUrl, out.update_url);
205970bb28905b44bf9f2cb986bb412ecda1095b0b1Andrew de los Reyes}
206970bb28905b44bf9f2cb986bb412ecda1095b0b1Andrew de los Reyes
2073f0303aa211e2de2d466cef063ff6f39fffe32ddAndrew de los ReyesTEST_F(OmahaRequestDeviceParamsTest, NoDeltasTest) {
2083f0303aa211e2de2d466cef063ff6f39fffe32ddAndrew de los Reyes  ASSERT_TRUE(WriteFileString(
2093f0303aa211e2de2d466cef063ff6f39fffe32ddAndrew de los Reyes      kTestDir + "/etc/lsb-release",
2103f0303aa211e2de2d466cef063ff6f39fffe32ddAndrew de los Reyes      "CHROMEOS_RELEASE_FOO=CHROMEOS_RELEASE_VERSION=1.2.3.4\n"
2113f0303aa211e2de2d466cef063ff6f39fffe32ddAndrew de los Reyes      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
2123f0303aa211e2de2d466cef063ff6f39fffe32ddAndrew de los Reyes      "CHROMEOS_RELEASE_TRXCK=footrack"));
2133f0303aa211e2de2d466cef063ff6f39fffe32ddAndrew de los Reyes  ASSERT_TRUE(WriteFileString(kTestDir + "/.nodelta", ""));
2143f0303aa211e2de2d466cef063ff6f39fffe32ddAndrew de los Reyes  OmahaRequestParams out;
2155a7f565a542196f24eb87ddac96508f8a84e3329Darin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
2163f0303aa211e2de2d466cef063ff6f39fffe32ddAndrew de los Reyes  EXPECT_FALSE(out.delta_okay);
2173f0303aa211e2de2d466cef063ff6f39fffe32ddAndrew de los Reyes}
2183f0303aa211e2de2d466cef063ff6f39fffe32ddAndrew de los Reyes
219fbb40098314ab45efa60667ad7ccae354c4f18daDarin PetkovTEST_F(OmahaRequestDeviceParamsTest, HardwareClassTest) {
220fbb40098314ab45efa60667ad7ccae354c4f18daDarin Petkov  string test_class = " \t sample hardware class \n ";
221fbb40098314ab45efa60667ad7ccae354c4f18daDarin Petkov  FilePath hwid_path(kTestDir + "/sys/devices/platform/chromeos_acpi/HWID");
222fbb40098314ab45efa60667ad7ccae354c4f18daDarin Petkov  ASSERT_TRUE(file_util::CreateDirectory(hwid_path.DirName()));
223fbb40098314ab45efa60667ad7ccae354c4f18daDarin Petkov  ASSERT_EQ(test_class.size(),
224fbb40098314ab45efa60667ad7ccae354c4f18daDarin Petkov            file_util::WriteFile(hwid_path,
225fbb40098314ab45efa60667ad7ccae354c4f18daDarin Petkov                                 test_class.data(),
226fbb40098314ab45efa60667ad7ccae354c4f18daDarin Petkov                                 test_class.size()));
227fbb40098314ab45efa60667ad7ccae354c4f18daDarin Petkov  OmahaRequestParams out;
228fbb40098314ab45efa60667ad7ccae354c4f18daDarin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
229fbb40098314ab45efa60667ad7ccae354c4f18daDarin Petkov  EXPECT_EQ("sample hardware class", out.hardware_class);
230fbb40098314ab45efa60667ad7ccae354c4f18daDarin Petkov}
231fbb40098314ab45efa60667ad7ccae354c4f18daDarin Petkov
23249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin PetkovTEST_F(OmahaRequestDeviceParamsTest, OverrideTest) {
23349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  ASSERT_TRUE(WriteFileString(
23449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      kTestDir + "/etc/lsb-release",
23549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
23649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
23749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
23849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_TRACK=footrack\n"
23949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
24049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  ASSERT_TRUE(WriteFileString(
24149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      kTestDir + utils::kStatefulPartition + "/etc/lsb-release",
24249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_BOARD=x86-generic\n"
24349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_TRACK=bartrack\n"
24449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
24549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  OmahaRequestParams out;
24649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
24749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("Chrome OS", out.os_platform);
24849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp);
24949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("x86-generic", out.os_board);
25049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
25149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("0.2.2.3", out.app_version);
25249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("en-US", out.app_lang);
25349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("", out.hardware_class);
25449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(out.delta_okay);
25549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("bartrack", out.app_track);
25649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("http://www.google.com", out.update_url);
25749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov}
25849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov
25949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin PetkovTEST_F(OmahaRequestDeviceParamsTest, SetTrackSimpleTest) {
26049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  ASSERT_TRUE(WriteFileString(
26149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      kTestDir + "/etc/lsb-release",
26249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
26349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
26449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
26549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_TRACK=footrack\n"
26649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
26749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  {
26849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov    OmahaRequestDeviceParams params;
26949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov    params.set_root(string("./") + kTestDir);
27049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov    params.SetBuildTypeOfficial(false);
27149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov    EXPECT_TRUE(params.Init("", ""));
27249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov    params.SetTrack("zootrack");
27349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  }
27449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  OmahaRequestParams out;
27549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
27649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("arm-generic", out.os_board);
27749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("zootrack", out.app_track);
27849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov}
27949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov
28049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin PetkovTEST_F(OmahaRequestDeviceParamsTest, SetTrackPreserveTest) {
28149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  ASSERT_TRUE(WriteFileString(
28249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      kTestDir + "/etc/lsb-release",
28349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
28449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
28549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
28649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_TRACK=footrack\n"
28749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
28849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  ASSERT_TRUE(WriteFileString(
28949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      kTestDir + utils::kStatefulPartition + "/etc/lsb-release",
29049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_BOARD=x86-generic\n"
29149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_TRACK=bartrack"));
29249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  {
29349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov    OmahaRequestDeviceParams params;
29449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov    params.set_root(string("./") + kTestDir);
29549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov    params.SetBuildTypeOfficial(false);
29649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov    EXPECT_TRUE(params.Init("", ""));
29749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov    params.SetTrack("zootrack");
29849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  }
29949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  OmahaRequestParams out;
30049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
30149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("x86-generic", out.os_board);
30249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("zootrack", out.app_track);
30349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov}
30449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov
30549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin PetkovTEST_F(OmahaRequestDeviceParamsTest, SetTrackInvalidTest) {
30649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  ASSERT_TRUE(WriteFileString(
30749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      kTestDir + "/etc/lsb-release",
30849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
30949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
31049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
31149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_TRACK=footrack\n"
31249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
31349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  {
31449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov    OmahaRequestDeviceParams params;
31549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov    params.set_root(string("./") + kTestDir);
31649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov    params.SetBuildTypeOfficial(true);
31749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov    EXPECT_TRUE(params.Init("", ""));
31849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov    params.SetTrack("zootrack");
31949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  }
32049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  OmahaRequestParams out;
32149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
32249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("arm-generic", out.os_board);
32349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("footrack", out.app_track);
32449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov}
32549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov
32649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin PetkovTEST_F(OmahaRequestDeviceParamsTest, IsValidTrackTest) {
32749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  params_.SetBuildTypeOfficial(true);
32849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(params_.IsValidTrack("beta-channel"));
32949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(params_.IsValidTrack("dev-channel"));
33049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_FALSE(params_.IsValidTrack("some-channel"));
33149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_FALSE(params_.IsValidTrack(""));
33249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  params_.SetBuildTypeOfficial(false);
33349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(params_.IsValidTrack("beta-channel"));
33449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(params_.IsValidTrack("dev-channel"));
33549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(params_.IsValidTrack("some-channel"));
33649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(params_.IsValidTrack(""));
33749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov}
33849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov
33949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin PetkovTEST_F(OmahaRequestDeviceParamsTest, InvalidTrackTest) {
34049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  ASSERT_TRUE(WriteFileString(
34149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      kTestDir + "/etc/lsb-release",
34249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
34349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
34449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
34549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_TRACK=footrack\n"
34649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
34749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  params_.SetBuildTypeOfficial(true);
34849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  OmahaRequestParams out;
34949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
35049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("Chrome OS", out.os_platform);
35149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp);
35249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("arm-generic", out.os_board);
35349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
35449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("0.2.2.3", out.app_version);
35549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("en-US", out.app_lang);
35649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("", out.hardware_class);
35749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(out.delta_okay);
35849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("", out.app_track);
35949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("http://www.google.com", out.update_url);
36049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov}
36149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov
36249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin PetkovTEST_F(OmahaRequestDeviceParamsTest, ValidTrackTest) {
36349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  ASSERT_TRUE(WriteFileString(
36449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      kTestDir + "/etc/lsb-release",
36549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_BOARD=arm-generic\n"
36649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_FOO=bar\n"
36749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_VERSION=0.2.2.3\n"
36849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_RELEASE_TRACK=dev-channel\n"
36949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov      "CHROMEOS_AUSERVER=http://www.google.com"));
37049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  params_.SetBuildTypeOfficial(true);
37149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  OmahaRequestParams out;
37249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(DoTest(&out, "", ""));
37349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("Chrome OS", out.os_platform);
37449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp);
37549d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("arm-generic", out.os_board);
37649d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id);
37749d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("0.2.2.3", out.app_version);
37849d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("en-US", out.app_lang);
37949d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("", out.hardware_class);
38049d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_TRUE(out.delta_okay);
38149d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("dev-channel", out.app_track);
38249d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov  EXPECT_EQ("http://www.google.com", out.update_url);
38349d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov}
38449d91329a3a84d7e2b35f6e1ffc8a9b4d478515bDarin Petkov
3853defe6acb3609e70e851a6eff062577d25a2af9dadlr@google.com}  // namespace chromeos_update_engine
386