blob: ea979396e965e9383fbf7775551dbebae6c0746c [file] [log] [blame] [edit]
// Copyright 2020 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "brillo/cryptohome.h"
#include <algorithm>
#include <numeric>
#include <string>
#include <base/files/file_util.h>
#include <brillo/secure_blob.h>
#include <gtest/gtest.h>
#include "brillo/fake_cryptohome.h"
namespace brillo::cryptohome::home {
namespace {
TEST(Cryptohome, GetUserPath) {
const Username kUsername("fakeuser");
FakeSystemSaltLoader fake_salt("01234567890123456789");
EXPECT_EQ(GetUserPath(kUsername).value(),
"/home/user/856b54169cd5d2d6ca9a4b258ada5e3bee242829");
EXPECT_EQ(GetUserPath(SanitizeUserName(kUsername)).value(),
"/home/user/856b54169cd5d2d6ca9a4b258ada5e3bee242829");
}
TEST(Cryptohome, GetRootPath) {
const Username kUsername("fakeuser");
FakeSystemSaltLoader fake_salt("01234567890123456789");
EXPECT_EQ(GetRootPath(kUsername).value(),
"/home/root/856b54169cd5d2d6ca9a4b258ada5e3bee242829");
EXPECT_EQ(GetRootPath(SanitizeUserName(kUsername)).value(),
"/home/root/856b54169cd5d2d6ca9a4b258ada5e3bee242829");
}
TEST(Cryptohome, GetDaemonStorePath) {
const Username kUsername("fakeuser");
FakeSystemSaltLoader fake_salt("01234567890123456789");
EXPECT_EQ(
GetDaemonStorePath(kUsername, "mydaemon").value(),
"/run/daemon-store/mydaemon/856b54169cd5d2d6ca9a4b258ada5e3bee242829");
EXPECT_EQ(
GetDaemonStorePath(SanitizeUserName(kUsername), "mydaemon").value(),
"/run/daemon-store/mydaemon/856b54169cd5d2d6ca9a4b258ada5e3bee242829");
}
TEST(Cryptohome, SanitizeUsername) {
const Username kUsername("fakeuser");
FakeSystemSaltLoader fake_salt("01234567890123456789");
const ObfuscatedUsername kExpected(
"856b54169cd5d2d6ca9a4b258ada5e3bee242829");
EXPECT_EQ(SanitizeUserName(kUsername), kExpected);
}
TEST(Cryptohome, SanitizeUsernameWithSalt) {
Username username("fakeuser");
SecureBlob salt = SecureBlob("01234567890123456789");
const ObfuscatedUsername kExpected(
"856b54169cd5d2d6ca9a4b258ada5e3bee242829");
EXPECT_EQ(kExpected, SanitizeUserNameWithSalt(username, salt));
}
TEST(Cryptohome, SanitizeUsernameWithSaltMixedCase) {
Username username("fakeuser");
SecureBlob salt = SecureBlob("01234567890123456789");
const ObfuscatedUsername kExpected(
"856b54169cd5d2d6ca9a4b258ada5e3bee242829");
EXPECT_EQ(kExpected, SanitizeUserNameWithSalt(username, salt));
}
TEST(Cryptohome, FakeSystemSaltLoader) {
constexpr char kSalt[] = "some-salt";
FakeSystemSaltLoader fake_salt(kSalt);
EXPECT_EQ(SystemSaltLoader::GetInstance(), &fake_salt);
}
TEST(Cryptohome, FakeSystemSaltLoaderString) {
constexpr char kSalt[] = "some-salt";
FakeSystemSaltLoader fake_salt(kSalt);
EXPECT_EQ(fake_salt.value(), kSalt);
EXPECT_TRUE(fake_salt.EnsureLoaded());
EXPECT_EQ(fake_salt.value(), kSalt);
}
TEST(Cryptohome, FakeSystemSaltLoaderPath) {
constexpr char kSalt[] = "some-salt";
base::FilePath file_path;
ASSERT_TRUE(base::CreateTemporaryFile(&file_path));
FakeSystemSaltLoader fake_salt(file_path);
EXPECT_TRUE(base::WriteFile(file_path, kSalt));
EXPECT_TRUE(fake_salt.EnsureLoaded());
EXPECT_EQ(fake_salt.value(), kSalt);
}
} // namespace
} // namespace brillo::cryptohome::home