Make CommandManager::AddCommand() usable for both cloud and local cases
Add Command::Origin parameter to AddCommand as well as let it return
the cloud command ID for the command instance.
Change-Id: I694c72aba80bc0f0f240453bfab0d11e773d70aa
Reviewed-on: https://weave-review.googlesource.com/1786
Reviewed-by: Vitaly Buka <vitalybuka@google.com>
diff --git a/src/component_manager_unittest.cc b/src/component_manager_unittest.cc
index 0c34041..dcefebd 100644
--- a/src/component_manager_unittest.cc
+++ b/src/component_manager_unittest.cc
@@ -645,13 +645,17 @@
std::string id;
const char kCommand1[] = R"({
"name": "trait1.command1",
+ "id": "1234-12345",
"component": "comp1",
"parameters": {}
})";
auto command1 = CreateDictionaryValue(kCommand1);
- EXPECT_TRUE(manager.AddCommand(*command1, UserRole::kUser, &id, nullptr));
+ EXPECT_TRUE(manager.AddCommand(*command1, Command::Origin::kLocal,
+ UserRole::kUser, &id, nullptr));
+ EXPECT_EQ("1234-12345", id);
// Not enough access rights
- EXPECT_FALSE(manager.AddCommand(*command1, UserRole::kViewer, &id, nullptr));
+ EXPECT_FALSE(manager.AddCommand(*command1, Command::Origin::kLocal,
+ UserRole::kViewer, &id, nullptr));
const char kCommand2[] = R"({
"name": "trait1.command3",
@@ -660,7 +664,9 @@
})";
auto command2 = CreateDictionaryValue(kCommand2);
// trait1.command3 doesn't exist
- EXPECT_FALSE(manager.AddCommand(*command2, UserRole::kOwner, &id, nullptr));
+ EXPECT_FALSE(manager.AddCommand(*command2, Command::Origin::kLocal,
+ UserRole::kOwner, &id, nullptr));
+ EXPECT_TRUE(id.empty());
const char kCommand3[] = R"({
"name": "trait2.command1",
@@ -669,7 +675,8 @@
})";
auto command3 = CreateDictionaryValue(kCommand3);
// Component comp1 doesn't have trait2.
- EXPECT_FALSE(manager.AddCommand(*command3, UserRole::kOwner, &id, nullptr));
+ EXPECT_FALSE(manager.AddCommand(*command3, Command::Origin::kLocal,
+ UserRole::kOwner, &id, nullptr));
// No component specified, find the suitable component
const char kCommand4[] = R"({
@@ -677,7 +684,8 @@
"parameters": {}
})";
auto command4 = CreateDictionaryValue(kCommand4);
- EXPECT_TRUE(manager.AddCommand(*command4, UserRole::kOwner, &id, nullptr));
+ EXPECT_TRUE(manager.AddCommand(*command4, Command::Origin::kLocal,
+ UserRole::kOwner, &id, nullptr));
auto cmd = manager.FindCommand(id);
ASSERT_NE(nullptr, cmd);
EXPECT_EQ("comp1", cmd->GetComponent());
@@ -687,7 +695,8 @@
"parameters": {}
})";
auto command5 = CreateDictionaryValue(kCommand5);
- EXPECT_TRUE(manager.AddCommand(*command5, UserRole::kOwner, &id, nullptr));
+ EXPECT_TRUE(manager.AddCommand(*command5, Command::Origin::kLocal,
+ UserRole::kOwner, &id, nullptr));
cmd = manager.FindCommand(id);
ASSERT_NE(nullptr, cmd);
EXPECT_EQ("comp2", cmd->GetComponent());
@@ -729,7 +738,8 @@
"component": "comp1"
})";
auto command1 = CreateDictionaryValue(kCommand1);
- EXPECT_TRUE(manager.AddCommand(*command1, UserRole::kUser, nullptr, nullptr));
+ EXPECT_TRUE(manager.AddCommand(*command1, Command::Origin::kCloud,
+ UserRole::kUser, nullptr, nullptr));
EXPECT_EQ("1", last_tags);
last_tags.clear();
@@ -738,7 +748,8 @@
"component": "comp2"
})";
auto command2 = CreateDictionaryValue(kCommand2);
- EXPECT_TRUE(manager.AddCommand(*command2, UserRole::kUser, nullptr, nullptr));
+ EXPECT_TRUE(manager.AddCommand(*command2, Command::Origin::kCloud,
+ UserRole::kUser, nullptr, nullptr));
EXPECT_EQ("2", last_tags);
last_tags.clear();
@@ -748,7 +759,8 @@
"parameters": {}
})";
auto command3 = CreateDictionaryValue(kCommand3);
- EXPECT_TRUE(manager.AddCommand(*command3, UserRole::kUser, nullptr, nullptr));
+ EXPECT_TRUE(manager.AddCommand(*command3, Command::Origin::kLocal,
+ UserRole::kUser, nullptr, nullptr));
EXPECT_EQ("3", last_tags);
last_tags.clear();
}