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 3 // found in the LICENSE file. 4 5 #include "chrome/browser/chromeos/login/hwid_checker.h" 6 7 #include "testing/gtest/include/gtest/gtest.h" 8 9 10 namespace chromeos { 11 12 TEST(HWIDCheckerTest, EmptyHWID) { 13 EXPECT_FALSE(IsHWIDCorrect("")); 14 } 15 16 TEST(HWIDCheckerTest, HWIDv2) { 17 EXPECT_TRUE(IsHWIDCorrect("SOME DATA 7861")); 18 EXPECT_FALSE(IsHWIDCorrect("SOME DATA 7861 ")); 19 EXPECT_FALSE(IsHWIDCorrect("SOME DATA 786 1")); 20 EXPECT_FALSE(IsHWIDCorrect("SOME DATA 786")); 21 EXPECT_FALSE(IsHWIDCorrect("SOME DATA7861")); 22 } 23 24 TEST(HWIDCheckerTest, ExceptionalHWID) { 25 EXPECT_TRUE(IsHWIDCorrect("SPRING A7N3-BJKQ-E")); 26 EXPECT_TRUE(IsHWIDCorrect("SPRING A7N3-BJKK-3K")); 27 EXPECT_TRUE(IsHWIDCorrect("SPRING A7N3-BJKK-2GI")); 28 EXPECT_TRUE(IsHWIDCorrect("SPRING A7N3-BJKK-2MRO")); 29 EXPECT_TRUE(IsHWIDCorrect("SPRING A7N3-BJKK-2MDG-V")); 30 EXPECT_TRUE(IsHWIDCorrect("SPRING DAKB-NM")); 31 EXPECT_TRUE(IsHWIDCorrect("FALCO APOM-3")); 32 33 // Not exceptions. 34 EXPECT_FALSE(IsHWIDCorrect("SPRING 3A7N-BJKZ-F")); 35 EXPECT_FALSE(IsHWIDCorrect("SPRING LA7N-BJK7-H")); 36 EXPECT_FALSE(IsHWIDCorrect("FALCO BPO6-C")); 37 38 // Degenerate cases. 39 EXPECT_FALSE(IsHWIDCorrect("SPRING")); 40 EXPECT_FALSE(IsHWIDCorrect("SPRING ")); 41 EXPECT_FALSE(IsHWIDCorrect("SPRING KD")); 42 EXPECT_FALSE(IsHWIDCorrect("SPRING T7")); 43 44 // No board name. 45 EXPECT_FALSE(IsHWIDCorrect(" CA7N-BJKV-T")); 46 EXPECT_FALSE(IsHWIDCorrect("CA7N-BJKH-S")); 47 48 // Excess fields. 49 EXPECT_FALSE(IsHWIDCorrect("SPRING WINTER CA7N-BJK7-T")); 50 EXPECT_FALSE(IsHWIDCorrect("SPRING CA7N-BJKN-D WINTER")); 51 52 // Incorrect BOM format. 53 EXPECT_FALSE(IsHWIDCorrect("SPRING CA7-NBJK-YO")); 54 EXPECT_FALSE(IsHWIDCorrect("SPRING CA-7NBJ-KYO")); 55 EXPECT_FALSE(IsHWIDCorrect("SPRING -CA7N-BJKY-O")); 56 EXPECT_FALSE(IsHWIDCorrect("SPRING CA7N-BJKK-FS-UN")); 57 58 // Incorrect characters. 59 EXPECT_FALSE(IsHWIDCorrect("SPRING CA9N-BJKL-P")); 60 EXPECT_FALSE(IsHWIDCorrect("SPRING CA7N-B0KT-S")); 61 EXPECT_FALSE(IsHWIDCorrect("SPrING CA7N-BJKH-W")); 62 63 // Random changes. 64 EXPECT_FALSE(IsHWIDCorrect("SPRUNG CA7N-BJKY-O")); 65 EXPECT_FALSE(IsHWIDCorrect("SPRING CA7N-8JKY-O")); 66 EXPECT_FALSE(IsHWIDCorrect("SPRING CA7N-BJSY-O")); 67 EXPECT_FALSE(IsHWIDCorrect("SPRINGS CA7N-BJKY-O")); 68 EXPECT_FALSE(IsHWIDCorrect("SPRING CA7N-BJKM-L")); 69 EXPECT_FALSE(IsHWIDCorrect("SPRINGXCA7N-BJKZ-F")); 70 } 71 72 TEST(HWIDCheckerTest, HWIDv3) { 73 EXPECT_TRUE(IsHWIDCorrect("SPRING E2B-C3D-E8X")); 74 EXPECT_TRUE(IsHWIDCorrect("SPRING E2B-C3D-E8X-D8J")); 75 EXPECT_TRUE(IsHWIDCorrect("FALCO B67-36Y")); 76 77 // Exceptions. 78 EXPECT_FALSE(IsHWIDCorrect("SPRING D2B-C3D-E5D")); 79 EXPECT_FALSE(IsHWIDCorrect("SPRING A2B-C3D-E8X-D7T")); 80 EXPECT_FALSE(IsHWIDCorrect("FALCO A67-35W")); 81 82 // Degenerate cases. 83 EXPECT_FALSE(IsHWIDCorrect("SPRING")); 84 EXPECT_FALSE(IsHWIDCorrect("SPRING ")); 85 EXPECT_TRUE(IsHWIDCorrect("SPRING Z34")); 86 87 // No board name. 88 EXPECT_FALSE(IsHWIDCorrect(" C7N-J3V-T4J")); 89 EXPECT_FALSE(IsHWIDCorrect("C7N-J3V-T2I")); 90 91 // Excess fields. 92 EXPECT_FALSE(IsHWIDCorrect("SPRING WINTER E2B-C3D-E3K")); 93 EXPECT_FALSE(IsHWIDCorrect("SPRING E2B-C3D-E72 WINTER")); 94 95 // Incorrect BOM format. 96 EXPECT_FALSE(IsHWIDCorrect("SPRING E2BC3D-E8X")); 97 EXPECT_FALSE(IsHWIDCorrect("SPRING E2-B-C3D-E8X")); 98 EXPECT_FALSE(IsHWIDCorrect("SPRING E2B-C3D-E8X-")); 99 EXPECT_FALSE(IsHWIDCorrect("SPRING E2B-C3D-E85-Y")); 100 101 // Incorrect characters. 102 EXPECT_FALSE(IsHWIDCorrect("SPrING E2B-C3D-E3P")); 103 EXPECT_FALSE(IsHWIDCorrect("SPRING EAB-C3D-E7Y")); 104 EXPECT_FALSE(IsHWIDCorrect("SPRING E2B-C1D-E3W")); 105 EXPECT_FALSE(IsHWIDCorrect("SPRING E28-C3D-E7Z")); 106 107 // Random changes. 108 EXPECT_FALSE(IsHWIDCorrect("SPRING E2L-C3D-E8X")); 109 EXPECT_FALSE(IsHWIDCorrect("SPRING E2B-C3D-X8X")); 110 EXPECT_FALSE(IsHWIDCorrect("SPRINGZE2B-C3D-E8X")); 111 EXPECT_FALSE(IsHWIDCorrect("SPRMNG E2B-C3D-E8X")); 112 EXPECT_FALSE(IsHWIDCorrect("SPRING E2B-C3D-EIX")); 113 } 114 115 TEST(HWIDCheckerTest, KnownHWIDs) { 116 EXPECT_TRUE(IsHWIDCorrect("DELL HORIZON MAGENTA 8992")); 117 EXPECT_FALSE(IsHWIDCorrect("DELL HORIZ0N MAGENTA 8992")); 118 119 EXPECT_TRUE(IsHWIDCorrect("DELL HORIZON MAGENTA DVT 4770")); 120 EXPECT_FALSE(IsHWIDCorrect("DELL MAGENTA HORIZON DVT 4770")); 121 122 EXPECT_TRUE(IsHWIDCorrect("SAMS ALEX GAMMA DVT 9247")); 123 EXPECT_FALSE(IsHWIDCorrect("SAMS ALPX GAMMA DVT 9247")); 124 } 125 126 } // namespace chromeos 127 128