base_api_handler_unittest.cc revision 9acf8aa6176c1afaa587deac955acd6a7f9a46f4
172410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka// Copyright 2015 The Chromium OS Authors. All rights reserved. 272410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka// Use of this source code is governed by a BSD-style license that can be 372410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka// found in the LICENSE file. 472410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 5912b6985096700c4bf7aa83fb01640309a9bb229Vitaly Buka#include "libweave/src/base_api_handler.h" 672410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 772410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka#include <base/strings/string_number_conversions.h> 872410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka#include <base/values.h> 972410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka#include <gtest/gtest.h> 10c11a17d59330e6356f9da62e5b4a7ecf6a726665Vitaly Buka#include <weave/mock_config_store.h> 111020618923f7bf3066c8d36bbfe0a855eb58a974Vitaly Buka#include <weave/mock_http_client.h> 1272410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 13912b6985096700c4bf7aa83fb01640309a9bb229Vitaly Buka#include "libweave/src/commands/command_manager.h" 14912b6985096700c4bf7aa83fb01640309a9bb229Vitaly Buka#include "libweave/src/commands/unittest_utils.h" 15c11a17d59330e6356f9da62e5b4a7ecf6a726665Vitaly Buka#include "libweave/src/config.h" 16912b6985096700c4bf7aa83fb01640309a9bb229Vitaly Buka#include "libweave/src/device_registration_info.h" 17912b6985096700c4bf7aa83fb01640309a9bb229Vitaly Buka#include "libweave/src/states/mock_state_change_queue_interface.h" 18912b6985096700c4bf7aa83fb01640309a9bb229Vitaly Buka#include "libweave/src/states/state_manager.h" 1972410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 206b61e5728bb6b014d16f9606a428deb6cbbbd10cVitaly Bukausing testing::_; 219acf8aa6176c1afaa587deac955acd6a7f9a46f4Vitaly Bukausing testing::Invoke; 226b61e5728bb6b014d16f9606a428deb6cbbbd10cVitaly Bukausing testing::Return; 239acf8aa6176c1afaa587deac955acd6a7f9a46f4Vitaly Bukausing testing::StrictMock; 246b61e5728bb6b014d16f9606a428deb6cbbbd10cVitaly Buka 25b6f015a1ef3caffbc2af53184c0ec5342e42e048Vitaly Bukanamespace weave { 2672410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 2772410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Bukaclass BaseApiHandlerTest : public ::testing::Test { 2872410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka protected: 2972410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka void SetUp() override { 309acf8aa6176c1afaa587deac955acd6a7f9a46f4Vitaly Buka EXPECT_CALL(config_store_, LoadDefaults(_)) 319acf8aa6176c1afaa587deac955acd6a7f9a46f4Vitaly Buka .WillOnce(Invoke([](Settings* settings) { 329acf8aa6176c1afaa587deac955acd6a7f9a46f4Vitaly Buka settings->firmware_version = "123123"; 339acf8aa6176c1afaa587deac955acd6a7f9a46f4Vitaly Buka return true; 349acf8aa6176c1afaa587deac955acd6a7f9a46f4Vitaly Buka })); 359acf8aa6176c1afaa587deac955acd6a7f9a46f4Vitaly Buka 366b61e5728bb6b014d16f9606a428deb6cbbbd10cVitaly Buka EXPECT_CALL(mock_state_change_queue_, NotifyPropertiesUpdated(_, _)) 376b61e5728bb6b014d16f9606a428deb6cbbbd10cVitaly Buka .WillRepeatedly(Return(true)); 386b61e5728bb6b014d16f9606a428deb6cbbbd10cVitaly Buka 3972410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka command_manager_ = std::make_shared<CommandManager>(); 4072410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka state_manager_ = std::make_shared<StateManager>(&mock_state_change_queue_); 412f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka auto state_definition = unittests::CreateDictionaryValue(R"({ 422f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'base': { 432f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'firmwareVersion': 'string', 442f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'localDiscoveryEnabled': 'boolean', 452f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'localAnonymousAccessMaxRole': [ 'none', 'viewer', 'user' ], 462f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'localPairingEnabled': 'boolean', 472f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'network': { 482f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'properties': { 492f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'name': 'string' 502f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka } 512f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka } 522f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka } 532f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka })"); 542f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka auto state_defaults = unittests::CreateDictionaryValue(R"({ 552f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'base': { 562f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'firmwareVersion': '123123', 572f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'localDiscoveryEnabled': false, 582f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'localAnonymousAccessMaxRole': 'none', 592f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'localPairingEnabled': false 602f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka } 612f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka })"); 622f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka ASSERT_TRUE(state_manager_->LoadStateDefinition(*state_definition, "base", 632f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka nullptr)); 642f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka ASSERT_TRUE(state_manager_->LoadStateDefaults(*state_defaults, nullptr)); 659acf8aa6176c1afaa587deac955acd6a7f9a46f4Vitaly Buka std::unique_ptr<Config> config{new Config{&config_store_}}; 669acf8aa6176c1afaa587deac955acd6a7f9a46f4Vitaly Buka config->Load(); 679acf8aa6176c1afaa587deac955acd6a7f9a46f4Vitaly Buka dev_reg_.reset(new DeviceRegistrationInfo(command_manager_, state_manager_, 689acf8aa6176c1afaa587deac955acd6a7f9a46f4Vitaly Buka std::move(config), nullptr, 699acf8aa6176c1afaa587deac955acd6a7f9a46f4Vitaly Buka &http_client_, true, nullptr)); 709acf8aa6176c1afaa587deac955acd6a7f9a46f4Vitaly Buka handler_.reset( 719acf8aa6176c1afaa587deac955acd6a7f9a46f4Vitaly Buka new BaseApiHandler{dev_reg_.get(), state_manager_, command_manager_}); 7272410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka } 7372410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 7472410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka void LoadCommands(const std::string& command_definitions) { 7572410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka auto json = unittests::CreateDictionaryValue(command_definitions.c_str()); 7672410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka EXPECT_TRUE(command_manager_->LoadBaseCommands(*json, nullptr)); 7772410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka EXPECT_TRUE(command_manager_->LoadCommands(*json, "", nullptr)); 7872410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka } 7972410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 8072410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka void AddCommand(const std::string& command) { 81b6f015a1ef3caffbc2af53184c0ec5342e42e048Vitaly Buka auto command_instance = CommandInstance::FromJson( 8272410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka unittests::CreateDictionaryValue(command.c_str()).get(), 8315f5909fbedbcb67ef9f70dc10e3b834f8e875fbVitaly Buka CommandOrigin::kLocal, command_manager_->GetCommandDictionary(), 8415f5909fbedbcb67ef9f70dc10e3b834f8e875fbVitaly Buka nullptr, nullptr); 8572410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka EXPECT_TRUE(!!command_instance); 8672410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 8772410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka std::string id{base::IntToString(++command_id_)}; 8872410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka command_instance->SetID(id); 8972410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka command_manager_->AddCommand(std::move(command_instance)); 9015f5909fbedbcb67ef9f70dc10e3b834f8e875fbVitaly Buka EXPECT_EQ(CommandStatus::kDone, 9172410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka command_manager_->FindCommand(id)->GetStatus()); 9272410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka } 9372410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 94c11a17d59330e6356f9da62e5b4a7ecf6a726665Vitaly Buka unittests::MockConfigStore config_store_; 951020618923f7bf3066c8d36bbfe0a855eb58a974Vitaly Buka StrictMock<unittests::MockHttpClient> http_client_; 9672410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka std::unique_ptr<DeviceRegistrationInfo> dev_reg_; 9772410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka std::shared_ptr<CommandManager> command_manager_; 986b61e5728bb6b014d16f9606a428deb6cbbbd10cVitaly Buka testing::StrictMock<MockStateChangeQueueInterface> mock_state_change_queue_; 9972410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka std::shared_ptr<StateManager> state_manager_; 10072410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka std::unique_ptr<BaseApiHandler> handler_; 10172410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka int command_id_{0}; 10272410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka}; 10372410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 1042f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly BukaTEST_F(BaseApiHandlerTest, UpdateBaseConfiguration) { 1052f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka LoadCommands(R"({ 1062f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'base': { 1072f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'updateBaseConfiguration': { 1082f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'parameters': { 1092f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'localDiscoveryEnabled': 'boolean', 1102f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'localAnonymousAccessMaxRole': [ 'none', 'viewer', 'user' ], 1112f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'localPairingEnabled': 'boolean' 1122f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka }, 1132f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'results': {} 1142f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka } 1152f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka } 1162f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka })"); 1172f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 118c11a17d59330e6356f9da62e5b4a7ecf6a726665Vitaly Buka Config& config{*dev_reg_->GetMutableConfig()}; 1192f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 1202f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka AddCommand(R"({ 1212f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'name' : 'base.updateBaseConfiguration', 1222f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'parameters': { 1232f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'localDiscoveryEnabled': false, 1242f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'localAnonymousAccessMaxRole': 'none', 1252f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'localPairingEnabled': false 1262f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka } 1272f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka })"); 1282f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka EXPECT_EQ("none", config.local_anonymous_access_role()); 1292f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka EXPECT_FALSE(config.local_discovery_enabled()); 1302f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka EXPECT_FALSE(config.local_pairing_enabled()); 1312f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 1322f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka auto expected = R"({ 1332f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'base': { 1342f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'firmwareVersion': '123123', 1352f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'localAnonymousAccessMaxRole': 'none', 1362f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'localDiscoveryEnabled': false, 1372f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'localPairingEnabled': false, 1382f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'network': {} 1392f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka } 1402f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka })"; 1416942e1f07146f0532200fc56381c04699bb6a30eVitaly Buka EXPECT_JSON_EQ(expected, *state_manager_->GetStateValuesAsJson()); 1422f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 1432f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka AddCommand(R"({ 1442f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'name' : 'base.updateBaseConfiguration', 1452f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'parameters': { 1462f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'localDiscoveryEnabled': true, 1472f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'localAnonymousAccessMaxRole': 'user', 1482f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'localPairingEnabled': true 1492f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka } 1502f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka })"); 1512f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka EXPECT_EQ("user", config.local_anonymous_access_role()); 1522f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka EXPECT_TRUE(config.local_discovery_enabled()); 1532f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka EXPECT_TRUE(config.local_pairing_enabled()); 1542f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka expected = R"({ 1552f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'base': { 1562f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'firmwareVersion': '123123', 1572f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'localAnonymousAccessMaxRole': 'user', 1582f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'localDiscoveryEnabled': true, 1592f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'localPairingEnabled': true, 1602f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 'network': {} 1612f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka } 1622f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka })"; 1636942e1f07146f0532200fc56381c04699bb6a30eVitaly Buka EXPECT_JSON_EQ(expected, *state_manager_->GetStateValuesAsJson()); 1644c808b2cc7c83fc0468a803d9933d1629a007a29Vitaly Buka 1654c808b2cc7c83fc0468a803d9933d1629a007a29Vitaly Buka { 166c11a17d59330e6356f9da62e5b4a7ecf6a726665Vitaly Buka Config::Transaction change{&config}; 1674c808b2cc7c83fc0468a803d9933d1629a007a29Vitaly Buka change.set_local_anonymous_access_role("viewer"); 1684c808b2cc7c83fc0468a803d9933d1629a007a29Vitaly Buka } 1694c808b2cc7c83fc0468a803d9933d1629a007a29Vitaly Buka expected = R"({ 1704c808b2cc7c83fc0468a803d9933d1629a007a29Vitaly Buka 'base': { 1714c808b2cc7c83fc0468a803d9933d1629a007a29Vitaly Buka 'firmwareVersion': '123123', 1724c808b2cc7c83fc0468a803d9933d1629a007a29Vitaly Buka 'localAnonymousAccessMaxRole': 'viewer', 1734c808b2cc7c83fc0468a803d9933d1629a007a29Vitaly Buka 'localDiscoveryEnabled': true, 1744c808b2cc7c83fc0468a803d9933d1629a007a29Vitaly Buka 'localPairingEnabled': true, 1754c808b2cc7c83fc0468a803d9933d1629a007a29Vitaly Buka 'network': {} 1764c808b2cc7c83fc0468a803d9933d1629a007a29Vitaly Buka } 1774c808b2cc7c83fc0468a803d9933d1629a007a29Vitaly Buka })"; 1784c808b2cc7c83fc0468a803d9933d1629a007a29Vitaly Buka EXPECT_JSON_EQ(expected, *state_manager_->GetStateValuesAsJson()); 1792f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka} 1802f7efdb7a0f3ad0923d61290534b37c6c8351cc8Vitaly Buka 18172410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly BukaTEST_F(BaseApiHandlerTest, UpdateDeviceInfo) { 18272410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka LoadCommands(R"({ 18372410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 'base': { 18472410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 'updateDeviceInfo': { 18572410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 'parameters': { 18672410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 'description': 'string', 18772410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 'name': { 18872410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 'type': 'string', 18972410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 'minLength': 1 19072410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka }, 19172410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 'location': 'string' 19272410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka }, 19372410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 'results': {} 19472410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka } 19572410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka } 19672410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka })"); 19772410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 19872410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka AddCommand(R"({ 19972410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 'name' : 'base.updateDeviceInfo', 20072410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 'parameters': { 20172410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 'name': 'testName', 20272410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 'description': 'testDescription', 20372410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 'location': 'testLocation' 20472410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka } 20572410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka })"); 20672410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 207c11a17d59330e6356f9da62e5b4a7ecf6a726665Vitaly Buka const Config& config{dev_reg_->GetConfig()}; 20872410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka EXPECT_EQ("testName", config.name()); 20972410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka EXPECT_EQ("testDescription", config.description()); 21072410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka EXPECT_EQ("testLocation", config.location()); 2117e8df46a6608bd9b398f160caf4b626d8717e437Alex Vakulenko 2127e8df46a6608bd9b398f160caf4b626d8717e437Alex Vakulenko AddCommand(R"({ 2137e8df46a6608bd9b398f160caf4b626d8717e437Alex Vakulenko 'name' : 'base.updateDeviceInfo', 2147e8df46a6608bd9b398f160caf4b626d8717e437Alex Vakulenko 'parameters': { 2157e8df46a6608bd9b398f160caf4b626d8717e437Alex Vakulenko 'location': 'newLocation' 2167e8df46a6608bd9b398f160caf4b626d8717e437Alex Vakulenko } 2177e8df46a6608bd9b398f160caf4b626d8717e437Alex Vakulenko })"); 2187e8df46a6608bd9b398f160caf4b626d8717e437Alex Vakulenko 2197e8df46a6608bd9b398f160caf4b626d8717e437Alex Vakulenko EXPECT_EQ("testName", config.name()); 2207e8df46a6608bd9b398f160caf4b626d8717e437Alex Vakulenko EXPECT_EQ("testDescription", config.description()); 2217e8df46a6608bd9b398f160caf4b626d8717e437Alex Vakulenko EXPECT_EQ("newLocation", config.location()); 22272410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka} 22372410b2cd9056ac69c35db55eea6bb5b6cc8e342Vitaly Buka 224b6f015a1ef3caffbc2af53184c0ec5342e42e048Vitaly Buka} // namespace weave 225