Home | History | Annotate | Download | only in login
      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