buffet: Add base.updateBaseConfiguration implementation
Required base command handled by buffet.
BUG=brillo:810
TEST=`FEATURES=test emerge-gizmo buffet`
Change-Id: I97ecd9f5d792cc636e76bbff92899a7ddfa4a605
Reviewed-on: https://chromium-review.googlesource.com/273618
Reviewed-by: Vitaly Buka <vitalybuka@chromium.org>
Commit-Queue: Vitaly Buka <vitalybuka@chromium.org>
Tested-by: Vitaly Buka <vitalybuka@chromium.org>
diff --git a/buffet/base_api_handler_unittest.cc b/buffet/base_api_handler_unittest.cc
index d1de49f..cde0c41 100644
--- a/buffet/base_api_handler_unittest.cc
+++ b/buffet/base_api_handler_unittest.cc
@@ -25,13 +25,37 @@
transport_ = std::make_shared<chromeos::http::fake::Transport>();
command_manager_ = std::make_shared<CommandManager>();
state_manager_ = std::make_shared<StateManager>(&mock_state_change_queue_);
- state_manager_->Startup();
+ auto state_definition = unittests::CreateDictionaryValue(R"({
+ 'base': {
+ 'firmwareVersion': 'string',
+ 'localDiscoveryEnabled': 'boolean',
+ 'localAnonymousAccessMaxRole': [ 'none', 'viewer', 'user' ],
+ 'localPairingEnabled': 'boolean',
+ 'network': {
+ 'properties': {
+ 'name': 'string'
+ }
+ }
+ }
+ })");
+ auto state_defaults = unittests::CreateDictionaryValue(R"({
+ 'base': {
+ 'firmwareVersion': '123123',
+ 'localDiscoveryEnabled': false,
+ 'localAnonymousAccessMaxRole': 'none',
+ 'localPairingEnabled': false
+ }
+ })");
+ ASSERT_TRUE(state_manager_->LoadStateDefinition(*state_definition, "base",
+ nullptr));
+ ASSERT_TRUE(state_manager_->LoadStateDefaults(*state_defaults, nullptr));
dev_reg_.reset(new DeviceRegistrationInfo(
command_manager_, state_manager_,
std::unique_ptr<BuffetConfig>{new BuffetConfig{
std::unique_ptr<StorageInterface>{new MemStorage}}},
transport_, true));
- handler_.reset(new BaseApiHandler{dev_reg_->AsWeakPtr(), command_manager_});
+ handler_.reset(new BaseApiHandler{
+ dev_reg_->AsWeakPtr(), state_manager_, command_manager_});
}
void LoadCommands(const std::string& command_definitions) {
@@ -63,6 +87,68 @@
int command_id_{0};
};
+TEST_F(BaseApiHandlerTest, UpdateBaseConfiguration) {
+ LoadCommands(R"({
+ 'base': {
+ 'updateBaseConfiguration': {
+ 'parameters': {
+ 'localDiscoveryEnabled': 'boolean',
+ 'localAnonymousAccessMaxRole': [ 'none', 'viewer', 'user' ],
+ 'localPairingEnabled': 'boolean'
+ },
+ 'results': {}
+ }
+ }
+ })");
+
+ const BuffetConfig& config{dev_reg_->GetConfig()};
+
+ AddCommand(R"({
+ 'name' : 'base.updateBaseConfiguration',
+ 'parameters': {
+ 'localDiscoveryEnabled': false,
+ 'localAnonymousAccessMaxRole': 'none',
+ 'localPairingEnabled': false
+ }
+ })");
+ EXPECT_EQ("none", config.local_anonymous_access_role());
+ EXPECT_FALSE(config.local_discovery_enabled());
+ EXPECT_FALSE(config.local_pairing_enabled());
+
+ auto expected = R"({
+ 'base': {
+ 'firmwareVersion': '123123',
+ 'localAnonymousAccessMaxRole': 'none',
+ 'localDiscoveryEnabled': false,
+ 'localPairingEnabled': false,
+ 'network': {}
+ }
+ })";
+ EXPECT_JSON_EQ(expected, *state_manager_->GetStateValuesAsJson(nullptr));
+
+ AddCommand(R"({
+ 'name' : 'base.updateBaseConfiguration',
+ 'parameters': {
+ 'localDiscoveryEnabled': true,
+ 'localAnonymousAccessMaxRole': 'user',
+ 'localPairingEnabled': true
+ }
+ })");
+ EXPECT_EQ("user", config.local_anonymous_access_role());
+ EXPECT_TRUE(config.local_discovery_enabled());
+ EXPECT_TRUE(config.local_pairing_enabled());
+ expected = R"({
+ 'base': {
+ 'firmwareVersion': '123123',
+ 'localAnonymousAccessMaxRole': 'user',
+ 'localDiscoveryEnabled': true,
+ 'localPairingEnabled': true,
+ 'network': {}
+ }
+ })";
+ EXPECT_JSON_EQ(expected, *state_manager_->GetStateValuesAsJson(nullptr));
+}
+
TEST_F(BaseApiHandlerTest, UpdateDeviceInfo) {
LoadCommands(R"({
'base': {