1aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// 2aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Copyright (C) 2012 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// 16f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone 1739910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#include "update_engine/common/hwid_override.h" 18f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone 19f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone#include <string> 20f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone 2175039d7397f03dff77bdf4e26398049ff88edc4cAlex Vakulenko#include <base/files/file_path.h> 2206c76a49bfd29c8abdb8abd5b646a6583783191aBen Chan#include <base/files/file_util.h> 23f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone#include <base/files/scoped_temp_dir.h> 24f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone#include <gtest/gtest.h> 25f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone 26f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masonenamespace chromeos_update_engine { 27f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone 28f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masoneclass HwidOverrideTest : public ::testing::Test { 29f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone public: 30f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone HwidOverrideTest() {} 31610277efc6f7e5239158dfa4bb3b1021804326e0Alex Deymo ~HwidOverrideTest() override = default; 32f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone 33610277efc6f7e5239158dfa4bb3b1021804326e0Alex Deymo void SetUp() override { 34f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone ASSERT_TRUE(tempdir_.CreateUniqueTempDir()); 35a78ddf883fe270dfd44ca030dd79eebf4ce22179Jay Civelli ASSERT_TRUE(base::CreateDirectory(tempdir_.GetPath().Append("etc"))); 36f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone } 37f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone 38f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone protected: 39f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone base::ScopedTempDir tempdir_; 40f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone 41f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone private: 42f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone DISALLOW_COPY_AND_ASSIGN(HwidOverrideTest); 43f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone}; 44f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone 45f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris MasoneTEST_F(HwidOverrideTest, ReadGood) { 46f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone std::string expected_hwid("expected"); 47f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone std::string keyval(HwidOverride::kHwidOverrideKey); 48f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone keyval += ("=" + expected_hwid); 49a78ddf883fe270dfd44ca030dd79eebf4ce22179Jay Civelli ASSERT_EQ(base::WriteFile(tempdir_.GetPath().Append("etc/lsb-release"), 50a78ddf883fe270dfd44ca030dd79eebf4ce22179Jay Civelli keyval.c_str(), 51a78ddf883fe270dfd44ca030dd79eebf4ce22179Jay Civelli keyval.length()), 5280f70ff45f8ea9a679c0c3ed0dc143dd2fe2b63eAlex Deymo static_cast<int>(keyval.length())); 53a78ddf883fe270dfd44ca030dd79eebf4ce22179Jay Civelli EXPECT_EQ(expected_hwid, HwidOverride::Read(tempdir_.GetPath())); 54f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone} 55f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone 56f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris MasoneTEST_F(HwidOverrideTest, ReadNothing) { 57f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone std::string keyval("SOMETHING_ELSE=UNINTERESTING"); 58a78ddf883fe270dfd44ca030dd79eebf4ce22179Jay Civelli ASSERT_EQ(base::WriteFile(tempdir_.GetPath().Append("etc/lsb-release"), 59a78ddf883fe270dfd44ca030dd79eebf4ce22179Jay Civelli keyval.c_str(), 60a78ddf883fe270dfd44ca030dd79eebf4ce22179Jay Civelli keyval.length()), 6180f70ff45f8ea9a679c0c3ed0dc143dd2fe2b63eAlex Deymo static_cast<int>(keyval.length())); 62a78ddf883fe270dfd44ca030dd79eebf4ce22179Jay Civelli EXPECT_EQ(std::string(), HwidOverride::Read(tempdir_.GetPath())); 63f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone} 64f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone 65f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris MasoneTEST_F(HwidOverrideTest, ReadFailure) { 66a78ddf883fe270dfd44ca030dd79eebf4ce22179Jay Civelli EXPECT_EQ(std::string(), HwidOverride::Read(tempdir_.GetPath())); 67f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone} 68f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone 69f8d037f5c506770adbe874f0eefa1e5e5abf4140Chris Masone} // namespace chromeos_update_engine 70