| // Copyright 2022 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <string> |
| |
| #include <gtest/gtest.h> |
| |
| #include "cryptohome/auth_factor/auth_factor_label.h" |
| |
| namespace cryptohome { |
| |
| TEST(AuthFactorLabelTest, Valid) { |
| EXPECT_TRUE(IsValidAuthFactorLabel("foo")); |
| EXPECT_TRUE(IsValidAuthFactorLabel("BaR")); |
| EXPECT_TRUE(IsValidAuthFactorLabel("123")); |
| EXPECT_TRUE(IsValidAuthFactorLabel("foo123")); |
| EXPECT_TRUE(IsValidAuthFactorLabel("foo-123")); |
| EXPECT_TRUE(IsValidAuthFactorLabel("FOO_123")); |
| } |
| |
| TEST(AuthFactorLabelTest, Invalid) { |
| EXPECT_FALSE(IsValidAuthFactorLabel("")); |
| EXPECT_FALSE(IsValidAuthFactorLabel(".")); |
| EXPECT_FALSE(IsValidAuthFactorLabel("a.b")); |
| EXPECT_FALSE(IsValidAuthFactorLabel("a/b")); |
| EXPECT_FALSE(IsValidAuthFactorLabel("a\\b")); |
| EXPECT_FALSE(IsValidAuthFactorLabel("a b")); |
| EXPECT_FALSE(IsValidAuthFactorLabel(std::string(1, '\0'))); |
| EXPECT_FALSE(IsValidAuthFactorLabel("\1")); |
| EXPECT_FALSE(IsValidAuthFactorLabel("\n")); |
| EXPECT_FALSE(IsValidAuthFactorLabel("\xFF")); |
| EXPECT_FALSE(IsValidAuthFactorLabel("\xFF")); |
| EXPECT_FALSE(IsValidAuthFactorLabel("\U0001f34c")); |
| } |
| |
| TEST(AuthFactorLabelTest, ExcessivelyLong) { |
| const int kExcessiveLabelLength = 1000 * 1000; |
| EXPECT_FALSE(IsValidAuthFactorLabel(std::string(kExcessiveLabelLength, 'a'))); |
| } |
| |
| } // namespace cryptohome |