summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYaroslav Mamykin (GitHub) <33784535+YarikMamykin@users.noreply.github.com>2020-03-23 19:53:52 +0200
committerGitHub <noreply@github.com>2020-03-23 13:53:52 -0400
commitcf9ce390362ec5a32e6c1aaaad873b599fd368a6 (patch)
tree95eb9baa9acea8762a9400127f00ce002a4b3bd9
parentb51affe9d89655c5b3bc5199f030bf2bc1eb190c (diff)
downloadsdl_core-cf9ce390362ec5a32e6c1aaaad873b599fd368a6.tar.gz
Fix sdl crash when policies disabled (#3292)
* Fix usage non-valid policy_manager pointer in case of EnablePolicy=false * Add unit tests for modified methods Co-authored-by: Jacob Keeler <jacob.keeler@livioradio.com>
-rw-r--r--src/components/application_manager/src/policies/policy_handler.cc112
-rw-r--r--src/components/application_manager/test/policy_handler_test.cc205
2 files changed, 267 insertions, 50 deletions
diff --git a/src/components/application_manager/src/policies/policy_handler.cc b/src/components/application_manager/src/policies/policy_handler.cc
index 1974c99d2c..9c0f5da73c 100644
--- a/src/components/application_manager/src/policies/policy_handler.cc
+++ b/src/components/application_manager/src/policies/policy_handler.cc
@@ -141,7 +141,7 @@ struct HMILevelPredicate
} // namespace
-#define POLICY_LIB_CHECK(return_value) \
+#define POLICY_LIB_CHECK_OR_RETURN(return_value) \
{ \
sync_primitives::AutoReadLock lock(policy_manager_lock_); \
if (!policy_manager_) { \
@@ -375,7 +375,7 @@ const PolicySettings& PolicyHandler::get_settings() const {
bool PolicyHandler::InitPolicyTable() {
LOG4CXX_AUTO_TRACE(logger_);
- POLICY_LIB_CHECK(false);
+ POLICY_LIB_CHECK_OR_RETURN(false);
// Subscribing to notification for system readiness to be able to get system
// info necessary for policy table
event_observer_->subscribe_on_event(
@@ -403,13 +403,13 @@ void PolicyHandler::OnPTInited() {
void PolicyHandler::StopRetrySequence() {
LOG4CXX_AUTO_TRACE(logger_);
-
+ POLICY_LIB_CHECK_VOID();
policy_manager_->StopRetrySequence();
}
bool PolicyHandler::ResetPolicyTable() {
LOG4CXX_TRACE(logger_, "Reset policy table.");
- POLICY_LIB_CHECK(false);
+ POLICY_LIB_CHECK_OR_RETURN(false);
std::string preloaded_file = get_settings().preloaded_pt_file();
if (file_system::FileExists(preloaded_file)) {
return policy_manager_->ResetPT(preloaded_file);
@@ -420,13 +420,13 @@ bool PolicyHandler::ResetPolicyTable() {
bool PolicyHandler::ClearUserConsent() {
LOG4CXX_AUTO_TRACE(logger_);
- POLICY_LIB_CHECK(false);
+ POLICY_LIB_CHECK_OR_RETURN(false);
return policy_manager_->ResetUserConsent();
}
uint32_t PolicyHandler::GetAppIdForSending() const {
LOG4CXX_AUTO_TRACE(logger_);
- POLICY_LIB_CHECK(0);
+ POLICY_LIB_CHECK_OR_RETURN(0);
// fix ApplicationSet access crash
const ApplicationSet accessor = application_manager_.applications().GetData();
@@ -468,6 +468,7 @@ uint32_t PolicyHandler::GetAppIdForSending() const {
void PolicyHandler::PushAppIdToPTUQueue(const uint32_t app_id) {
LOG4CXX_AUTO_TRACE(logger_);
+ POLICY_LIB_CHECK_VOID();
sync_primitives::AutoLock lock(app_id_queue_lock_);
const auto result = applications_ptu_queue_.insert(app_id);
if (result.second) {
@@ -477,6 +478,7 @@ void PolicyHandler::PushAppIdToPTUQueue(const uint32_t app_id) {
void PolicyHandler::PopAppIdFromPTUQueue() {
LOG4CXX_AUTO_TRACE(logger_);
+ POLICY_LIB_CHECK_VOID();
sync_primitives::AutoLock lock(app_id_queue_lock_);
if (applications_ptu_queue_.size() > 0) {
applications_ptu_queue_.erase(applications_ptu_queue_.begin());
@@ -604,7 +606,7 @@ StatusNotifier PolicyHandler::AddApplication(
const std::string& device_id,
const std::string& application_id,
const rpc::policy_table_interface_base::AppHmiTypes& hmi_types) {
- POLICY_LIB_CHECK(std::make_shared<utils::CallNothing>());
+ POLICY_LIB_CHECK_OR_RETURN(std::make_shared<utils::CallNothing>());
return policy_manager_->AddApplication(device_id, application_id, hmi_types);
}
@@ -719,7 +721,7 @@ void policy::PolicyHandler::SetDaysAfterEpoch() {
#ifdef ENABLE_SECURITY
std::string PolicyHandler::RetrieveCertificate() const {
- POLICY_LIB_CHECK(std::string(""));
+ POLICY_LIB_CHECK_OR_RETURN(std::string(""));
return policy_manager_->RetrieveCertificate();
}
#endif // ENABLE_SECURITY
@@ -767,7 +769,7 @@ void PolicyHandler::GetRegisteredLinks(
std::vector<policy::FunctionalGroupPermission>
PolicyHandler::CollectRegisteredAppsPermissions() {
LOG4CXX_AUTO_TRACE(logger_);
- POLICY_LIB_CHECK(std::vector<policy::FunctionalGroupPermission>());
+ POLICY_LIB_CHECK_OR_RETURN(std::vector<policy::FunctionalGroupPermission>());
// If no specific app was passed, get permissions for all currently registered
// applications
sync_primitives::AutoLock lock(app_to_device_link_lock_);
@@ -788,9 +790,11 @@ PolicyHandler::CollectRegisteredAppsPermissions() {
std::vector<FunctionalGroupPermission> PolicyHandler::CollectAppPermissions(
const uint32_t connection_key) {
+ std::vector<FunctionalGroupPermission> group_permissions;
+ POLICY_LIB_CHECK_OR_RETURN(group_permissions);
+
// Single app only
ApplicationSharedPtr app = application_manager_.application(connection_key);
- std::vector<FunctionalGroupPermission> group_permissions;
if (NULL == app.get() || app.use_count() == 0) {
LOG4CXX_WARN(logger_,
@@ -868,6 +872,7 @@ void PolicyHandler::LinkAppsToDevice() {
bool PolicyHandler::IsAppSuitableForPolicyUpdate(
const Applications::value_type value) const {
LOG4CXX_AUTO_TRACE(logger_);
+ POLICY_LIB_CHECK_OR_RETURN(false);
if (!value->IsRegistered()) {
LOG4CXX_DEBUG(
@@ -1105,7 +1110,7 @@ void PolicyHandler::OnPendingPermissionChange(
bool PolicyHandler::SendMessageToSDK(const BinaryMessage& pt_string,
const std::string& url) {
LOG4CXX_AUTO_TRACE(logger_);
- POLICY_LIB_CHECK(false);
+ POLICY_LIB_CHECK_OR_RETURN(false);
const uint32_t app_id = GetAppIdForSending();
ApplicationSharedPtr app = application_manager_.application(app_id);
@@ -1142,7 +1147,7 @@ bool PolicyHandler::SendMessageToSDK(const BinaryMessage& pt_string,
bool PolicyHandler::ReceiveMessageFromSDK(const std::string& file,
const BinaryMessage& pt_string) {
- POLICY_LIB_CHECK(false);
+ POLICY_LIB_CHECK_OR_RETURN(false);
const auto load_pt_result = policy_manager_->LoadPT(file, pt_string);
@@ -1507,6 +1512,8 @@ void PolicyHandler::OnPermissionsUpdated(const std::string& device_id,
const std::string& policy_app_id,
const Permissions& permissions) {
LOG4CXX_AUTO_TRACE(logger_);
+ POLICY_LIB_CHECK_VOID();
+
ApplicationSharedPtr app =
application_manager_.application(device_id, policy_app_id);
if (app.use_count() == 0) {
@@ -1618,7 +1625,7 @@ void PolicyHandler::OnSnapshotCreated(const BinaryMessage& pt_string,
bool PolicyHandler::GetPriority(const std::string& policy_app_id,
std::string* priority) const {
- POLICY_LIB_CHECK(false);
+ POLICY_LIB_CHECK_OR_RETURN(false);
return policy_manager_->GetPriority(policy_app_id, priority);
}
@@ -1650,31 +1657,32 @@ void PolicyHandler::CheckPermissions(
uint32_t PolicyHandler::GetNotificationsNumber(
const std::string& priority) const {
- POLICY_LIB_CHECK(0);
+ POLICY_LIB_CHECK_OR_RETURN(0);
return policy_manager_->GetNotificationsNumber(priority);
}
DeviceConsent PolicyHandler::GetUserConsentForDevice(
const std::string& device_id) const {
- POLICY_LIB_CHECK(kDeviceDisallowed);
+ POLICY_LIB_CHECK_OR_RETURN(kDeviceDisallowed);
return policy_manager_->GetUserConsentForDevice(device_id);
}
Json::Value PolicyHandler::GetPolicyTableData() const {
+ POLICY_LIB_CHECK_OR_RETURN(Json::Value());
return policy_manager_->GetPolicyTableData();
}
bool PolicyHandler::GetDefaultHmi(const std::string& device_id,
const std::string& policy_app_id,
std::string* default_hmi) const {
- POLICY_LIB_CHECK(false);
+ POLICY_LIB_CHECK_OR_RETURN(false);
return policy_manager_->GetDefaultHmi(device_id, policy_app_id, default_hmi);
}
bool PolicyHandler::GetInitialAppData(const std::string& application_id,
StringArray* nicknames,
StringArray* app_hmi_types) {
- POLICY_LIB_CHECK(false);
+ POLICY_LIB_CHECK_OR_RETURN(false);
return policy_manager_->GetInitialAppData(
application_id, nicknames, app_hmi_types);
}
@@ -1694,7 +1702,7 @@ void PolicyHandler::GetUpdateUrls(const uint32_t service_type,
std::string PolicyHandler::GetLockScreenIconUrl(
const std::string& policy_app_id) const {
const std::string default_url;
- POLICY_LIB_CHECK(default_url);
+ POLICY_LIB_CHECK_OR_RETURN(default_url);
EndpointUrls endpoints;
policy_manager_->GetUpdateUrls("lock_screen_icon_url", endpoints);
@@ -1727,12 +1735,12 @@ std::string PolicyHandler::GetLockScreenIconUrl(
}
std::string PolicyHandler::GetIconUrl(const std::string& policy_app_id) const {
- POLICY_LIB_CHECK(std::string(""));
+ POLICY_LIB_CHECK_OR_RETURN(std::string(""));
return policy_manager_->GetIconUrl(policy_app_id);
}
uint32_t PolicyHandler::NextRetryTimeout() {
- POLICY_LIB_CHECK(0);
+ POLICY_LIB_CHECK_OR_RETURN(0);
LOG4CXX_AUTO_TRACE(logger_);
return policy_manager_->NextRetryTimeout();
}
@@ -1742,7 +1750,7 @@ uint32_t PolicyHandler::TimeoutExchangeSec() const {
}
uint32_t PolicyHandler::TimeoutExchangeMSec() const {
- POLICY_LIB_CHECK(0);
+ POLICY_LIB_CHECK_OR_RETURN(0);
return policy_manager_->TimeoutExchangeMSec();
}
@@ -1764,14 +1772,14 @@ void PolicyHandler::OnSystemReady() {
const boost::optional<bool> PolicyHandler::LockScreenDismissalEnabledState()
const {
- POLICY_LIB_CHECK(boost::optional<bool>());
+ POLICY_LIB_CHECK_OR_RETURN(boost::optional<bool>());
return policy_manager_->LockScreenDismissalEnabledState();
}
const boost::optional<std::string>
PolicyHandler::LockScreenDismissalWarningMessage(
const std::string& language) const {
- POLICY_LIB_CHECK(boost::optional<std::string>());
+ POLICY_LIB_CHECK_OR_RETURN(boost::optional<std::string>());
return policy_manager_->LockScreenDismissalWarningMessage(language);
}
@@ -2006,7 +2014,7 @@ void PolicyHandler::RemoveDevice(const std::string& device_id) {
bool PolicyHandler::IsApplicationRevoked(const std::string& app_id) {
LOG4CXX_AUTO_TRACE(logger_);
- POLICY_LIB_CHECK(false);
+ POLICY_LIB_CHECK_OR_RETURN(false);
return policy_manager_->IsApplicationRevoked(app_id);
}
@@ -2018,12 +2026,12 @@ void PolicyHandler::OnUpdateRequestSentToMobile() {
}
bool PolicyHandler::CheckKeepContext(const std::string& policy_app_id) const {
- POLICY_LIB_CHECK(false);
+ POLICY_LIB_CHECK_OR_RETURN(false);
return policy_manager_->CanAppKeepContext(policy_app_id);
}
bool PolicyHandler::CheckStealFocus(const std::string& policy_app_id) const {
- POLICY_LIB_CHECK(false);
+ POLICY_LIB_CHECK_OR_RETURN(false);
return policy_manager_->CanAppStealFocus(policy_app_id);
}
@@ -2047,7 +2055,7 @@ bool PolicyHandler::CheckSystemAction(
}
std::vector<std::string> PolicyHandler::GetApplicationPolicyIDs() const {
- POLICY_LIB_CHECK(std::vector<std::string>());
+ POLICY_LIB_CHECK_OR_RETURN(std::vector<std::string>());
const auto all_policy_ids = policy_manager_->GetApplicationPolicyIDs();
std::vector<std::string> policy_app_ids;
@@ -2071,18 +2079,18 @@ void PolicyHandler::GetEnabledCloudApps(
bool PolicyHandler::GetAppProperties(const std::string& policy_app_id,
AppProperties& out_app_properties) const {
- POLICY_LIB_CHECK(false);
+ POLICY_LIB_CHECK_OR_RETURN(false);
return policy_manager_->GetAppProperties(policy_app_id, out_app_properties);
}
std::vector<std::string> PolicyHandler::GetEnabledLocalApps() const {
- POLICY_LIB_CHECK(std::vector<std::string>());
+ POLICY_LIB_CHECK_OR_RETURN(std::vector<std::string>());
return policy_manager_->GetEnabledLocalApps();
}
const bool PolicyHandler::CheckCloudAppEnabled(
const std::string& policy_app_id) const {
- POLICY_LIB_CHECK(false);
+ POLICY_LIB_CHECK_OR_RETURN(false);
AppProperties out_app_properties;
policy_manager_->GetAppProperties(policy_app_id, out_app_properties);
return out_app_properties.enabled;
@@ -2092,6 +2100,7 @@ PolicyHandler::AppPropertiesState PolicyHandler::GetAppPropertiesStatus(
const smart_objects::SmartObject& properties,
const std::string& app_id) const {
LOG4CXX_AUTO_TRACE(logger_);
+ POLICY_LIB_CHECK_OR_RETURN(AppPropertiesState::NO_CHANGES);
AppProperties app_properties;
policy_manager_->GetAppProperties(app_id, app_properties);
@@ -2186,6 +2195,7 @@ PolicyHandler::AppPropertiesState PolicyHandler::GetAppPropertiesStatus(
}
bool PolicyHandler::IsNewApplication(const std::string& policy_app_id) const {
+ POLICY_LIB_CHECK_OR_RETURN(false);
return policy_manager_->IsNewApplication(policy_app_id);
}
@@ -2244,6 +2254,7 @@ void PolicyHandler::OnSetAppProperties(
}
void PolicyHandler::OnLocalAppAdded() {
+ POLICY_LIB_CHECK_VOID();
policy_manager_->OnLocalAppAdded();
}
@@ -2395,18 +2406,18 @@ bool PolicyHandler::CheckAppServiceParameters(
bool PolicyHandler::UnknownRPCPassthroughAllowed(
const std::string& policy_app_id) const {
LOG4CXX_AUTO_TRACE(logger_);
- POLICY_LIB_CHECK(false);
+ POLICY_LIB_CHECK_OR_RETURN(false);
return policy_manager_->UnknownRPCPassthroughAllowed(policy_app_id);
}
uint32_t PolicyHandler::HeartBeatTimeout(const std::string& app_id) const {
- POLICY_LIB_CHECK(0);
+ POLICY_LIB_CHECK_OR_RETURN(0);
return policy_manager_->HeartBeatTimeout(app_id);
}
const std::string PolicyHandler::RemoteAppsUrl() const {
const std::string default_url;
- POLICY_LIB_CHECK(default_url);
+ POLICY_LIB_CHECK_OR_RETURN(default_url);
EndpointUrls endpoints;
policy_manager_->GetUpdateUrls("queryAppsUrl", endpoints);
if (endpoints.empty() || endpoints[0].url.empty()) {
@@ -2417,12 +2428,12 @@ const std::string PolicyHandler::RemoteAppsUrl() const {
}
void PolicyHandler::OnAppsSearchStarted() {
- POLICY_LIB_CHECK();
+ POLICY_LIB_CHECK_VOID();
policy_manager_->OnAppsSearchStarted();
}
void PolicyHandler::OnAppsSearchCompleted(const bool trigger_ptu) {
- POLICY_LIB_CHECK();
+ POLICY_LIB_CHECK_VOID();
policy_manager_->OnAppsSearchCompleted(trigger_ptu);
}
@@ -2444,13 +2455,13 @@ void PolicyHandler::OnAppRegisteredOnMobile(const std::string& device_id,
RequestType::State PolicyHandler::GetAppRequestTypeState(
const std::string& policy_app_id) const {
- POLICY_LIB_CHECK(RequestType::State::UNAVAILABLE);
+ POLICY_LIB_CHECK_OR_RETURN(RequestType::State::UNAVAILABLE);
return policy_manager_->GetAppRequestTypesState(policy_app_id);
}
RequestSubType::State PolicyHandler::GetAppRequestSubTypeState(
const std::string& policy_app_id) const {
- POLICY_LIB_CHECK(RequestSubType::State::UNAVAILABLE);
+ POLICY_LIB_CHECK_OR_RETURN(RequestSubType::State::UNAVAILABLE);
return policy_manager_->GetAppRequestSubTypesState(policy_app_id);
}
@@ -2458,7 +2469,7 @@ bool PolicyHandler::IsRequestTypeAllowed(
const transport_manager::DeviceHandle& device_id,
const std::string& policy_app_id,
mobile_apis::RequestType::eType type) const {
- POLICY_LIB_CHECK(false);
+ POLICY_LIB_CHECK_OR_RETURN(false);
using namespace mobile_apis;
const std::string stringified_type = RequestTypeToString(type);
@@ -2499,7 +2510,7 @@ bool PolicyHandler::IsRequestTypeAllowed(
bool PolicyHandler::IsRequestSubTypeAllowed(
const std::string& policy_app_id,
const std::string& request_subtype) const {
- POLICY_LIB_CHECK(false);
+ POLICY_LIB_CHECK_OR_RETURN(false);
using namespace mobile_apis;
if (request_subtype.empty()) {
@@ -2536,7 +2547,7 @@ bool PolicyHandler::IsRequestSubTypeAllowed(
const std::vector<std::string> PolicyHandler::GetAppRequestTypes(
const transport_manager::DeviceHandle& device_handle,
const std::string& policy_app_id) const {
- POLICY_LIB_CHECK(std::vector<std::string>());
+ POLICY_LIB_CHECK_OR_RETURN(std::vector<std::string>());
#ifdef EXTERNAL_PROPRIETARY_MODE
return policy_manager_->GetAppRequestTypes(device_handle, policy_app_id);
#else
@@ -2546,50 +2557,51 @@ const std::vector<std::string> PolicyHandler::GetAppRequestTypes(
const std::vector<std::string> PolicyHandler::GetAppRequestSubTypes(
const std::string& policy_app_id) const {
- POLICY_LIB_CHECK(std::vector<std::string>());
+ POLICY_LIB_CHECK_OR_RETURN(std::vector<std::string>());
return policy_manager_->GetAppRequestSubTypes(policy_app_id);
}
const std::vector<policy_table::VehicleDataItem>
policy::PolicyHandler::GetVehicleDataItems() const {
- POLICY_LIB_CHECK(std::vector<policy_table::VehicleDataItem>());
+ POLICY_LIB_CHECK_OR_RETURN(std::vector<policy_table::VehicleDataItem>());
return policy_manager_->GetVehicleDataItems();
}
std::vector<rpc::policy_table_interface_base::VehicleDataItem>
policy::PolicyHandler::GetRemovedVehicleDataItems() const {
+ POLICY_LIB_CHECK_OR_RETURN(std::vector<policy_table::VehicleDataItem>());
return policy_manager_->GetRemovedVehicleDataItems();
}
#ifdef EXTERNAL_PROPRIETARY_MODE
const MetaInfo PolicyHandler::GetMetaInfo() const {
- POLICY_LIB_CHECK(MetaInfo());
+ POLICY_LIB_CHECK_OR_RETURN(MetaInfo());
return policy_manager_->GetMetaInfo();
}
#endif // EXTERNAL_PROPRIETARY_MODE
void PolicyHandler::Increment(usage_statistics::GlobalCounterId type) {
- POLICY_LIB_CHECK();
+ POLICY_LIB_CHECK_VOID();
policy_manager_->Increment(type);
}
void PolicyHandler::Increment(const std::string& app_id,
usage_statistics::AppCounterId type) {
- POLICY_LIB_CHECK();
+ POLICY_LIB_CHECK_VOID();
policy_manager_->Increment(app_id, type);
}
void PolicyHandler::Set(const std::string& app_id,
usage_statistics::AppInfoId type,
const std::string& value) {
- POLICY_LIB_CHECK();
+ POLICY_LIB_CHECK_VOID();
policy_manager_->Set(app_id, type, value);
}
void PolicyHandler::Add(const std::string& app_id,
usage_statistics::AppStopwatchId type,
int32_t timespan_seconds) {
- POLICY_LIB_CHECK();
+ POLICY_LIB_CHECK_VOID();
policy_manager_->Add(app_id, type, timespan_seconds);
}
@@ -2655,7 +2667,7 @@ void PolicyHandler::UpdateHMILevel(ApplicationSharedPtr app,
bool PolicyHandler::CheckModule(const PTString& app_id,
const PTString& module) {
- POLICY_LIB_CHECK(false);
+ POLICY_LIB_CHECK_OR_RETURN(false);
return policy_manager_->CheckModule(app_id, module);
}
@@ -2700,7 +2712,7 @@ void PolicyHandler::OnUpdateHMIStatus(const std::string& device_id,
bool PolicyHandler::GetModuleTypes(const std::string& policy_app_id,
std::vector<std::string>* modules) const {
LOG4CXX_AUTO_TRACE(logger_);
- POLICY_LIB_CHECK(false);
+ POLICY_LIB_CHECK_OR_RETURN(false);
return policy_manager_->GetModuleTypes(policy_app_id, modules);
}
@@ -2725,7 +2737,7 @@ bool PolicyHandler::CheckHMIType(const std::string& application_id,
mobile_apis::AppHMIType::eType hmi,
const smart_objects::SmartObject* app_types) {
LOG4CXX_AUTO_TRACE(logger_);
- POLICY_LIB_CHECK(false);
+ POLICY_LIB_CHECK_OR_RETURN(false);
std::vector<int> policy_hmi_types;
bool ret = policy_manager_->GetHMITypes(application_id, &policy_hmi_types);
diff --git a/src/components/application_manager/test/policy_handler_test.cc b/src/components/application_manager/test/policy_handler_test.cc
index 1702497fec..2b1fc6de1d 100644
--- a/src/components/application_manager/test/policy_handler_test.cc
+++ b/src/components/application_manager/test/policy_handler_test.cc
@@ -3121,6 +3121,23 @@ TEST_F(PolicyHandlerTest, GetAppPropertiesStatus_HybridAppNotChanged_SUCCESS) {
policy::PolicyHandlerInterface::AppPropertiesState::NO_CHANGES);
}
+TEST_F(PolicyHandlerTest, GetAppPropertiesStatus_PolicyDisabled_FAIL) {
+ ChangePolicyManagerToMock();
+
+ EXPECT_CALL(policy_settings_, enable_policy()).WillOnce(Return(false));
+ policy_handler_.LoadPolicyLibrary();
+
+ smart_objects::SmartObject properties;
+ properties[strings::app_id] = kPolicyAppId_;
+
+ EXPECT_CALL(*mock_policy_manager_, GetAppProperties(_, _)).Times(0);
+ EXPECT_CALL(*mock_policy_manager_, GetInitialAppData(_, _, _)).Times(0);
+ const auto expected_app_properties_state =
+ policy::PolicyHandlerInterface::AppPropertiesState::NO_CHANGES;
+ EXPECT_EQ(expected_app_properties_state,
+ policy_handler_.GetAppPropertiesStatus(properties, kPolicyAppId_));
+}
+
TEST_F(PolicyHandlerTest, GetEnabledLocalApps_SUCCESS) {
ChangePolicyManagerToMock();
std::vector<std::string> enabled_local_apps;
@@ -3135,6 +3152,194 @@ TEST_F(PolicyHandlerTest, GetEnabledLocalApps_SUCCESS) {
EXPECT_EQ(enabled_local_apps, policy_handler_.GetEnabledLocalApps());
}
+TEST_F(PolicyHandlerTest, PushAppIdToPTUQueue_PolicyEnabled_SUCCESS) {
+ ChangePolicyManagerToMock();
+ const uint32_t expected_apps_count = 1u;
+ EXPECT_CALL(*mock_policy_manager_,
+ UpdatePTUReadyAppsCount(expected_apps_count));
+ policy_handler_.PushAppIdToPTUQueue(kAppId1_);
+ EXPECT_EQ(expected_apps_count,
+ policy_handler_.applications_ptu_queue_.size());
+}
+
+TEST_F(PolicyHandlerTest, PushAppIdToPTUQueue_PolicyDisabled_FAIL) {
+ ChangePolicyManagerToMock();
+
+ const uint32_t expected_apps_count = 0u;
+ EXPECT_CALL(policy_settings_, enable_policy()).WillOnce(Return(false));
+ EXPECT_CALL(*mock_policy_manager_,
+ UpdatePTUReadyAppsCount(expected_apps_count))
+ .Times(0);
+
+ policy_handler_.LoadPolicyLibrary();
+ policy_handler_.PushAppIdToPTUQueue(kAppId1_);
+ EXPECT_EQ(expected_apps_count,
+ policy_handler_.applications_ptu_queue_.size());
+}
+
+TEST_F(PolicyHandlerTest, StopRetrySequence_PolicyEnabled_SUCCESS) {
+ ChangePolicyManagerToMock();
+ EXPECT_CALL(*mock_policy_manager_, StopRetrySequence());
+ policy_handler_.StopRetrySequence();
+}
+
+TEST_F(PolicyHandlerTest, StopRetrySequence_PolicyDisabled_FAIL) {
+ ChangePolicyManagerToMock();
+
+ EXPECT_CALL(policy_settings_, enable_policy()).WillOnce(Return(false));
+ EXPECT_CALL(*mock_policy_manager_, StopRetrySequence()).Times(0);
+
+ policy_handler_.LoadPolicyLibrary();
+ policy_handler_.StopRetrySequence();
+}
+
+TEST_F(PolicyHandlerTest, GetPolicyTableData_PolicyEnabled_SUCCESS) {
+ ChangePolicyManagerToMock();
+ Json::Value expected_table_data(Json::objectValue);
+ expected_table_data["test_key"] = "test_value";
+ EXPECT_CALL(*mock_policy_manager_, GetPolicyTableData())
+ .WillOnce(Return(expected_table_data));
+ EXPECT_EQ(expected_table_data, policy_handler_.GetPolicyTableData());
+}
+
+TEST_F(PolicyHandlerTest, GetPolicyTableData_PolicyDisabled_FAIL) {
+ ChangePolicyManagerToMock();
+
+ EXPECT_CALL(policy_settings_, enable_policy()).WillOnce(Return(false));
+ EXPECT_CALL(*mock_policy_manager_, GetPolicyTableData()).Times(0);
+
+ policy_handler_.LoadPolicyLibrary();
+
+ Json::Value expected_table_data;
+ EXPECT_EQ(expected_table_data, policy_handler_.GetPolicyTableData());
+}
+
+TEST_F(PolicyHandlerTest, GetRemovedVehicleDataItems_PolicyEnabled_SUCCESS) {
+ using rpc::policy_table_interface_base::VehicleDataItem;
+
+ ChangePolicyManagerToMock();
+
+ std::vector<VehicleDataItem> expected_removed_items;
+ expected_removed_items.push_back(VehicleDataItem());
+
+ EXPECT_CALL(*mock_policy_manager_, GetRemovedVehicleDataItems())
+ .WillOnce(Return(expected_removed_items));
+
+ const auto& actually_removed_items =
+ policy_handler_.GetRemovedVehicleDataItems();
+ ASSERT_EQ(expected_removed_items.size(), actually_removed_items.size());
+ EXPECT_TRUE(expected_removed_items[0] == actually_removed_items[0]);
+}
+
+TEST_F(PolicyHandlerTest, GetRemovedVehicleDataItems_PolicyDisabled_FAIL) {
+ using rpc::policy_table_interface_base::VehicleDataItem;
+
+ ChangePolicyManagerToMock();
+
+ EXPECT_CALL(policy_settings_, enable_policy()).WillOnce(Return(false));
+ EXPECT_CALL(*mock_policy_manager_, GetRemovedVehicleDataItems()).Times(0);
+
+ policy_handler_.LoadPolicyLibrary();
+
+ EXPECT_TRUE(policy_handler_.GetRemovedVehicleDataItems().empty());
+}
+
+TEST_F(PolicyHandlerTest, PopAppIdFromPTUQueue_PolicyEnabled_SUCCESS) {
+ ChangePolicyManagerToMock();
+
+ policy_handler_.PushAppIdToPTUQueue(kAppId1_);
+ ASSERT_EQ(1u, policy_handler_.applications_ptu_queue_.size());
+
+ policy_handler_.PopAppIdFromPTUQueue();
+ EXPECT_EQ(0u, policy_handler_.applications_ptu_queue_.size());
+}
+
+TEST_F(PolicyHandlerTest, PopAppIdFromPTUQueue_PolicyDisabled_FAIL) {
+ ChangePolicyManagerToMock();
+
+ const uint32_t expected_apps_count = 0u;
+ EXPECT_CALL(policy_settings_, enable_policy()).WillOnce(Return(false));
+ EXPECT_CALL(*mock_policy_manager_,
+ UpdatePTUReadyAppsCount(expected_apps_count))
+ .Times(0);
+
+ policy_handler_.LoadPolicyLibrary();
+ policy_handler_.PopAppIdFromPTUQueue();
+ EXPECT_EQ(expected_apps_count,
+ policy_handler_.applications_ptu_queue_.size());
+}
+
+TEST_F(PolicyHandlerTest, OnLocalAppAdded_PolicyEnabled_SUCCESS) {
+ ChangePolicyManagerToMock();
+ EXPECT_CALL(*mock_policy_manager_, OnLocalAppAdded());
+ policy_handler_.OnLocalAppAdded();
+}
+
+TEST_F(PolicyHandlerTest, OnLocalAppAdded_PolicyDisabled_FAIL) {
+ ChangePolicyManagerToMock();
+
+ EXPECT_CALL(policy_settings_, enable_policy()).WillOnce(Return(false));
+ EXPECT_CALL(*mock_policy_manager_, OnLocalAppAdded()).Times(0);
+
+ policy_handler_.LoadPolicyLibrary();
+ policy_handler_.OnLocalAppAdded();
+}
+
+TEST_F(PolicyHandlerTest, OnPermissionsUpdated_PolicyEnabled_SUCCESS) {
+ ChangePolicyManagerToMock();
+
+ EXPECT_CALL(app_manager_, application(kDeviceId_, kPolicyAppId_))
+ .WillOnce(Return(mock_app_));
+
+ const rpc::Optional<rpc::Boolean> encryption_requiered;
+ EXPECT_CALL(*mock_policy_manager_, GetAppEncryptionRequired(kPolicyAppId_))
+ .WillOnce(Return(encryption_requiered));
+ EXPECT_CALL(*mock_app_, app_id()).WillRepeatedly(Return(kAppId1_));
+
+ Permissions app_permissions;
+ EXPECT_CALL(mock_message_helper_,
+ SendOnPermissionsChangeNotification(kAppId1_, _, _, _));
+ policy_handler_.OnPermissionsUpdated(
+ kDeviceId_, kPolicyAppId_, app_permissions);
+}
+
+TEST_F(PolicyHandlerTest, OnPermissionsUpdated_PolicyDisabled_FAIL) {
+ ChangePolicyManagerToMock();
+
+ EXPECT_CALL(policy_settings_, enable_policy()).WillOnce(Return(false));
+ policy_handler_.LoadPolicyLibrary();
+
+ EXPECT_CALL(app_manager_, application(kDeviceId_, kPolicyAppId_)).Times(0);
+ EXPECT_CALL(*mock_policy_manager_, GetAppEncryptionRequired(kPolicyAppId_))
+ .Times(0);
+ EXPECT_CALL(*mock_app_, app_id()).Times(0);
+
+ Permissions app_permissions;
+ EXPECT_CALL(mock_message_helper_,
+ SendOnPermissionsChangeNotification(_, _, _, _))
+ .Times(0);
+ policy_handler_.OnPermissionsUpdated(
+ kDeviceId_, kPolicyAppId_, app_permissions);
+}
+
+TEST_F(PolicyHandlerTest, IsNewApplication_PolicyEnabled_SUCCESS) {
+ ChangePolicyManagerToMock();
+
+ EXPECT_CALL(*mock_policy_manager_, IsNewApplication(kPolicyAppId_))
+ .WillOnce(Return(true));
+ EXPECT_TRUE(policy_handler_.IsNewApplication(kPolicyAppId_));
+}
+
+TEST_F(PolicyHandlerTest, IsNewApplication_PolicyDisabled_FAIL) {
+ ChangePolicyManagerToMock();
+
+ EXPECT_CALL(policy_settings_, enable_policy()).WillOnce(Return(false));
+ policy_handler_.LoadPolicyLibrary();
+
+ EXPECT_CALL(*mock_policy_manager_, IsNewApplication(kPolicyAppId_)).Times(0);
+ EXPECT_FALSE(policy_handler_.IsNewApplication(kPolicyAppId_));
+}
+
} // namespace policy_handler_test
} // namespace components
} // namespace test