returns_.emplace_back(name, type, "", description, false);
}
- for (auto const& it : root.array("requiredPrivileges"))
- privileges_.push_back(it->GetString());
+ try {
+ for (auto const& it : root.array("requiredPrivileges"))
+ privileges_.push_back(it->GetString());
+ } catch (const std::runtime_error& e) {
+ // optional
+ privileges_.clear();
+ }
// details
switch (type_) {
common::SafeJson root(json);
std::string name = root.get<std::string>("name");
std::string category = root.get<std::string>("category");
- const auto priv_array = root.array("requiredPrivileges");
std::vector<std::string> privs;
- privs.reserve(priv_array.size());
- std::transform(priv_array.begin(), priv_array.end(),
- std::back_inserter(privs),
- [](const auto& priv) { return priv->GetString(); });
+
+ try {
+ const auto priv_array = root.array("requiredPrivileges");
+ privs.reserve(priv_array.size());
+ std::transform(priv_array.begin(), priv_array.end(),
+ std::back_inserter(privs),
+ [](const auto& priv) { return priv->GetString(); });
+ } catch (const std::runtime_error& e) {
+ // optional
+ LOG(WARNING) << "No required privileges found for action: " << name;
+ privs.clear();
+ }
+
LOG(DEBUG) << "Parased action for pkgid[ " << pkgid << " ] : " << name;
LOG(DEBUG) << json;
"desc": "Return 1"
}
},
- "requiredPrivileges": ["priv1", "priv2"],
"details": {
"appid": "com.example.app"
}
EXPECT_EQ(returns[0].GetType(), ParameterType::NumberType);
const auto& privileges = schema.GetPrivileges();
- EXPECT_EQ(privileges.size(), 2);
- EXPECT_EQ(privileges[0], "priv1");
- EXPECT_EQ(privileges[1], "priv2");
+ EXPECT_EQ(privileges.size(), 0);
}
TEST_F(ActionSchemaTest, ValidPluginActionJsonParsing) {