Hide Config::Load method
Constructor is going to load data instead.
This makes clear that ::Load is one time operations.
Change-Id: Id7b2275544cc034d30737bea21b3d8cc68e4a8a9
Reviewed-on: https://weave-review.googlesource.com/2080
Reviewed-by: Vitaly Buka <vitalybuka@google.com>
diff --git a/include/weave/provider/test/mock_config_store.h b/include/weave/provider/test/mock_config_store.h
index 01e1ef9..3873251 100644
--- a/include/weave/provider/test/mock_config_store.h
+++ b/include/weave/provider/test/mock_config_store.h
@@ -35,7 +35,10 @@
return true;
}));
EXPECT_CALL(*this, LoadSettings())
- .WillRepeatedly(Return(R"({"device_id": "TEST_DEVICE_ID"})"));
+ .WillRepeatedly(Return(R"({
+ "version": 1,
+ "device_id": "TEST_DEVICE_ID"
+ })"));
EXPECT_CALL(*this, SaveSettings(_)).WillRepeatedly(Return());
}
MOCK_METHOD1(LoadDefaults, bool(Settings*));
diff --git a/src/base_api_handler_unittest.cc b/src/base_api_handler_unittest.cc
index 6f8460b..8b0f0b2 100644
--- a/src/base_api_handler_unittest.cc
+++ b/src/base_api_handler_unittest.cc
@@ -54,7 +54,6 @@
.WillRepeatedly(
Invoke(&component_manager_, &ComponentManager::AddCommandHandler));
- config_.Load();
dev_reg_.reset(new DeviceRegistrationInfo(&config_, &component_manager_,
nullptr, &http_client_, nullptr,
nullptr));
diff --git a/src/config.cc b/src/config.cc
index 442a87a..37e907c 100644
--- a/src/config.cc
+++ b/src/config.cc
@@ -85,7 +85,9 @@
: EnumToStringMap(kRootClientTokenOwnerMap) {}
Config::Config(provider::ConfigStore* config_store)
- : settings_{CreateDefaultSettings()}, config_store_{config_store} {}
+ : settings_{CreateDefaultSettings()}, config_store_{config_store} {
+ Load();
+}
void Config::AddOnChangedCallback(const OnChangedCallback& callback) {
on_changed_.push_back(callback);
diff --git a/src/config.h b/src/config.h
index f5a8a77..6dc0a07 100644
--- a/src/config.h
+++ b/src/config.h
@@ -46,8 +46,6 @@
void AddOnChangedCallback(const OnChangedCallback& callback);
const Config::Settings& GetSettings() const;
- void Load();
-
// Allows editing of config. Makes sure that callbacks were called and changes
// were saved.
// User can commit changes by calling Commit method or by destroying the
@@ -120,6 +118,7 @@
};
private:
+ void Load();
void Save();
Settings settings_;
diff --git a/src/config_unittest.cc b/src/config_unittest.cc
index 1491d7b..0367516 100644
--- a/src/config_unittest.cc
+++ b/src/config_unittest.cc
@@ -25,12 +25,16 @@
void SetUp() override {
EXPECT_CALL(*this, OnConfigChanged(_))
.Times(1); // Called from AddOnChangedCallback
- config_.AddOnChangedCallback(
- base::Bind(&ConfigTest::OnConfigChanged, base::Unretained(this)));
- default_.Load();
+ Reload();
}
- const Config::Settings& GetSettings() const { return config_.GetSettings(); }
+ void Reload() {
+ config_.reset(new Config{&config_store_});
+ config_->AddOnChangedCallback(
+ base::Bind(&ConfigTest::OnConfigChanged, base::Unretained(this)));
+ }
+
+ const Config::Settings& GetSettings() const { return config_->GetSettings(); }
const Config::Settings& GetDefaultSettings() const {
return default_.GetSettings();
@@ -39,7 +43,7 @@
MOCK_METHOD1(OnConfigChanged, void(const Settings&));
provider::test::MockConfigStore config_store_;
- Config config_{&config_store_};
+ std::unique_ptr<Config> config_{new Config{nullptr}};
Config default_{&config_store_};
};
@@ -50,6 +54,7 @@
}
TEST_F(ConfigTest, Defaults) {
+ config_.reset(new Config{nullptr});
EXPECT_EQ("", GetSettings().client_id);
EXPECT_EQ("", GetSettings().client_secret);
EXPECT_EQ("", GetSettings().api_key);
@@ -87,7 +92,7 @@
})"));
EXPECT_CALL(*this, OnConfigChanged(_)).Times(1);
- config_.Load();
+ Reload();
EXPECT_EQ("state_device_id", GetSettings().cloud_id);
EXPECT_FALSE(GetSettings().device_id.empty());
@@ -100,7 +105,7 @@
})"));
EXPECT_CALL(*this, OnConfigChanged(_)).Times(1);
- config_.Load();
+ Reload();
EXPECT_EQ("state_cloud_id", GetSettings().cloud_id);
EXPECT_EQ("state_device_id", GetSettings().device_id);
@@ -131,7 +136,7 @@
EXPECT_CALL(config_store_, LoadSettings()).WillOnce(Return(state));
EXPECT_CALL(*this, OnConfigChanged(_)).Times(1);
- config_.Load();
+ Reload();
EXPECT_EQ("state_client_id", GetSettings().client_id);
EXPECT_EQ("state_client_secret", GetSettings().client_secret);
@@ -166,7 +171,7 @@
}
TEST_F(ConfigTest, Setters) {
- Config::Transaction change{&config_};
+ Config::Transaction change{config_.get()};
change.set_client_id("set_client_id");
EXPECT_EQ("set_client_id", GetSettings().client_id);
diff --git a/src/device_manager.cc b/src/device_manager.cc
index ab2e225..67a2c86 100644
--- a/src/device_manager.cc
+++ b/src/device_manager.cc
@@ -30,8 +30,6 @@
provider::Bluetooth* bluetooth)
: config_{new Config{config_store}},
component_manager_{new ComponentManagerImpl} {
- config_->Load();
-
if (http_server) {
auth_manager_.reset(new privet::AuthManager(
config_.get(), http_server->GetHttpsCertificateFingerprint()));
diff --git a/src/device_registration_info_unittest.cc b/src/device_registration_info_unittest.cc
index e21a147..ea81057 100644
--- a/src/device_registration_info_unittest.cc
+++ b/src/device_registration_info_unittest.cc
@@ -126,10 +126,6 @@
void SetUp() override {
EXPECT_CALL(clock_, Now())
.WillRepeatedly(Return(base::Time::FromTimeT(1450000000)));
- dev_reg_.reset(new DeviceRegistrationInfo{&config_, &component_manager_,
- &task_runner_, &http_client_,
- nullptr, &auth_});
-
ReloadDefaults();
}
@@ -150,7 +146,10 @@
settings->service_url = test_data::kServiceURL;
return true;
}));
- config_.Load();
+ config_.reset(new Config{&config_store_});
+ dev_reg_.reset(new DeviceRegistrationInfo{
+ config_.get(), &component_manager_, &task_runner_, &http_client_,
+ nullptr, &auth_});
dev_reg_->Start();
}
@@ -196,7 +195,7 @@
provider::test::MockConfigStore config_store_;
StrictMock<MockHttpClient> http_client_;
base::DictionaryValue data_;
- Config config_{&config_store_};
+ std::unique_ptr<Config> config_;
test::MockClock clock_;
privet::AuthManager auth_{
{68, 52, 36, 95, 74, 89, 25, 2, 31, 5, 65, 87, 64, 32, 17, 26, 8, 73, 57,