15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// found in the LICENSE file. 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "chrome/browser/chromeos/login/hwid_checker.h" 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace chromeos { 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)TEST(HWIDCheckerTest, EmptyHWID) { 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("")); 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)TEST(HWIDCheckerTest, HWIDv2) { 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EXPECT_TRUE(IsHWIDCorrect("SOME DATA 7861")); 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SOME DATA 7861 ")); 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SOME DATA 786 1")); 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SOME DATA 786")); 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SOME DATA7861")); 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)TEST(HWIDCheckerTest, ExceptionalHWID) { 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EXPECT_TRUE(IsHWIDCorrect("SPRING A7N3-BJKQ-E")); 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EXPECT_TRUE(IsHWIDCorrect("SPRING A7N3-BJKK-3K")); 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EXPECT_TRUE(IsHWIDCorrect("SPRING A7N3-BJKK-2GI")); 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EXPECT_TRUE(IsHWIDCorrect("SPRING A7N3-BJKK-2MRO")); 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EXPECT_TRUE(IsHWIDCorrect("SPRING A7N3-BJKK-2MDG-V")); 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EXPECT_TRUE(IsHWIDCorrect("SPRING DAKB-NM")); 315267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) EXPECT_TRUE(IsHWIDCorrect("FALCO APOM-3")); 325267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Not exceptions. 345267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SPRING 3A7N-BJKZ-F")); 355267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SPRING LA7N-BJK7-H")); 365267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("FALCO BPO6-C")); 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 383464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch // Degenerate cases. 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SPRING")); 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SPRING ")); 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SPRING KD")); 425267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SPRING T7")); 435267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 445267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // No board name. 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect(" CA7N-BJKV-T")); 465267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("CA7N-BJKH-S")); 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 485267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // Excess fields. 4906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SPRING WINTER CA7N-BJK7-T")); 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SPRING CA7N-BJKN-D WINTER")); 5106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) 5206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) // Incorrect BOM format. 5306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SPRING CA7-NBJK-YO")); 5406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SPRING CA-7NBJ-KYO")); 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SPRING -CA7N-BJKY-O")); 5606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SPRING CA7N-BJKK-FS-UN")); 573464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch 585267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // Incorrect characters. 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SPRING CA9N-BJKL-P")); 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SPRING CA7N-B0KT-S")); 615267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SPrING CA7N-BJKH-W")); 625267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Random changes. 643464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch EXPECT_FALSE(IsHWIDCorrect("SPRUNG CA7N-BJKY-O")); 655267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SPRING CA7N-8JKY-O")); 665267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SPRING CA7N-BJSY-O")); 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SPRINGS CA7N-BJKY-O")); 685267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SPRING CA7N-BJKM-L")); 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EXPECT_FALSE(IsHWIDCorrect("SPRINGXCA7N-BJKZ-F")); 705267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)} 71 72TEST(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 115TEST(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