| // Copyright 2020 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. |
| |
| // Unit tests for UserSession. |
| |
| #include "cryptohome/user_session.h" |
| |
| #include <brillo/secure_blob.h> |
| #include <gtest/gtest.h> |
| #include <string> |
| |
| #include "cryptohome/credentials.h" |
| #include "cryptohome/cryptolib.h" |
| #include "cryptohome/mock_platform.h" |
| |
| using brillo::SecureBlob; |
| |
| namespace cryptohome { |
| |
| class UserSessionTest : public ::testing::Test { |
| public: |
| UserSessionTest() : salt() {} |
| virtual ~UserSessionTest() {} |
| |
| void SetUp() { |
| salt.resize(16); |
| CryptoLib::GetSecureRandom(salt.data(), salt.size()); |
| } |
| |
| protected: |
| SecureBlob salt; |
| |
| private: |
| DISALLOW_COPY_AND_ASSIGN(UserSessionTest); |
| }; |
| |
| TEST_F(UserSessionTest, VerifyUser) { |
| Credentials credentials("username", SecureBlob("password")); |
| scoped_refptr<UserSession> session = new UserSession(salt, nullptr); |
| EXPECT_TRUE(session->SetCredentials(credentials, 0)); |
| |
| EXPECT_TRUE(session->VerifyUser(credentials.GetObfuscatedUsername(salt))); |
| EXPECT_FALSE(session->VerifyUser("other")); |
| } |
| |
| TEST_F(UserSessionTest, VerifyCredentials) { |
| Credentials credentials_1("username", SecureBlob("password")); |
| Credentials credentials_2("username", SecureBlob("password2")); |
| Credentials credentials_3("username2", SecureBlob("password2")); |
| |
| scoped_refptr<UserSession> session = new UserSession(salt, nullptr); |
| EXPECT_TRUE(session->SetCredentials(credentials_1, 0)); |
| EXPECT_TRUE(session->VerifyCredentials(credentials_1)); |
| EXPECT_FALSE(session->VerifyCredentials(credentials_2)); |
| EXPECT_FALSE(session->VerifyCredentials(credentials_3)); |
| |
| EXPECT_TRUE(session->SetCredentials(credentials_2, 0)); |
| EXPECT_FALSE(session->VerifyCredentials(credentials_1)); |
| EXPECT_TRUE(session->VerifyCredentials(credentials_2)); |
| EXPECT_FALSE(session->VerifyCredentials(credentials_3)); |
| |
| EXPECT_TRUE(session->SetCredentials(credentials_3, 0)); |
| EXPECT_FALSE(session->VerifyCredentials(credentials_1)); |
| EXPECT_FALSE(session->VerifyCredentials(credentials_2)); |
| EXPECT_TRUE(session->VerifyCredentials(credentials_3)); |
| } |
| |
| } // namespace cryptohome |