blob: 69782496e0305edfd61317e0a84dcefb98f775fe [file] [log] [blame] [edit]
// Copyright 2024 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "modemfwd/prefs.h"
#include <base/files/file_path.h>
#include <base/files/file_util.h>
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <base/files/scoped_temp_dir.h>
using base::FilePath;
using std::string;
namespace modemfwd {
namespace {
const char key1[] = "key1";
const char key2[] = "key2";
const char value1[] = "value1";
const char value2[] = "#$&*^!(($))";
const char sub_prefs_name[] = "subpref";
}; // namespace
class PrefsTest : public testing::Test {
protected:
void SetUp() override {
CHECK(temp_dir_.CreateUniqueTempDir());
prefs_ = Prefs::CreatePrefs(temp_dir_.GetPath());
CHECK(prefs_ != nullptr);
}
protected:
std::unique_ptr<Prefs> prefs_;
base::ScopedTempDir temp_dir_;
};
TEST_F(PrefsTest, SetAndGetKey) {
EXPECT_TRUE(prefs_->SetKey(key1, value1));
EXPECT_TRUE(prefs_->Exists(key1));
EXPECT_TRUE(prefs_->KeyValueMatches(key1, value1));
string actual_value;
EXPECT_TRUE(prefs_->GetKey(key1, &actual_value));
EXPECT_EQ(value1, actual_value);
EXPECT_TRUE(base::PathExists(temp_dir_.GetPath().Append(key1)));
EXPECT_TRUE(prefs_->SetKey(key2, value2));
EXPECT_TRUE(prefs_->Exists(key2));
EXPECT_TRUE(prefs_->KeyValueMatches(key2, value2));
EXPECT_TRUE(prefs_->GetKey(key2, &actual_value));
EXPECT_EQ(value2, actual_value);
EXPECT_TRUE(base::PathExists(temp_dir_.GetPath().Append(key2)));
}
TEST_F(PrefsTest, RepeatedSet) {
EXPECT_TRUE(prefs_->SetKey(key1, value1));
EXPECT_TRUE(prefs_->KeyValueMatches(key1, value1));
string actual_value;
EXPECT_TRUE(prefs_->GetKey(key1, &actual_value));
EXPECT_EQ(value1, actual_value);
EXPECT_TRUE(prefs_->SetKey(key1, value2));
EXPECT_TRUE(prefs_->GetKey(key1, &actual_value));
EXPECT_EQ(value2, actual_value);
EXPECT_TRUE(prefs_->KeyValueMatches(key1, value2));
EXPECT_TRUE(base::PathExists(temp_dir_.GetPath().Append(key1)));
}
TEST_F(PrefsTest, CreateKey) {
EXPECT_TRUE(prefs_->Create(key1));
EXPECT_TRUE(prefs_->Exists(key1));
string actual_value;
EXPECT_TRUE(prefs_->GetKey(key1, &actual_value));
EXPECT_EQ("", actual_value);
}
TEST_F(PrefsTest, CreateSubPrefs) {
auto sub_prefs = Prefs::CreatePrefs(*prefs_, sub_prefs_name);
EXPECT_TRUE(sub_prefs != nullptr);
EXPECT_TRUE(base::PathExists(sub_prefs->GetPrefRootPath()));
EXPECT_EQ(sub_prefs->GetPrefRootPath(),
prefs_->GetPrefRootPath().Append(sub_prefs_name));
}
TEST_F(PrefsTest, SubPrefsSetGetCreateExistKey) {
const auto sub_prefs_path = temp_dir_.GetPath().Append(sub_prefs_name);
auto sub_prefs = Prefs::CreatePrefs(*prefs_, sub_prefs_name);
EXPECT_TRUE(sub_prefs->Create(key1));
EXPECT_TRUE(sub_prefs->Exists(key1));
EXPECT_TRUE(base::PathExists(sub_prefs_path.Append(key1)));
EXPECT_TRUE(sub_prefs->SetKey(key1, value1));
EXPECT_TRUE(sub_prefs->Exists(key1));
string actual_value;
EXPECT_TRUE(sub_prefs->GetKey(key1, &actual_value));
EXPECT_EQ(value1, actual_value);
EXPECT_TRUE(base::PathExists(sub_prefs_path.Append(key1)));
EXPECT_TRUE(sub_prefs->SetKey(key2, value2));
EXPECT_TRUE(sub_prefs->Exists(key2));
EXPECT_TRUE(sub_prefs->GetKey(key2, &actual_value));
EXPECT_EQ(value2, actual_value);
EXPECT_TRUE(base::PathExists(sub_prefs_path.Append(key2)));
}
} // namespace modemfwd