blob: 557473231811b645c5fa10217fe02e0d61a6b1f5 [file] [log] [blame]
// 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