| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/chromeos/login/hwid_checker.h" |
| 5 #include "base/sys_info.h" | 6 #include "base/sys_info.h" |
| 6 #include "base/test/scoped_command_line.h" | 7 #include "base/test/scoped_command_line.h" |
| 7 #include "base/time/time.h" | 8 #include "base/time/time.h" |
| 8 #include "chrome/browser/chromeos/login/hwid_checker.h" | 9 #include "chrome/browser/chromeos/scoped_set_running_on_chromeos_for_testing.h" |
| 9 #include "chromeos/system/fake_statistics_provider.h" | 10 #include "chromeos/system/fake_statistics_provider.h" |
| 10 #include "content/public/common/content_switches.h" | 11 #include "content/public/common/content_switches.h" |
| 11 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
| 12 | 13 |
| 13 | |
| 14 namespace chromeos { | 14 namespace chromeos { |
| 15 | 15 |
| 16 TEST(HWIDCheckerTest, EmptyHWID) { | 16 TEST(HWIDCheckerTest, EmptyHWID) { |
| 17 EXPECT_FALSE(IsHWIDCorrect("")); | 17 EXPECT_FALSE(IsHWIDCorrect("")); |
| 18 } | 18 } |
| 19 | 19 |
| 20 TEST(HWIDCheckerTest, HWIDv2) { | 20 TEST(HWIDCheckerTest, HWIDv2) { |
| 21 EXPECT_TRUE(IsHWIDCorrect("SOME DATA 7861")); | 21 EXPECT_TRUE(IsHWIDCorrect("SOME DATA 7861")); |
| 22 EXPECT_FALSE(IsHWIDCorrect("SOME DATA 7861 ")); | 22 EXPECT_FALSE(IsHWIDCorrect("SOME DATA 7861 ")); |
| 23 EXPECT_FALSE(IsHWIDCorrect("SOME DATA 786 1")); | 23 EXPECT_FALSE(IsHWIDCorrect("SOME DATA 786 1")); |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 EXPECT_FALSE(IsHWIDCorrect("DELL HORIZ0N MAGENTA 8992")); | 121 EXPECT_FALSE(IsHWIDCorrect("DELL HORIZ0N MAGENTA 8992")); |
| 122 | 122 |
| 123 EXPECT_TRUE(IsHWIDCorrect("DELL HORIZON MAGENTA DVT 4770")); | 123 EXPECT_TRUE(IsHWIDCorrect("DELL HORIZON MAGENTA DVT 4770")); |
| 124 EXPECT_FALSE(IsHWIDCorrect("DELL MAGENTA HORIZON DVT 4770")); | 124 EXPECT_FALSE(IsHWIDCorrect("DELL MAGENTA HORIZON DVT 4770")); |
| 125 | 125 |
| 126 EXPECT_TRUE(IsHWIDCorrect("SAMS ALEX GAMMA DVT 9247")); | 126 EXPECT_TRUE(IsHWIDCorrect("SAMS ALEX GAMMA DVT 9247")); |
| 127 EXPECT_FALSE(IsHWIDCorrect("SAMS ALPX GAMMA DVT 9247")); | 127 EXPECT_FALSE(IsHWIDCorrect("SAMS ALPX GAMMA DVT 9247")); |
| 128 } | 128 } |
| 129 | 129 |
| 130 #if defined(GOOGLE_CHROME_BUILD) | 130 #if defined(GOOGLE_CHROME_BUILD) |
| 131 | 131 const char kLsbRelease[] = |
| 132 // Sets a valid Chrome OS version info so IsRunningOnChromeOS() returns true. | 132 "CHROMEOS_RELEASE_NAME=Chrome OS\n" |
| 133 void SetRunningOnChromeOS() { | 133 "CHROMEOS_RELEASE_VERSION=1.2.3.4\n"; |
| 134 const char kLsbRelease[] = | |
| 135 "CHROMEOS_RELEASE_NAME=Chrome OS\n" | |
| 136 "CHROMEOS_RELEASE_VERSION=1.2.3.4\n"; | |
| 137 base::SysInfo::SetChromeOSVersionInfoForTest(kLsbRelease, base::Time()); | |
| 138 } | |
| 139 | 134 |
| 140 // Test logic for command line "test-type" switch. | 135 // Test logic for command line "test-type" switch. |
| 141 TEST(MachineHWIDCheckerTest, TestSwitch) { | 136 TEST(MachineHWIDCheckerTest, TestSwitch) { |
| 142 // GIVEN test switch is active. | 137 // GIVEN test switch is active. |
| 143 base::test::ScopedCommandLine scoped_command_line; | 138 base::test::ScopedCommandLine scoped_command_line; |
| 144 scoped_command_line.GetProcessCommandLine()->AppendSwitch( | 139 scoped_command_line.GetProcessCommandLine()->AppendSwitch( |
| 145 ::switches::kTestType); | 140 ::switches::kTestType); |
| 146 | 141 |
| 147 // THEN IsMachineHWIDCorrect() is always true. | 142 // THEN IsMachineHWIDCorrect() is always true. |
| 148 EXPECT_TRUE(IsMachineHWIDCorrect()); | 143 EXPECT_TRUE(IsMachineHWIDCorrect()); |
| 149 SetRunningOnChromeOS(); | 144 ScopedSetRunningOnChromeOSForTesting fake_release(kLsbRelease, base::Time()); |
| 150 EXPECT_TRUE(IsMachineHWIDCorrect()); | 145 EXPECT_TRUE(IsMachineHWIDCorrect()); |
| 151 | 146 |
| 152 system::ScopedFakeStatisticsProvider fake_statistics_provider; | 147 system::ScopedFakeStatisticsProvider fake_statistics_provider; |
| 153 fake_statistics_provider.SetMachineStatistic(system::kHardwareClassKey, | 148 fake_statistics_provider.SetMachineStatistic(system::kHardwareClassKey, |
| 154 "INVALID_HWID"); | 149 "INVALID_HWID"); |
| 155 EXPECT_TRUE(IsMachineHWIDCorrect()); | 150 EXPECT_TRUE(IsMachineHWIDCorrect()); |
| 156 fake_statistics_provider.ClearMachineStatistic(system::kHardwareClassKey); | 151 fake_statistics_provider.ClearMachineStatistic(system::kHardwareClassKey); |
| 157 EXPECT_TRUE(IsMachineHWIDCorrect()); | 152 EXPECT_TRUE(IsMachineHWIDCorrect()); |
| 158 } | 153 } |
| 159 | 154 |
| 160 // Test logic when not running on Chrome OS. | 155 // Test logic when not running on Chrome OS. |
| 161 TEST(MachineHWIDCheckerTest, NotOnChromeOS) { | 156 TEST(MachineHWIDCheckerTest, NotOnChromeOS) { |
| 162 // GIVEN the OS is not Chrome OS. | 157 // GIVEN the OS is not Chrome OS. |
| 163 base::SysInfo::SetChromeOSVersionInfoForTest("", base::Time()); | 158 ScopedSetRunningOnChromeOSForTesting fake_release("", base::Time()); |
| 164 | 159 |
| 165 // THEN IsMachineHWIDCorrect() is always true. | 160 // THEN IsMachineHWIDCorrect() is always true. |
| 166 EXPECT_TRUE(IsMachineHWIDCorrect()); | 161 EXPECT_TRUE(IsMachineHWIDCorrect()); |
| 167 | 162 |
| 168 system::ScopedFakeStatisticsProvider fake_statistics_provider; | 163 system::ScopedFakeStatisticsProvider fake_statistics_provider; |
| 169 fake_statistics_provider.SetMachineStatistic(system::kHardwareClassKey, | 164 fake_statistics_provider.SetMachineStatistic(system::kHardwareClassKey, |
| 170 "INVALID_HWID"); | 165 "INVALID_HWID"); |
| 171 EXPECT_TRUE(IsMachineHWIDCorrect()); | 166 EXPECT_TRUE(IsMachineHWIDCorrect()); |
| 172 fake_statistics_provider.ClearMachineStatistic(system::kHardwareClassKey); | 167 fake_statistics_provider.ClearMachineStatistic(system::kHardwareClassKey); |
| 173 EXPECT_TRUE(IsMachineHWIDCorrect()); | 168 EXPECT_TRUE(IsMachineHWIDCorrect()); |
| 174 } | 169 } |
| 175 | 170 |
| 176 // Test logic when running on Chrome OS but the HWID is not present. | 171 // Test logic when running on Chrome OS but the HWID is not present. |
| 177 TEST(MachineHWIDCheckerTest, OnCrosNoHWID) { | 172 TEST(MachineHWIDCheckerTest, OnCrosNoHWID) { |
| 178 // GIVEN the OS is Chrome OS. | 173 // GIVEN the OS is Chrome OS. |
| 179 SetRunningOnChromeOS(); | 174 ScopedSetRunningOnChromeOSForTesting fake_release(kLsbRelease, base::Time()); |
| 180 | 175 |
| 181 // GIVEN the HWID is not present. | 176 // GIVEN the HWID is not present. |
| 182 system::ScopedFakeStatisticsProvider fake_statistics_provider; | 177 system::ScopedFakeStatisticsProvider fake_statistics_provider; |
| 183 fake_statistics_provider.ClearMachineStatistic(system::kHardwareClassKey); | 178 fake_statistics_provider.ClearMachineStatistic(system::kHardwareClassKey); |
| 184 | 179 |
| 185 // WHEN Chrome OS is running in a VM. | 180 // WHEN Chrome OS is running in a VM. |
| 186 fake_statistics_provider.SetMachineStatistic(system::kIsVmKey, | 181 fake_statistics_provider.SetMachineStatistic(system::kIsVmKey, |
| 187 system::kIsVmValueTrue); | 182 system::kIsVmValueTrue); |
| 188 // THEN IsMachineHWIDCorrect() is true. | 183 // THEN IsMachineHWIDCorrect() is true. |
| 189 EXPECT_TRUE(IsMachineHWIDCorrect()); | 184 EXPECT_TRUE(IsMachineHWIDCorrect()); |
| 190 // WHEN Chrome OS is not running in a VM. | 185 // WHEN Chrome OS is not running in a VM. |
| 191 fake_statistics_provider.ClearMachineStatistic(system::kIsVmKey); | 186 fake_statistics_provider.ClearMachineStatistic(system::kIsVmKey); |
| 192 // THEN IsMachineHWIDCorrect() is always false. | 187 // THEN IsMachineHWIDCorrect() is always false. |
| 193 EXPECT_FALSE(IsMachineHWIDCorrect()); | 188 EXPECT_FALSE(IsMachineHWIDCorrect()); |
| 194 fake_statistics_provider.SetMachineStatistic(system::kIsVmKey, | 189 fake_statistics_provider.SetMachineStatistic(system::kIsVmKey, |
| 195 system::kIsVmValueFalse); | 190 system::kIsVmValueFalse); |
| 196 EXPECT_FALSE(IsMachineHWIDCorrect()); | 191 EXPECT_FALSE(IsMachineHWIDCorrect()); |
| 197 } | 192 } |
| 198 | 193 |
| 199 // Test logic when the HWID is valid. | 194 // Test logic when the HWID is valid. |
| 200 TEST(MachineHWIDCheckerTest, ValidHWID) { | 195 TEST(MachineHWIDCheckerTest, ValidHWID) { |
| 201 // GIVEN the HWID is valid. | 196 // GIVEN the HWID is valid. |
| 202 system::ScopedFakeStatisticsProvider fake_statistics_provider; | 197 system::ScopedFakeStatisticsProvider fake_statistics_provider; |
| 203 fake_statistics_provider.SetMachineStatistic(system::kHardwareClassKey, | 198 fake_statistics_provider.SetMachineStatistic(system::kHardwareClassKey, |
| 204 "DELL HORIZON MAGENTA DVT 4770"); | 199 "DELL HORIZON MAGENTA DVT 4770"); |
| 205 | 200 |
| 206 // THEN IsMachineHWIDCorrect() is always true. | 201 // THEN IsMachineHWIDCorrect() is always true. |
| 207 SetRunningOnChromeOS(); | 202 ScopedSetRunningOnChromeOSForTesting fake_release(kLsbRelease, base::Time()); |
| 208 EXPECT_TRUE(IsMachineHWIDCorrect()); | 203 EXPECT_TRUE(IsMachineHWIDCorrect()); |
| 209 fake_statistics_provider.SetMachineStatistic(system::kIsVmKey, | 204 fake_statistics_provider.SetMachineStatistic(system::kIsVmKey, |
| 210 system::kIsVmValueFalse); | 205 system::kIsVmValueFalse); |
| 211 EXPECT_TRUE(IsMachineHWIDCorrect()); | 206 EXPECT_TRUE(IsMachineHWIDCorrect()); |
| 212 fake_statistics_provider.SetMachineStatistic(system::kIsVmKey, | 207 fake_statistics_provider.SetMachineStatistic(system::kIsVmKey, |
| 213 system::kIsVmValueTrue); | 208 system::kIsVmValueTrue); |
| 214 EXPECT_TRUE(IsMachineHWIDCorrect()); | 209 EXPECT_TRUE(IsMachineHWIDCorrect()); |
| 215 } | 210 } |
| 216 | 211 |
| 217 // Test logic when running inside a VM. | 212 // Test logic when running inside a VM. |
| 218 TEST(MachineHWIDCheckerTest, InVM) { | 213 TEST(MachineHWIDCheckerTest, InVM) { |
| 219 // GIVEN kIsVmKey is kIsVmValueTrue. | 214 // GIVEN kIsVmKey is kIsVmValueTrue. |
| 220 system::ScopedFakeStatisticsProvider fake_statistics_provider; | 215 system::ScopedFakeStatisticsProvider fake_statistics_provider; |
| 221 fake_statistics_provider.SetMachineStatistic(system::kIsVmKey, | 216 fake_statistics_provider.SetMachineStatistic(system::kIsVmKey, |
| 222 system::kIsVmValueTrue); | 217 system::kIsVmValueTrue); |
| 223 | 218 |
| 224 // GIVEN the OS is Chrome OS. | 219 // GIVEN the OS is Chrome OS. |
| 225 SetRunningOnChromeOS(); | 220 ScopedSetRunningOnChromeOSForTesting fake_release(kLsbRelease, base::Time()); |
| 226 // THEN IsMachineHWIDCorrect() is always true. | 221 // THEN IsMachineHWIDCorrect() is always true. |
| 227 fake_statistics_provider.SetMachineStatistic(system::kHardwareClassKey, | 222 fake_statistics_provider.SetMachineStatistic(system::kHardwareClassKey, |
| 228 "INVALID_HWID"); | 223 "INVALID_HWID"); |
| 229 EXPECT_TRUE(IsMachineHWIDCorrect()); | 224 EXPECT_TRUE(IsMachineHWIDCorrect()); |
| 230 fake_statistics_provider.SetMachineStatistic(system::kHardwareClassKey, ""); | 225 fake_statistics_provider.SetMachineStatistic(system::kHardwareClassKey, ""); |
| 231 EXPECT_TRUE(IsMachineHWIDCorrect()); | 226 EXPECT_TRUE(IsMachineHWIDCorrect()); |
| 232 fake_statistics_provider.SetMachineStatistic(system::kHardwareClassKey, | 227 fake_statistics_provider.SetMachineStatistic(system::kHardwareClassKey, |
| 233 "DELL HORIZON MAGENTA DVT 4770"); | 228 "DELL HORIZON MAGENTA DVT 4770"); |
| 234 EXPECT_TRUE(IsMachineHWIDCorrect()); | 229 EXPECT_TRUE(IsMachineHWIDCorrect()); |
| 235 fake_statistics_provider.ClearMachineStatistic(system::kHardwareClassKey); | 230 fake_statistics_provider.ClearMachineStatistic(system::kHardwareClassKey); |
| 236 EXPECT_TRUE(IsMachineHWIDCorrect()); | 231 EXPECT_TRUE(IsMachineHWIDCorrect()); |
| 237 } | 232 } |
| 238 | 233 |
| 239 // Test logic when HWID is invalid and we're not in a VM. | 234 // Test logic when HWID is invalid and we're not in a VM. |
| 240 TEST(MachineHWIDCheckerTest, InvalidHWIDInVMNotTrue) { | 235 TEST(MachineHWIDCheckerTest, InvalidHWIDInVMNotTrue) { |
| 241 // GIVEN the OS is Chrome OS. | 236 // GIVEN the OS is Chrome OS. |
| 242 SetRunningOnChromeOS(); | 237 ScopedSetRunningOnChromeOSForTesting fake_release(kLsbRelease, base::Time()); |
| 243 | 238 |
| 244 // GIVEN the HWID is invalid. | 239 // GIVEN the HWID is invalid. |
| 245 system::ScopedFakeStatisticsProvider fake_statistics_provider; | 240 system::ScopedFakeStatisticsProvider fake_statistics_provider; |
| 246 fake_statistics_provider.SetMachineStatistic(system::kHardwareClassKey, | 241 fake_statistics_provider.SetMachineStatistic(system::kHardwareClassKey, |
| 247 "INVALID_HWID"); | 242 "INVALID_HWID"); |
| 248 | 243 |
| 249 // GIVEN kIsVmKey is anything but kIsVmValueTrue. | 244 // GIVEN kIsVmKey is anything but kIsVmValueTrue. |
| 250 // THEN IsMachineHWIDCorrect() is always false. | 245 // THEN IsMachineHWIDCorrect() is always false. |
| 251 fake_statistics_provider.SetMachineStatistic(system::kIsVmKey, | 246 fake_statistics_provider.SetMachineStatistic(system::kIsVmKey, |
| 252 system::kIsVmValueFalse); | 247 system::kIsVmValueFalse); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 267 // Test non-Google Chromium builds. | 262 // Test non-Google Chromium builds. |
| 268 TEST(MachineHWIDCheckerTest, NonGoogleBuild) { | 263 TEST(MachineHWIDCheckerTest, NonGoogleBuild) { |
| 269 // GIVEN this is not a Google build. | 264 // GIVEN this is not a Google build. |
| 270 // THEN IsMachineHWIDCorrect() is always true. | 265 // THEN IsMachineHWIDCorrect() is always true. |
| 271 EXPECT_TRUE(IsMachineHWIDCorrect()); | 266 EXPECT_TRUE(IsMachineHWIDCorrect()); |
| 272 } | 267 } |
| 273 | 268 |
| 274 #endif // defined(GOOGLE_CHROME_BUILD) | 269 #endif // defined(GOOGLE_CHROME_BUILD) |
| 275 } // namespace chromeos | 270 } // namespace chromeos |
| 276 | 271 |
| OLD | NEW |