1*5a923131SAndroid Build Coastguard Worker //
2*5a923131SAndroid Build Coastguard Worker // Copyright (C) 2012 The Android Open Source Project
3*5a923131SAndroid Build Coastguard Worker //
4*5a923131SAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License");
5*5a923131SAndroid Build Coastguard Worker // you may not use this file except in compliance with the License.
6*5a923131SAndroid Build Coastguard Worker // You may obtain a copy of the License at
7*5a923131SAndroid Build Coastguard Worker //
8*5a923131SAndroid Build Coastguard Worker // http://www.apache.org/licenses/LICENSE-2.0
9*5a923131SAndroid Build Coastguard Worker //
10*5a923131SAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software
11*5a923131SAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS,
12*5a923131SAndroid Build Coastguard Worker // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*5a923131SAndroid Build Coastguard Worker // See the License for the specific language governing permissions and
14*5a923131SAndroid Build Coastguard Worker // limitations under the License.
15*5a923131SAndroid Build Coastguard Worker //
16*5a923131SAndroid Build Coastguard Worker
17*5a923131SAndroid Build Coastguard Worker #include "update_engine/common/hwid_override.h"
18*5a923131SAndroid Build Coastguard Worker
19*5a923131SAndroid Build Coastguard Worker #include <string>
20*5a923131SAndroid Build Coastguard Worker
21*5a923131SAndroid Build Coastguard Worker #include <base/files/file_path.h>
22*5a923131SAndroid Build Coastguard Worker #include <base/files/file_util.h>
23*5a923131SAndroid Build Coastguard Worker #include <base/files/scoped_temp_dir.h>
24*5a923131SAndroid Build Coastguard Worker #include <gtest/gtest.h>
25*5a923131SAndroid Build Coastguard Worker
26*5a923131SAndroid Build Coastguard Worker namespace chromeos_update_engine {
27*5a923131SAndroid Build Coastguard Worker
28*5a923131SAndroid Build Coastguard Worker class HwidOverrideTest : public ::testing::Test {
29*5a923131SAndroid Build Coastguard Worker public:
HwidOverrideTest()30*5a923131SAndroid Build Coastguard Worker HwidOverrideTest() {}
31*5a923131SAndroid Build Coastguard Worker ~HwidOverrideTest() override = default;
32*5a923131SAndroid Build Coastguard Worker
SetUp()33*5a923131SAndroid Build Coastguard Worker void SetUp() override {
34*5a923131SAndroid Build Coastguard Worker ASSERT_TRUE(tempdir_.CreateUniqueTempDir());
35*5a923131SAndroid Build Coastguard Worker ASSERT_TRUE(base::CreateDirectory(tempdir_.GetPath().Append("etc")));
36*5a923131SAndroid Build Coastguard Worker }
37*5a923131SAndroid Build Coastguard Worker
38*5a923131SAndroid Build Coastguard Worker protected:
39*5a923131SAndroid Build Coastguard Worker base::ScopedTempDir tempdir_;
40*5a923131SAndroid Build Coastguard Worker
41*5a923131SAndroid Build Coastguard Worker private:
42*5a923131SAndroid Build Coastguard Worker DISALLOW_COPY_AND_ASSIGN(HwidOverrideTest);
43*5a923131SAndroid Build Coastguard Worker };
44*5a923131SAndroid Build Coastguard Worker
TEST_F(HwidOverrideTest,ReadGood)45*5a923131SAndroid Build Coastguard Worker TEST_F(HwidOverrideTest, ReadGood) {
46*5a923131SAndroid Build Coastguard Worker std::string expected_hwid("expected");
47*5a923131SAndroid Build Coastguard Worker std::string keyval(HwidOverride::kHwidOverrideKey);
48*5a923131SAndroid Build Coastguard Worker keyval += ("=" + expected_hwid);
49*5a923131SAndroid Build Coastguard Worker ASSERT_EQ(base::WriteFile(tempdir_.GetPath().Append("etc/lsb-release"),
50*5a923131SAndroid Build Coastguard Worker keyval.c_str(),
51*5a923131SAndroid Build Coastguard Worker keyval.length()),
52*5a923131SAndroid Build Coastguard Worker static_cast<int>(keyval.length()));
53*5a923131SAndroid Build Coastguard Worker EXPECT_EQ(expected_hwid, HwidOverride::Read(tempdir_.GetPath()));
54*5a923131SAndroid Build Coastguard Worker }
55*5a923131SAndroid Build Coastguard Worker
TEST_F(HwidOverrideTest,ReadNothing)56*5a923131SAndroid Build Coastguard Worker TEST_F(HwidOverrideTest, ReadNothing) {
57*5a923131SAndroid Build Coastguard Worker std::string keyval("SOMETHING_ELSE=UNINTERESTING");
58*5a923131SAndroid Build Coastguard Worker ASSERT_EQ(base::WriteFile(tempdir_.GetPath().Append("etc/lsb-release"),
59*5a923131SAndroid Build Coastguard Worker keyval.c_str(),
60*5a923131SAndroid Build Coastguard Worker keyval.length()),
61*5a923131SAndroid Build Coastguard Worker static_cast<int>(keyval.length()));
62*5a923131SAndroid Build Coastguard Worker EXPECT_EQ(std::string(), HwidOverride::Read(tempdir_.GetPath()));
63*5a923131SAndroid Build Coastguard Worker }
64*5a923131SAndroid Build Coastguard Worker
TEST_F(HwidOverrideTest,ReadFailure)65*5a923131SAndroid Build Coastguard Worker TEST_F(HwidOverrideTest, ReadFailure) {
66*5a923131SAndroid Build Coastguard Worker EXPECT_EQ(std::string(), HwidOverride::Read(tempdir_.GetPath()));
67*5a923131SAndroid Build Coastguard Worker }
68*5a923131SAndroid Build Coastguard Worker
69*5a923131SAndroid Build Coastguard Worker } // namespace chromeos_update_engine
70