Add config flag to mark that local auth info was changed
libWeave must upload changed local auth info to the server.
BUG=25766813
Change-Id: I3d82e2dab363554b1ed7ad164edbe8fbe04a7b7a
Reviewed-on: https://weave-review.googlesource.com/1801
Reviewed-by: Alex Vakulenko <avakulenko@google.com>
diff --git a/src/config.cc b/src/config.cc
index c20f18d..f0ec963 100644
--- a/src/config.cc
+++ b/src/config.cc
@@ -42,6 +42,7 @@
const char kRobotAccount[] = "robot_account";
const char kLastConfiguredSsid[] = "last_configured_ssid";
const char kSecret[] = "secret";
+const char kLocalAuthInfoChanged[] = "local_auth_info_changed";
} // namespace config_keys
@@ -120,6 +121,7 @@
CHECK(settings_.robot_account.empty());
CHECK(settings_.last_configured_ssid.empty());
CHECK(settings_.secret.empty());
+ CHECK(settings_.local_auth_info_changed);
change.LoadState();
}
@@ -211,6 +213,9 @@
std::vector<uint8_t> secret;
if (dict->GetString(config_keys::kSecret, &tmp) && Base64Decode(tmp, &secret))
set_secret(secret);
+
+ if (dict->GetBoolean(config_keys::kLocalAuthInfoChanged, &tmp_bool))
+ set_local_auth_info_changed(tmp_bool);
}
void Config::Save() {
@@ -232,6 +237,8 @@
dict.SetString(config_keys::kLastConfiguredSsid,
settings_.last_configured_ssid);
dict.SetString(config_keys::kSecret, Base64Encode(settings_.secret));
+ dict.SetBoolean(config_keys::kLocalAuthInfoChanged,
+ settings_.local_auth_info_changed);
dict.SetString(config_keys::kName, settings_.name);
dict.SetString(config_keys::kDescription, settings_.description);
dict.SetString(config_keys::kLocation, settings_.location);
diff --git a/src/config.h b/src/config.h
index bab50ca..fc2568f 100644
--- a/src/config.h
+++ b/src/config.h
@@ -28,6 +28,7 @@
std::string robot_account;
std::string last_configured_ssid;
std::vector<uint8_t> secret;
+ bool local_auth_info_changed{true};
};
using OnChangedCallback = base::Callback<void(const weave::Settings&)>;
@@ -91,6 +92,9 @@
void set_secret(const std::vector<uint8_t>& secret) {
settings_->secret = secret;
}
+ void set_local_auth_info_changed(bool local_auth_info_changed) {
+ settings_->local_auth_info_changed = local_auth_info_changed;
+ }
void Commit();
diff --git a/src/config_unittest.cc b/src/config_unittest.cc
index 67c3bfe..8c99131 100644
--- a/src/config_unittest.cc
+++ b/src/config_unittest.cc
@@ -77,6 +77,7 @@
EXPECT_EQ("", GetSettings().robot_account);
EXPECT_EQ("", GetSettings().last_configured_ssid);
EXPECT_EQ(std::vector<uint8_t>(), GetSettings().secret);
+ EXPECT_TRUE(GetSettings().local_auth_info_changed);
}
TEST_F(ConfigTest, LoadStateV0) {
@@ -116,6 +117,7 @@
"device_id": "state_device_id",
"last_configured_ssid": "state_last_configured_ssid",
"local_anonymous_access_role": "user",
+ "local_auth_info_changed": false,
"local_discovery_enabled": false,
"local_pairing_enabled": false,
"location": "state_location",
@@ -159,6 +161,7 @@
EXPECT_EQ("state_robot_account", GetSettings().robot_account);
EXPECT_EQ("state_last_configured_ssid", GetSettings().last_configured_ssid);
EXPECT_EQ("c3RhdGVfc2VjcmV0", Base64Encode(GetSettings().secret));
+ EXPECT_FALSE(GetSettings().local_auth_info_changed);
}
TEST_F(ConfigTest, Setters) {
@@ -228,6 +231,9 @@
change.set_secret(secret);
EXPECT_EQ(secret, GetSettings().secret);
+ change.set_local_auth_info_changed(false);
+ EXPECT_FALSE(GetSettings().local_auth_info_changed);
+
EXPECT_CALL(*this, OnConfigChanged(_)).Times(1);
EXPECT_CALL(config_store_, SaveSettings(_))
@@ -242,6 +248,7 @@
'device_id': 'set_device_id',
'last_configured_ssid': 'set_last_configured_ssid',
'local_anonymous_access_role': 'user',
+ 'local_auth_info_changed': false,
'local_discovery_enabled': true,
'local_pairing_enabled': true,
'location': 'set_location',