summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorokozlovlux <okozlov@luxoft.com>2017-02-20 19:16:07 +0200
committerokozlovlux <okozlov@luxoft.com>2017-05-17 19:27:11 +0300
commit6a3c65f64fb7e9e5a770476b3f664d57606af33a (patch)
treebc618e0ff31525d9157b1df098a5149efe557720
parent8aadc5d6d51b49c381fb89fd4b1fbfebec732cc3 (diff)
downloadsdl_core-6a3c65f64fb7e9e5a770476b3f664d57606af33a.tar.gz
Add functionality for External UCS
- added functionality for External UCS: ON by the User - added UTs for policices External UCS: ON by the User - added perstistence for external user consent status received from system Fix issuies for HTTP and PROPRIETARY mode in mock policy handler - fixed issues in mock policy handler - fix coding style
-rw-r--r--src/appMain/CMakeLists.txt1
-rw-r--r--src/components/application_manager/include/application_manager/application_impl.h2
-rw-r--r--src/components/application_manager/include/application_manager/application_manager_impl.h100
-rw-r--r--src/components/application_manager/include/application_manager/message_helper.h23
-rw-r--r--src/components/application_manager/include/application_manager/policies/external/delegates/app_permission_delegate.h2
-rw-r--r--src/components/application_manager/include/application_manager/policies/policy_handler.h115
-rw-r--r--src/components/application_manager/include/application_manager/smart_object_keys.h2
-rw-r--r--src/components/application_manager/src/application_manager_impl.cc62
-rw-r--r--src/components/application_manager/src/commands/hmi/on_app_permission_consent_notification.cc56
-rw-r--r--src/components/application_manager/src/commands/mobile/register_app_interface_request.cc32
-rw-r--r--src/components/application_manager/src/message_helper/message_helper.cc216
-rw-r--r--src/components/application_manager/src/policies/delegates/app_permission_delegate.cc19
-rw-r--r--src/components/application_manager/src/policies/policy_handler.cc254
-rw-r--r--src/components/application_manager/src/smart_object_keys.cc2
-rw-r--r--src/components/application_manager/test/commands/hmi/hmi_notifications/hmi_notifications_test.cc1856
-rw-r--r--src/components/application_manager/test/commands/mobile/register_app_interface_request_test.cc4
-rw-r--r--src/components/application_manager/test/include/application_manager/mock_message_helper.h12
-rw-r--r--src/components/application_manager/test/message_helper/message_helper_test.cc1253
-rw-r--r--src/components/application_manager/test/mock_message_helper.cc16
-rw-r--r--src/components/application_manager/test/policy_handler_test.cc773
-rw-r--r--src/components/application_manager/test/state_controller/state_controller_test.cc2
-rw-r--r--src/components/include/application_manager/application_manager.h6
-rw-r--r--src/components/include/application_manager/policies/policy_handler_interface.h76
-rw-r--r--src/components/include/policy/policy_external/policy/policy_listener.h41
-rw-r--r--src/components/include/policy/policy_external/policy/policy_manager.h35
-rw-r--r--src/components/include/policy/policy_regular/policy/policy_manager.h3
-rw-r--r--src/components/include/test/application_manager/mock_application_manager.h23
-rw-r--r--src/components/include/test/application_manager/policies/mock_policy_handler_interface.h30
-rw-r--r--src/components/include/test/policy/policy_external/policy/mock_policy_listener.h4
-rw-r--r--src/components/include/test/policy/policy_external/policy/mock_policy_manager.h8
-rw-r--r--src/components/include/test/policy/policy_regular/policy/mock_policy_manager.h15
-rw-r--r--src/components/interfaces/HMI_API.xml23
-rw-r--r--src/components/media_manager/CMakeLists.txt1
-rw-r--r--src/components/policy/policy_external/include/policy/policy_manager_impl.h87
-rw-r--r--src/components/policy/policy_external/include/policy/policy_table/types.h7
-rw-r--r--src/components/policy/policy_external/include/policy/policy_types.h1
-rw-r--r--src/components/policy/policy_external/include/policy/sql_pt_ext_representation.h9
-rw-r--r--src/components/policy/policy_external/include/policy/sql_pt_queries.h26
-rw-r--r--src/components/policy/policy_external/include/policy/sql_pt_representation.h10
-rw-r--r--src/components/policy/policy_external/include/policy/status.h12
-rw-r--r--src/components/policy/policy_external/src/cache_manager.cc27
-rw-r--r--src/components/policy/policy_external/src/policy_manager_impl.cc289
-rw-r--r--src/components/policy/policy_external/src/policy_table/types.cc4
-rw-r--r--src/components/policy/policy_external/src/sql_pt_ext_representation.cc94
-rw-r--r--src/components/policy/policy_external/src/sql_pt_queries.cc225
-rw-r--r--src/components/policy/policy_external/src/sql_pt_representation.cc71
-rw-r--r--src/components/policy/policy_external/test/generated_code_test.cc14
-rw-r--r--src/components/policy/policy_external/test/include/policy/policy_manager_impl_test_base.h27
-rw-r--r--src/components/policy/policy_external/test/policy_manager_impl_ptu_test.cc179
-rw-r--r--src/components/policy/policy_external/test/policy_manager_impl_snapshot_test.cc20
-rw-r--r--src/components/policy/policy_external/test/policy_manager_impl_test.cc401
-rw-r--r--src/components/policy/policy_external/test/policy_manager_impl_test_base.cc117
-rw-r--r--src/components/policy/policy_external/test/policy_manager_impl_user_consent_test.cc105
-rw-r--r--src/components/policy/policy_external/test/sql_pt_ext_representation_test.cc414
-rw-r--r--src/components/policy/policy_external/test/sql_pt_representation_test.cc4
-rw-r--r--src/components/policy/policy_regular/include/policy/cache_manager.h13
-rw-r--r--src/components/policy/policy_regular/include/policy/cache_manager_interface.h12
-rw-r--r--src/components/policy/policy_regular/include/policy/policy_listener.h14
-rw-r--r--src/components/policy/policy_regular/include/policy/policy_manager.h498
-rw-r--r--src/components/policy/policy_regular/include/policy/policy_manager_impl.h11
-rw-r--r--src/components/policy/policy_regular/include/policy/policy_table/types.h5
-rw-r--r--src/components/policy/policy_regular/include/policy/policy_types.h (renamed from src/components/include/policy/policy_regular/policy/policy_types.h)181
-rw-r--r--src/components/policy/policy_regular/include/policy/pt_ext_representation.h3
-rw-r--r--src/components/policy/policy_regular/include/policy/sql_pt_ext_queries.h2
-rw-r--r--src/components/policy/policy_regular/include/policy/sql_pt_ext_representation.h3
-rw-r--r--src/components/policy/policy_regular/include/policy/status.h12
-rw-r--r--src/components/policy/policy_regular/src/cache_manager.cc40
-rw-r--r--src/components/policy/policy_regular/src/policy_manager_impl.cc44
-rw-r--r--src/components/policy/policy_regular/src/policy_table/types.cc2
-rw-r--r--src/components/policy/policy_regular/test/include/policy/mock_cache_manager.h6
-rw-r--r--src/components/policy/policy_regular/test/include/policy/mock_policy_manager.h6
-rw-r--r--src/components/policy/policy_regular/test/policy_manager_impl_test.cc67
-rw-r--r--src/components/telemetry_monitor/CMakeLists.txt1
-rwxr-xr-xtools/infrastructure/fix_style.sh46
74 files changed, 4549 insertions, 3627 deletions
diff --git a/src/appMain/CMakeLists.txt b/src/appMain/CMakeLists.txt
index 88813b5bfb..bdc0ebe1fd 100644
--- a/src/appMain/CMakeLists.txt
+++ b/src/appMain/CMakeLists.txt
@@ -49,6 +49,7 @@ include_directories(
${COMPONENTS_DIR}/telemetry_monitor/include
${POLICY_PATH}/include/
${POLICY_GLOBAL_INCLUDE_PATH}/
+ ${COMPONENTS_DIR}/rpc_base/include/
${COMPONENTS_DIR}/resumption/include
${COMPONENTS_DIR}/dbus/include
${CMAKE_BINARY_DIR}/src/components
diff --git a/src/components/application_manager/include/application_manager/application_impl.h b/src/components/application_manager/include/application_manager/application_impl.h
index 1c9089ca50..ae63a2f8ae 100644
--- a/src/components/application_manager/include/application_manager/application_impl.h
+++ b/src/components/application_manager/include/application_manager/application_impl.h
@@ -156,7 +156,7 @@ class ApplicationImpl : public virtual InitialApplicationDataImpl,
void set_device(connection_handler::DeviceHandle device);
virtual uint32_t get_grammar_id() const;
virtual void set_grammar_id(uint32_t value);
- bool is_audio() const FINAL OVERRIDE;
+ bool is_audio() const OVERRIDE;
virtual void set_protocol_version(const ProtocolVersion& protocol_version);
virtual ProtocolVersion protocol_version() const;
diff --git a/src/components/application_manager/include/application_manager/application_manager_impl.h b/src/components/application_manager/include/application_manager/application_manager_impl.h
index 0c576fa9ce..39be11805a 100644
--- a/src/components/application_manager/include/application_manager/application_manager_impl.h
+++ b/src/components/application_manager/include/application_manager/application_manager_impl.h
@@ -508,6 +508,67 @@ class ApplicationManagerImpl
}
/**
+ * @brief Checks, if given RPC is allowed at current HMI level for specific
+ * application in policy table
+ * @param app Application
+ * @param hmi_level Current HMI level of application
+ * @param function_id FunctionID of RPC
+ * @param params_permissions Permissions for RPC parameters (e.g.
+ * SubscribeVehicleData) defined in policy table
+ * @return SUCCESS, if allowed, otherwise result code of check
+ */
+ mobile_apis::Result::eType CheckPolicyPermissions(
+ const ApplicationSharedPtr app,
+ const std::string& function_id,
+ const RPCParams& rpc_params,
+ CommandParametersPermissions* params_permissions = NULL) OVERRIDE;
+
+ /**
+ * @brief IsApplicationForbidden allows to distinguish if application is
+ * not allowed to register, becuase of spaming.
+ *
+ * @param connection_key the conection key ofthe required application
+ *
+ * @param mobile_app_id application's mobile(policy) identifier.
+ *
+ * @return true in case application is allowed to register, false otherwise.
+ */
+ bool IsApplicationForbidden(uint32_t connection_key,
+ const std::string& mobile_app_id);
+
+ struct ApplicationsAppIdSorter {
+ bool operator()(const ApplicationSharedPtr lhs,
+ const ApplicationSharedPtr rhs) {
+ return lhs->app_id() < rhs->app_id();
+ }
+ };
+
+ struct ApplicationsMobileAppIdSorter {
+ bool operator()(const ApplicationSharedPtr lhs,
+ const ApplicationSharedPtr rhs) {
+ if (lhs->policy_app_id() == rhs->policy_app_id()) {
+ return lhs->device() < rhs->device();
+ }
+ return lhs->policy_app_id() < rhs->policy_app_id();
+ }
+ };
+
+ // typedef for Applications list
+ typedef std::set<ApplicationSharedPtr, ApplicationsAppIdSorter> ApplictionSet;
+
+ typedef std::set<ApplicationSharedPtr, ApplicationsPolicyAppIdSorter>
+ AppsWaitRegistrationSet;
+
+ // typedef for Applications list iterator
+ typedef ApplictionSet::iterator ApplictionSetIt;
+
+ // typedef for Applications list const iterator
+ typedef ApplictionSet::const_iterator ApplictionSetConstIt;
+
+ DataAccessor<AppsWaitRegistrationSet> apps_waiting_for_registration() const;
+ ApplicationConstSharedPtr waiting_app(const uint32_t hmi_id) const;
+
+ /**
* @brief SetState Change regular audio state
* @param app appication to setup regular State
* @param audio_state of new regular state
@@ -740,12 +801,12 @@ class ApplicationManagerImpl
// Overriden SecurityManagerListener method
bool OnHandshakeDone(
uint32_t connection_key,
- security_manager::SSLContext::HandshakeResult result) OVERRIDE FINAL;
+ security_manager::SSLContext::HandshakeResult result) OVERRIDE;
- void OnCertificateUpdateRequired() OVERRIDE FINAL;
+ void OnCertificateUpdateRequired() OVERRIDE;
security_manager::SSLContext::HandshakeContext GetHandshakeContext(
- uint32_t key) const OVERRIDE FINAL;
+ uint32_t key) const OVERRIDE;
#endif // ENABLE_SECURITY
/**
@@ -943,24 +1004,14 @@ class ApplicationManagerImpl
protocol_handler::ProtocolHandler& protocol_handler() const OVERRIDE;
virtual policy::PolicyHandlerInterface& GetPolicyHandler() OVERRIDE {
- return policy_handler_;
+ return *policy_handler_;
}
- /**
- * @brief Checks, if given RPC is allowed at current HMI level for specific
- * application in policy table
- * @param policy_app_id Application id
- * @param hmi_level Current HMI level of application
- * @param function_id FunctionID of RPC
- * @param params_permissions Permissions for RPC parameters (e.g.
- * SubscribeVehicleData) defined in policy table
- * @return SUCCESS, if allowed, otherwise result code of check
- */
- mobile_apis::Result::eType CheckPolicyPermissions(
- const std::string& policy_app_id,
- mobile_apis::HMILevel::eType hmi_level,
- mobile_apis::FunctionID::eType function_id,
- const RPCParams& rpc_params,
- CommandParametersPermissions* params_permissions = NULL) OVERRIDE;
+
+ virtual const policy::PolicyHandlerInterface& GetPolicyHandler()
+ const OVERRIDE {
+ return *policy_handler_;
+ }
+
/*
* @brief Function Should be called when Low Voltage is occured
*/
@@ -987,13 +1038,6 @@ class ApplicationManagerImpl
policy::DeviceConsent GetUserConsentForDevice(
const std::string& device_id) const OVERRIDE;
- struct ApplicationsAppIdSorter {
- bool operator()(const ApplicationSharedPtr lhs,
- const ApplicationSharedPtr rhs) {
- return lhs->app_id() < rhs->app_id();
- }
- };
-
// typedef for Applications list
typedef std::set<std::string> ForbiddenApps;
@@ -1391,7 +1435,7 @@ class ApplicationManagerImpl
hmi_message_handler::HMIMessageHandler* hmi_handler_;
connection_handler::ConnectionHandler* connection_handler_;
- policy::PolicyHandler policy_handler_;
+ std::auto_ptr<policy::PolicyHandlerInterface> policy_handler_;
protocol_handler::ProtocolHandler* protocol_handler_;
request_controller::RequestController request_ctrl_;
diff --git a/src/components/application_manager/include/application_manager/message_helper.h b/src/components/application_manager/include/application_manager/message_helper.h
index 0ea4fc8ca5..75bd767198 100644
--- a/src/components/application_manager/include/application_manager/message_helper.h
+++ b/src/components/application_manager/include/application_manager/message_helper.h
@@ -137,6 +137,8 @@ class MessageHelper {
static std::string MobileResultToString(
mobile_apis::Result::eType mobile_result);
+ static std::string GetDeviceMacAddressForHandle(
+ const uint32_t device_handle, const ApplicationManager& app_mngr);
/**
* @brief Converts string to mobile Result enum value
* @param mobile_result stringified value
@@ -359,15 +361,24 @@ class MessageHelper {
uint32_t correlation_id,
ApplicationManager& app_mngr);
- /**
- * @brief Send GetListOfPermissions response to HMI
- * @param permissions Array of groups permissions
- * @param correlation_id Correlation id of request
- */
+/**
+ * @brief Send GetListOfPermissions response to HMI
+ * @param permissions Array of groups permissions
+ * @param external_consent_status External user consent status
+ * @param correlation_id Correlation id of request
+ */
+#ifdef EXTERNAL_PROPRIETARY_MODE
static void SendGetListOfPermissionsResponse(
const std::vector<policy::FunctionalGroupPermission>& permissions,
- uint32_t correlation_id,
+ const policy::ExternalConsentStatus& external_consent_status,
+ const uint32_t correlation_id,
+ ApplicationManager& app_mngr);
+#else
+ static void SendGetListOfPermissionsResponse(
+ const std::vector<policy::FunctionalGroupPermission>& permissions,
+ const uint32_t correlation_id,
ApplicationManager& app_mngr);
+#endif // EXTERNAL_PROPRIETARY_MODE
/*
* @brief Sends notification to HMI to start video streaming
diff --git a/src/components/application_manager/include/application_manager/policies/external/delegates/app_permission_delegate.h b/src/components/application_manager/include/application_manager/policies/external/delegates/app_permission_delegate.h
index 544628117a..f501598e0f 100644
--- a/src/components/application_manager/include/application_manager/policies/external/delegates/app_permission_delegate.h
+++ b/src/components/application_manager/include/application_manager/policies/external/delegates/app_permission_delegate.h
@@ -58,6 +58,7 @@ class AppPermissionDelegate : public threads::ThreadDelegate {
*/
AppPermissionDelegate(const uint32_t connection_key,
const PermissionConsent& permissions,
+ const ExternalConsentStatus& external_consent_status,
policy::PolicyHandlerInterface& policy_handler);
/**
@@ -75,6 +76,7 @@ class AppPermissionDelegate : public threads::ThreadDelegate {
private:
uint32_t connection_key_;
PermissionConsent permissions_;
+ ExternalConsentStatus external_consent_status_;
policy::PolicyHandlerInterface& policy_handler_;
};
diff --git a/src/components/application_manager/include/application_manager/policies/policy_handler.h b/src/components/application_manager/include/application_manager/policies/policy_handler.h
index 01b10b1c63..74d19c31f9 100644
--- a/src/components/application_manager/include/application_manager/policies/policy_handler.h
+++ b/src/components/application_manager/include/application_manager/policies/policy_handler.h
@@ -102,11 +102,11 @@ class PolicyHandler : public PolicyHandlerInterface,
#endif // EXTERNAL_PROPRIETARY_MODE
virtual bool GetPriority(const std::string& policy_app_id,
std::string* priority) const OVERRIDE;
- void CheckPermissions(const PTString& app_id,
- const PTString& hmi_level,
- const PTString& rpc,
- const RPCParams& rpc_params,
- CheckPermissionResult& result) OVERRIDE;
+ virtual void CheckPermissions(
+ const application_manager::ApplicationSharedPtr app,
+ const PTString& rpc,
+ const RPCParams& rpc_params,
+ CheckPermissionResult& result) OVERRIDE;
uint32_t GetNotificationsNumber(const std::string& priority) const OVERRIDE;
virtual DeviceConsent GetUserConsentForDevice(
@@ -193,25 +193,32 @@ class PolicyHandler : public PolicyHandlerInterface,
void SetDeviceInfo(const std::string& device_id,
const DeviceInfo& device_info) OVERRIDE;
- /**
- * @brief Store user-changed permissions consent to DB
- * @param connection_key Connection key of application or 0, if permissions
- * should be applied to all applications
- * @param permissions User-changed group permissions consent
- */
+/**
+ * @brief Store user-changed permissions consent to DB
+ * @param connection_key Connection key of application or 0, if permissions
+ * should be applied to all applications
+ * @param permissions User-changed group permissions consent
+ */
- /**
- * @brief Processes permissions changes received from system via
- * OnAppPermissionConsent notification
- * @param connection_key Connection key of application, 0 if no key has been
- * provided by notification
- * @param permissions Structure containing group permissions changes
- * @param ccs_status Structure containig customer connectivity settings
- * changes
- */
+/**
+ * @brief Processes permissions changes received from system via
+ * OnAppPermissionConsent notification
+ * @param connection_key Connection key of application, 0 if no key has been
+ * provided by notification
+ * @param permissions Structure containing group permissions changes
+ * @param external_consent_status Structure containig customer connectivity
+ * settings
+ * changes
+ */
+#ifdef EXTERNAL_PROPRIETARY_MODE
+ void OnAppPermissionConsent(
+ const uint32_t connection_key,
+ const PermissionConsent& permissions,
+ const ExternalConsentStatus& external_consent_status) OVERRIDE;
+#else
void OnAppPermissionConsent(const uint32_t connection_key,
- const PermissionConsent& permissions,
- const CCSStatus& ccs_status) FINAL;
+ const PermissionConsent& permissions) OVERRIDE;
+#endif
/**
* @brief Get appropriate message parameters and send them with response
@@ -255,13 +262,6 @@ class PolicyHandler : public PolicyHandlerInterface,
const std::string& policy_app_id) OVERRIDE;
/**
- * @brief Collects currently registered applications ids linked to their
- * device id
- * @return Collection of device_id-to-app_id links
- */
- ApplicationsLinks GetRegisteredLinks() const FINAL;
-
- /**
* @brief Set parameters from OnSystemInfoChanged to policy table
* @param language System language
*/
@@ -349,7 +349,9 @@ class PolicyHandler : public PolicyHandlerInterface,
* @param application_id The policy aplication id.
** @return function that will notify update manager about new application
*/
- StatusNotifier AddApplication(const std::string& application_id) OVERRIDE;
+ StatusNotifier AddApplication(
+ const std::string& application_id,
+ const rpc::policy_table_interface_base::AppHmiTypes& hmi_types) OVERRIDE;
/**
* Checks whether application is revoked
@@ -442,6 +444,10 @@ class PolicyHandler : public PolicyHandlerInterface,
void SetPolicyManager(utils::SharedPtr<PolicyManager> pm) {
policy_manager_ = pm;
}
+
+ AppIds& last_used_app_ids() {
+ return last_used_app_ids_;
+ }
#endif // BUILD_TESTS
#ifdef ENABLE_SECURITY
@@ -477,20 +483,29 @@ class PolicyHandler : public PolicyHandlerInterface,
*/
bool CheckStealFocus(const std::string& policy_app_id) const;
- /**
- * @brief Processes data received via OnAppPermissionChanged notification
- * from. Being started asyncronously from AppPermissionDelegate class.
- * Sets updated permissions and CCS for registered applications and
- * applications which already have appropriate group assigned which related to
- * devices already known by policy
- * @param connection_key Connection key of application, 0 if no key has been
- * provided within notification
- * @param ccs_status Customer connectivity settings changes to process
- * @param permissions Permissions changes to process
- */
- void OnAppPermissionConsentInternal(const uint32_t connection_key,
- const CCSStatus& ccs_status,
- PermissionConsent& out_permissions) FINAL;
+/**
+ * @brief Processes data received via OnAppPermissionChanged notification
+ * from. Being started asyncronously from AppPermissionDelegate class.
+ * Sets updated permissions and ExternalConsent for registered applications
+ * and
+ * applications which already have appropriate group assigned which related to
+ * devices already known by policy
+ * @param connection_key Connection key of application, 0 if no key has been
+ * provided within notification
+ * @param external_consent_status Customer connectivity settings changes to
+ * process
+ * @param permissions Permissions changes to process
+ */
+#ifdef EXTERNAL_PROPRIETARY_MODE
+ void OnAppPermissionConsentInternal(
+ const uint32_t connection_key,
+ const ExternalConsentStatus& external_consent_status,
+ PermissionConsent& out_permissions) OVERRIDE;
+#else
+ void OnAppPermissionConsentInternal(
+ const uint32_t connection_key,
+ PermissionConsent& out_permissions) OVERRIDE;
+#endif
/**
* @brief Sets days after epoch on successful policy update
@@ -560,13 +575,7 @@ class PolicyHandler : public PolicyHandlerInterface,
#endif // EXTERNAL_PROPRIETARY_MODE
bool SaveSnapshot(const BinaryMessage& pt_string, std::string& snap_path);
- /**
- * @brief Collects currently registered applications ids linked to their
- * device id
- * @param out_links Collection of device_id-to-app_id links
- */
- void GetRegisteredLinks(std::map<std::string, std::string>& out_links) const;
-
+ private:
static const std::string kLibrary;
/**
@@ -591,7 +600,7 @@ class PolicyHandler : public PolicyHandlerInterface,
* device id
* @param out_links Collection of device_id-to-app_id links
*/
- void GetRegisteredLinks(ApplicationsLinks& out_links) const;
+ void GetRegisteredLinks(std::map<std::string, std::string>& out_links) const;
private:
mutable sync_primitives::RWLock policy_manager_lock_;
@@ -617,7 +626,7 @@ class PolicyHandler : public PolicyHandlerInterface,
* consents to provide for HMI request and process response with possible
* changes done by user
*/
- ApplicationsLinks app_to_device_link_;
+ std::map<std::string, std::string> app_to_device_link_;
// Lock for app to device list
sync_primitives::Lock app_to_device_link_lock_;
diff --git a/src/components/application_manager/include/application_manager/smart_object_keys.h b/src/components/application_manager/include/application_manager/smart_object_keys.h
index 7ea3a7a20e..38c1b1d9cc 100644
--- a/src/components/application_manager/include/application_manager/smart_object_keys.h
+++ b/src/components/application_manager/include/application_manager/smart_object_keys.h
@@ -329,7 +329,7 @@ extern const char* const auto_complete_text_supported;
extern const char* const entity_type;
extern const char* const entity_id;
extern const char* const status;
-extern const char* const ccs_status;
+extern const char* const external_consent_status;
extern const char* const consented_functions;
extern const char* const source;
} // namespace strings
diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc
index 28c8a5677c..1febd05790 100644
--- a/src/components/application_manager/src/application_manager_impl.cc
+++ b/src/components/application_manager/src/application_manager_impl.cc
@@ -109,7 +109,7 @@ ApplicationManagerImpl::ApplicationManagerImpl(
, media_manager_(NULL)
, hmi_handler_(NULL)
, connection_handler_(NULL)
- , policy_handler_(policy_settings, *this)
+ , policy_handler_(new policy::PolicyHandler(policy_settings, *this))
, protocol_handler_(NULL)
, request_ctrl_(am_settings)
, hmi_so_factory_(NULL)
@@ -980,10 +980,10 @@ mobile_apis::HMILevel::eType ApplicationManagerImpl::GetDefaultHmiLevel(
LOG4CXX_AUTO_TRACE(logger_);
HMILevel::eType default_hmi = HMILevel::HMI_NONE;
- if (policy_handler_.PolicyEnabled()) {
+ if (GetPolicyHandler().PolicyEnabled()) {
const std::string policy_app_id = application->policy_app_id();
std::string default_hmi_string = "";
- if (policy_handler_.GetDefaultHmi(policy_app_id, &default_hmi_string)) {
+ if (GetPolicyHandler().GetDefaultHmi(policy_app_id, &default_hmi_string)) {
if ("BACKGROUND" == default_hmi_string) {
default_hmi = HMILevel::HMI_BACKGROUND;
} else if ("FULL" == default_hmi_string) {
@@ -1409,11 +1409,11 @@ void ApplicationManagerImpl::SendMessageToMobile(
}
}
}
- const mobile_apis::Result::eType check_result = CheckPolicyPermissions(
- app->policy_app_id(), app->hmi_level(), function_id, params);
+ const std::string string_functionID =
+ MessageHelper::StringifiedFunctionID(function_id);
+ const mobile_apis::Result::eType check_result =
+ CheckPolicyPermissions(app, string_functionID, params);
if (mobile_apis::Result::SUCCESS != check_result) {
- const std::string string_functionID =
- MessageHelper::StringifiedFunctionID(function_id);
LOG4CXX_WARN(logger_,
"Function \"" << string_functionID << "\" (#" << function_id
<< ") not allowed by policy");
@@ -2779,32 +2779,20 @@ void ApplicationManagerImpl::Handle(const impl::AudioData message) {
}
mobile_apis::Result::eType ApplicationManagerImpl::CheckPolicyPermissions(
- const std::string& policy_app_id,
- mobile_apis::HMILevel::eType hmi_level,
- mobile_apis::FunctionID::eType function_id,
+ const ApplicationSharedPtr app,
+ const std::string& function_id,
const RPCParams& rpc_params,
CommandParametersPermissions* params_permissions) {
- LOG4CXX_AUTO_TRACE(logger_);
+ LOG4CXX_INFO(logger_, "CheckPolicyPermissions");
// TODO(AOleynik): Remove check of policy_enable, when this flag will be
// unused in config file
if (!GetPolicyHandler().PolicyEnabled()) {
return mobile_apis::Result::SUCCESS;
}
- const std::string stringified_functionID =
- MessageHelper::StringifiedFunctionID(function_id);
- const std::string stringified_hmi_level =
- MessageHelper::StringifiedHMILevel(hmi_level);
- LOG4CXX_DEBUG(logger_,
- "Checking permissions for " << policy_app_id << " in "
- << stringified_hmi_level << " rpc "
- << stringified_functionID);
+ DCHECK(app);
policy::CheckPermissionResult result;
- GetPolicyHandler().CheckPermissions(policy_app_id,
- stringified_hmi_level,
- stringified_functionID,
- rpc_params,
- result);
+ GetPolicyHandler().CheckPermissions(app, function_id, rpc_params, result);
if (NULL != params_permissions) {
params_permissions->allowed_params = result.list_of_allowed_params;
@@ -2812,30 +2800,22 @@ mobile_apis::Result::eType ApplicationManagerImpl::CheckPolicyPermissions(
params_permissions->undefined_params = result.list_of_undefined_params;
}
- if (hmi_level == mobile_apis::HMILevel::HMI_NONE &&
- function_id != mobile_apis::FunctionID::UnregisterAppInterfaceID) {
- ApplicationSharedPtr app = application_by_policy_id(policy_app_id);
- if (!app) {
- LOG4CXX_ERROR(logger_, "No application for policy id " << policy_app_id);
- return mobile_apis::Result::GENERIC_ERROR;
- }
+ if (app->hmi_level() == mobile_apis::HMILevel::HMI_NONE &&
+ function_id != MessageHelper::StringifiedFunctionID(
+ mobile_apis::FunctionID::UnregisterAppInterfaceID)) {
if (result.hmi_level_permitted != policy::kRpcAllowed) {
app->usage_report().RecordRpcSentInHMINone();
}
}
- const std::string log_msg = "Application: " + policy_app_id + ", RPC: " +
- stringified_functionID + ", HMI status: " +
- stringified_hmi_level;
-
+#ifdef ENABLE_LOG
+ const std::string log_msg =
+ "Application: " + app->policy_app_id() + ", RPC: " + function_id +
+ ", HMI status: " + MessageHelper::StringifiedHMILevel(app->hmi_level());
+#endif // ENABLE_LOG
if (result.hmi_level_permitted != policy::kRpcAllowed) {
LOG4CXX_WARN(logger_, "Request is blocked by policies. " << log_msg);
- ApplicationSharedPtr app = application_by_policy_id(policy_app_id);
- if (!app) {
- LOG4CXX_ERROR(logger_, "No application for policy id " << policy_app_id);
- return mobile_apis::Result::GENERIC_ERROR;
- }
app->usage_report().RecordPolicyRejectedRpcCall();
switch (result.hmi_level_permitted) {
@@ -3190,7 +3170,7 @@ bool ApplicationManagerImpl::IsApplicationForbidden(
policy::DeviceConsent ApplicationManagerImpl::GetUserConsentForDevice(
const std::string& device_id) const {
- return policy_handler_.GetUserConsentForDevice(device_id);
+ return GetPolicyHandler().GetUserConsentForDevice(device_id);
}
void ApplicationManagerImpl::OnWakeUp() {
diff --git a/src/components/application_manager/src/commands/hmi/on_app_permission_consent_notification.cc b/src/components/application_manager/src/commands/hmi/on_app_permission_consent_notification.cc
index 2219d508ff..2e408dcae0 100644
--- a/src/components/application_manager/src/commands/hmi/on_app_permission_consent_notification.cc
+++ b/src/components/application_manager/src/commands/hmi/on_app_permission_consent_notification.cc
@@ -40,6 +40,7 @@
#include <string>
#include "policy/policy_types.h"
#include "smart_objects/smart_object.h"
+#include "utils/make_shared.h"
namespace {
@@ -75,19 +76,22 @@ struct PermissionsAppender
policy::PermissionConsent& consents_;
};
+#ifdef EXTERNAL_PROPRIETARY_MODE
/**
* @brief Converts SmartObject data to customer connectivity status item and
* appends to collection
*/
-struct CCSStatusAppender
+struct ExternalConsentStatusAppender
: std::unary_function<void, const smart_objects::SmartArray::value_type&> {
- CCSStatusAppender(policy::CCSStatus& ccs_status) : ccs_status_(ccs_status) {}
+ ExternalConsentStatusAppender(
+ policy::ExternalConsentStatus& external_consent_status)
+ : external_consent_status_(external_consent_status) {}
void operator()(const smart_objects::SmartArray::value_type& item) const {
using namespace policy;
using namespace hmi_apis;
using namespace application_manager;
- CCSStatusItem status_item(
+ ExternalConsentStatusItem status_item(
static_cast<uint32_t>(item[strings::entity_type].asUInt()),
static_cast<uint32_t>(item[strings::entity_id].asUInt()),
static_cast<Common_EntityStatus::eType>(
@@ -95,13 +99,13 @@ struct CCSStatusAppender
? policy::kStatusOn
: policy::kStatusOff);
- ccs_status_.insert(status_item);
+ external_consent_status_.insert(status_item);
}
private:
- policy::CCSStatus& ccs_status_;
+ policy::ExternalConsentStatus& external_consent_status_;
};
-
+#endif
} // namespace
namespace application_manager {
@@ -122,15 +126,15 @@ void OnAppPermissionConsentNotification::Run() {
policy::PermissionConsent permission_consent;
- PermissionConsent permission_consent;
+ // If user defined group permissions for specific app
+ if (msg_params.keyExists(strings::app_id)) {
+ connection_key = msg_params[strings::app_id].asUInt();
+ }
+
if (msg_params.keyExists(strings::consented_functions)) {
- const SmartArray* user_consents =
+ const smart_objects::SmartArray* user_consent =
msg_params[strings::consented_functions].asArray();
- if (msg_params.keyExists("consentedFunctions")) {
- smart_objects::SmartArray* user_consent =
- msg_params["consentedFunctions"].asArray();
-
smart_objects::SmartArray::const_iterator it = user_consent->begin();
smart_objects::SmartArray::const_iterator it_end = user_consent->end();
for (; it != it_end; ++it) {
@@ -150,17 +154,23 @@ void OnAppPermissionConsentNotification::Run() {
permission_consent.consent_source = msg_params[strings::source].asString();
}
-
- CCSStatus ccs_status;
- if (msg_params.keyExists(strings::ccs_status)) {
- const SmartArray* system_ccs_status =
- msg_params[strings::ccs_status].asArray();
-
- application_manager_.GetPolicyHandler().OnAppPermissionConsent(
- connection_key, permission_consent);
+#ifdef EXTERNAL_PROPRIETARY_MODE
+ policy::ExternalConsentStatus external_consent_status;
+ if (msg_params.keyExists(strings::external_consent_status)) {
+ const utils::SharedPtr<smart_objects::SmartArray>
+ system_external_consent_status =
+ msg_params[strings::external_consent_status].asArray();
+ ExternalConsentStatusAppender status_appender(external_consent_status);
+ std::for_each(system_external_consent_status->begin(),
+ system_external_consent_status->end(),
+ status_appender);
}
+ application_manager_.GetPolicyHandler().OnAppPermissionConsent(
+ connection_key, permission_consent, external_consent_status);
+#else
+ application_manager_.GetPolicyHandler().OnAppPermissionConsent(
+ connection_key, permission_consent);
+#endif
}
-
-} // namespace commands
-
+} // commands
} // namespace application_manager
diff --git a/src/components/application_manager/src/commands/mobile/register_app_interface_request.cc b/src/components/application_manager/src/commands/mobile/register_app_interface_request.cc
index 035a1666f6..413aa1f669 100644
--- a/src/components/application_manager/src/commands/mobile/register_app_interface_request.cc
+++ b/src/components/application_manager/src/commands/mobile/register_app_interface_request.cc
@@ -45,6 +45,8 @@
#include "application_manager/app_launch/app_launch_ctrl.h"
#include "application_manager/message_helper.h"
#include "application_manager/resumption/resume_ctrl.h"
+#include "application_manager/policies/policy_handler.h"
+#include "config_profile/profile.h"
#include "interfaces/MOBILE_API.h"
#include "interfaces/generated_msg_version.h"
@@ -140,6 +142,13 @@ struct CheckMissedTypes {
std::string& log_;
};
+class SmartArrayValueExtractor {
+ public:
+ AppHmiType operator()(const smart_objects::SmartObject& so) const {
+ return static_cast<AppHmiType>(so.asInt());
+ }
+};
+
struct IsSameNickname {
IsSameNickname(const custom_str::CustomString& app_id) : app_id_(app_id) {}
bool operator()(const policy::StringArray::value_type& nickname) const {
@@ -636,8 +645,21 @@ void RegisterAppInterfaceRequest::SendRegisterAppInterfaceResponseToMobile() {
application->mac_address());
}
- policy::StatusNotifier notify_upd_manager =
- GetPolicyHandler().AddApplication(application->policy_app_id());
+ AppHmiTypes hmi_types;
+ if ((*message_)[strings::msg_params].keyExists(strings::app_hmi_type)) {
+ smart_objects::SmartArray* hmi_types_ptr =
+ (*message_)[strings::msg_params][strings::app_hmi_type].asArray();
+ DCHECK_OR_RETURN_VOID(hmi_types_ptr);
+ SmartArrayValueExtractor extractor;
+ if (hmi_types_ptr && 0 < hmi_types_ptr->size()) {
+ std::transform(hmi_types_ptr->begin(),
+ hmi_types_ptr->end(),
+ std::back_inserter(hmi_types),
+ extractor);
+ }
+ }
+ policy::StatusNotifier notify_upd_manager = GetPolicyHandler().AddApplication(
+ application->policy_app_id(), hmi_types);
SendResponse(true, result_code, add_info.c_str(), &response_params);
SendOnAppRegisteredNotificationToHMI(
*(application.get()), resumption, need_restore_vr);
@@ -899,7 +921,7 @@ mobile_apis::Result::eType RegisterAppInterfaceRequest::CheckWithPolicyData() {
// If AppHMIType is not included in policy - allow any type
if (!app_hmi_types.empty()) {
if (message[strings::msg_params].keyExists(strings::app_hmi_type)) {
- // If AppHMITypes are partially same, the system should allow those listed
+ // If AppHmiTypes are partially same, the system should allow those listed
// in the policy table and send warning info on missed values
smart_objects::SmartArray app_types =
*(message[strings::msg_params][strings::app_hmi_type].asArray());
@@ -909,13 +931,13 @@ mobile_apis::Result::eType RegisterAppInterfaceRequest::CheckWithPolicyData() {
std::for_each(app_types.begin(), app_types.end(), checker);
if (!log.empty()) {
response_info_ =
- "Following AppHMITypes are not present in policy "
+ "Following AppHmiTypes are not present in policy "
"table:" +
log;
result_checking_app_hmi_type_ = mobile_apis::Result::WARNINGS;
}
}
- // Replace AppHMITypes in request with values allowed by policy table
+ // Replace AppHmiTypes in request with values allowed by policy table
message[strings::msg_params][strings::app_hmi_type] =
smart_objects::SmartObject(smart_objects::SmartType_Array);
diff --git a/src/components/application_manager/src/message_helper/message_helper.cc b/src/components/application_manager/src/message_helper/message_helper.cc
index 45d2de46a1..4926bcc03a 100644
--- a/src/components/application_manager/src/message_helper/message_helper.cc
+++ b/src/components/application_manager/src/message_helper/message_helper.cc
@@ -69,6 +69,8 @@ namespace {
typedef std::map<std::string, hmi_apis::Common_AppPriority::eType>
CommonAppPriorityMap;
+typedef std::vector<policy::FunctionalGroupPermission> PermissionsList;
+
CommonAppPriorityMap app_priority_values = {
{"NORMAL", hmi_apis::Common_AppPriority::NORMAL},
{"COMMUNICATION", hmi_apis::Common_AppPriority::COMMUNICATION},
@@ -124,32 +126,6 @@ struct GroupsAppender
int32_t index_;
};
-struct GroupsAppender
- : std::unary_function<void, const PermissionsList::value_type&> {
- GroupsAppender(smart_objects::SmartObject& groups)
- : groups_(groups), index_(0) {}
-
- void operator()(const PermissionsList::value_type& item) {
- using namespace smart_objects;
- using namespace policy;
- groups_[index_] = SmartObject(SmartType_Map);
-
- SmartObject& group = groups_[index_];
- group[strings::name] = item.group_alias;
- group[strings::id] = item.group_id;
- GroupConsent permission_state = item.state;
- // If state undefined, 'allowed' parameter should be absent
- if (kGroupUndefined != permission_state) {
- group["allowed"] = kGroupAllowed == permission_state;
- }
- ++index_;
- }
-
- private:
- smart_objects::SmartObject& groups_;
- int32_t index_;
-};
-
#ifdef EXTERNAL_PROPRIETARY_MODE
struct ExternalConsentStatusAppender
: std::unary_function<void,
@@ -164,10 +140,10 @@ struct ExternalConsentStatusAppender
status_[index_] = SmartObject(SmartType_Map);
SmartObject& external_consent_status = status_[index_];
- external_consent_status["entityType"] = item.entity_type;
- external_consent_status["entityID"] = item.entity_id;
- external_consent_status["status"] =
- 0 == strcasecmp("ON", item.entity_status.c_str())
+ external_consent_status[strings::entity_type] = item.entity_type_;
+ external_consent_status[strings::entity_id] = item.entity_id_;
+ external_consent_status[strings::status] =
+ policy::kStatusOn == item.status_
? static_cast<int32_t>(Common_EntityStatus::ON)
: static_cast<int32_t>(Common_EntityStatus::OFF);
++index_;
@@ -179,41 +155,39 @@ struct ExternalConsentStatusAppender
};
#endif // EXTERNAL_PROPRIETARY_MODE
-} // namespace
+} // namespace
std::pair<std::string, VehicleDataType> kVehicleDataInitializer[] = {
- std::make_pair(strings::gps, VehicleDataType::GPS),
- std::make_pair(strings::speed, VehicleDataType::SPEED),
- std::make_pair(strings::rpm, VehicleDataType::RPM),
- std::make_pair(strings::fuel_level, VehicleDataType::FUELLEVEL),
- std::make_pair(strings::fuel_level_state, VehicleDataType::FUELLEVEL_STATE),
- std::make_pair(strings::instant_fuel_consumption,
- VehicleDataType::FUELCONSUMPTION),
- std::make_pair(strings::external_temp, VehicleDataType::EXTERNTEMP),
- std::make_pair(strings::vin, VehicleDataType::VIN),
- std::make_pair(strings::prndl, VehicleDataType::PRNDL),
- std::make_pair(strings::tire_pressure, VehicleDataType::TIREPRESSURE),
- std::make_pair(strings::odometer, VehicleDataType::ODOMETER),
- std::make_pair(strings::belt_status, VehicleDataType::BELTSTATUS),
- std::make_pair(strings::body_information, VehicleDataType::BODYINFO),
- std::make_pair(strings::device_status, VehicleDataType::DEVICESTATUS),
- std::make_pair(strings::driver_braking, VehicleDataType::BRAKING),
- std::make_pair(strings::wiper_status, VehicleDataType::WIPERSTATUS),
- std::make_pair(strings::head_lamp_status, VehicleDataType::HEADLAMPSTATUS),
- std::make_pair(strings::e_call_info, VehicleDataType::ECALLINFO),
- std::make_pair(strings::airbag_status, VehicleDataType::AIRBAGSTATUS),
- std::make_pair(strings::emergency_event, VehicleDataType::EMERGENCYEVENT),
- std::make_pair(strings::cluster_mode_status,
- VehicleDataType::CLUSTERMODESTATUS),
- std::make_pair(strings::my_key, VehicleDataType::MYKEY),
+ std::make_pair(strings::gps, GPS),
+ std::make_pair(strings::speed, SPEED),
+ std::make_pair(strings::rpm, RPM),
+ std::make_pair(strings::fuel_level, FUELLEVEL),
+ std::make_pair(strings::fuel_level_state, FUELLEVEL_STATE),
+ std::make_pair(strings::instant_fuel_consumption, FUELCONSUMPTION),
+ std::make_pair(strings::external_temp, EXTERNTEMP),
+ std::make_pair(strings::vin, VIN),
+ std::make_pair(strings::prndl, PRNDL),
+ std::make_pair(strings::tire_pressure, TIREPRESSURE),
+ std::make_pair(strings::odometer, ODOMETER),
+ std::make_pair(strings::belt_status, BELTSTATUS),
+ std::make_pair(strings::body_information, BODYINFO),
+ std::make_pair(strings::device_status, DEVICESTATUS),
+ std::make_pair(strings::driver_braking, BRAKING),
+ std::make_pair(strings::wiper_status, WIPERSTATUS),
+ std::make_pair(strings::head_lamp_status, HEADLAMPSTATUS),
+ std::make_pair(strings::e_call_info, ECALLINFO),
+ std::make_pair(strings::airbag_status, AIRBAGSTATUS),
+ std::make_pair(strings::emergency_event, EMERGENCYEVENT),
+ std::make_pair(strings::cluster_mode_status, CLUSTERMODESTATUS),
+ std::make_pair(strings::my_key, MYKEY),
/*
NOT DEFINED in mobile API
- std::make_pair(strings::gps, VehicleDataType::BATTVOLTAGE),
+ std::make_pair(strings::gps,
+ BATTVOLTAGE),
*/
- std::make_pair(strings::engine_torque, VehicleDataType::ENGINETORQUE),
- std::make_pair(strings::acc_pedal_pos, VehicleDataType::ACCPEDAL),
- std::make_pair(strings::steering_wheel_angle,
- VehicleDataType::STEERINGWHEEL),
+ std::make_pair(strings::engine_torque, ENGINETORQUE),
+ std::make_pair(strings::acc_pedal_pos, ACCPEDAL),
+ std::make_pair(strings::steering_wheel_angle, STEERINGWHEEL),
};
const VehicleData MessageHelper::vehicle_data_(
@@ -281,17 +255,6 @@ const uint32_t MessageHelper::GetPriorityCode(const std::string& priority) {
return static_cast<uint32_t>(hmi_apis::Common_AppPriority::INVALID_ENUM);
}
-std::string MessageHelper::CommonLanguageToString(
- hmi_apis::Common_Language::eType language) {
- using namespace NsSmartDeviceLink::NsSmartObjects;
- const char* str = 0;
- if (EnumConversionHelper<hmi_apis::Common_Language::eType>::EnumToCString(
- language, &str)) {
- return str ? str : "";
- }
- return std::string();
-}
-
hmi_apis::Common_Language::eType MessageHelper::CommonLanguageFromString(
const std::string& language) {
using namespace NsSmartDeviceLink::NsSmartObjects;
@@ -303,6 +266,26 @@ hmi_apis::Common_Language::eType MessageHelper::CommonLanguageFromString(
return hmi_apis::Common_Language::INVALID_ENUM;
}
+std::string MessageHelper::GetDeviceMacAddressForHandle(
+ const uint32_t device_handle, const ApplicationManager& app_mngr) {
+ std::string device_mac_address = "";
+ app_mngr.connection_handler().get_session_observer().GetDataOnDeviceID(
+ device_handle, NULL, NULL, &device_mac_address);
+ LOG4CXX_DEBUG(logger_, "result : " << device_handle);
+ return device_mac_address;
+}
+
+std::string MessageHelper::CommonLanguageToString(
+ hmi_apis::Common_Language::eType language) {
+ using namespace NsSmartDeviceLink::NsSmartObjects;
+ const char* str = 0;
+ if (EnumConversionHelper<hmi_apis::Common_Language::eType>::EnumToCString(
+ language, &str)) {
+ return str ? str : "";
+ }
+ return std::string();
+}
+
smart_objects::SmartObjectSPtr MessageHelper::CreateRequestObject(
const uint32_t correlation_id) {
using namespace smart_objects;
@@ -1666,46 +1649,79 @@ void MessageHelper::SendGetUserFriendlyMessageResponse(
app_mngr.ManageHMICommand(message);
}
+#ifdef EXTERNAL_PROPRIETARY_MODE
void MessageHelper::SendGetListOfPermissionsResponse(
const std::vector<policy::FunctionalGroupPermission>& permissions,
- const uint32_t correlation_id,
+ const policy::ExternalConsentStatus& external_consent_status,
+ uint32_t correlation_id,
ApplicationManager& app_mngr) {
- smart_objects::SmartObject message(smart_objects::SmartType_Map);
+ using namespace smart_objects;
+ using namespace hmi_apis;
- message[strings::params][strings::function_id] =
- hmi_apis::FunctionID::SDL_GetListOfPermissions;
- message[strings::params][strings::message_type] = MessageType::kResponse;
- message[strings::params][strings::correlation_id] = correlation_id;
- message[strings::params][hmi_response::code] = 0;
+ SmartObjectSPtr message = utils::MakeShared<SmartObject>(SmartType_Map);
+ DCHECK_OR_RETURN_VOID(message);
+
+ SmartObject& params = (*message)[strings::params];
+
+ params[strings::function_id] = FunctionID::SDL_GetListOfPermissions;
+ params[strings::message_type] = MessageType::kResponse;
+ params[strings::correlation_id] = correlation_id;
+ params[hmi_response::code] = static_cast<int32_t>(Common_Result::SUCCESS);
+
+ SmartObject& msg_params = (*message)[strings::msg_params];
const std::string allowed_functions = "allowedFunctions";
- message[strings::msg_params][allowed_functions] =
- smart_objects::SmartObject(smart_objects::SmartType_Array);
+ msg_params[allowed_functions] = SmartObject(SmartType_Array);
- smart_objects::SmartObject& allowed_functions_array =
- message[strings::msg_params][allowed_functions];
+ SmartObject& allowed_functions_array = msg_params[allowed_functions];
- std::vector<policy::FunctionalGroupPermission>::const_iterator it =
- permissions.begin();
- std::vector<policy::FunctionalGroupPermission>::const_iterator it_end =
- permissions.end();
- for (uint32_t index = 0; it != it_end; ++it, ++index) {
- allowed_functions_array[index] =
- smart_objects::SmartObject(smart_objects::SmartType_Map);
+ GroupsAppender groups_appender(allowed_functions_array);
+ std::for_each(permissions.begin(), permissions.end(), groups_appender);
- smart_objects::SmartObject& item = allowed_functions_array[index];
- item[strings::name] = (*it).group_alias;
- item[strings::id] = (*it).group_id;
- policy::GroupConsent permission_state = (*it).state;
- // If state undefined, 'allowed' parameter should be absent
- if (policy::kGroupUndefined != permission_state) {
- item["allowed"] = policy::kGroupAllowed == permission_state;
- }
- }
+ const std::string external_consent_status_key = "externalConsentStatus";
+ msg_params[external_consent_status_key] = SmartObject(SmartType_Array);
- app_mngr.ManageHMICommand(
- utils::MakeShared<smart_objects::SmartObject>(message));
+ SmartObject& external_consent_status_array =
+ msg_params[external_consent_status_key];
+
+ ExternalConsentStatusAppender external_consent_status_appender(
+ external_consent_status_array);
+ std::for_each(external_consent_status.begin(),
+ external_consent_status.end(),
+ external_consent_status_appender);
+
+ app_mngr.ManageHMICommand(message);
+}
+#else
+void MessageHelper::SendGetListOfPermissionsResponse(
+ const std::vector<policy::FunctionalGroupPermission>& permissions,
+ uint32_t correlation_id,
+ ApplicationManager& app_mngr) {
+ using namespace smart_objects;
+ using namespace hmi_apis;
+
+ SmartObjectSPtr message = utils::MakeShared<SmartObject>(SmartType_Map);
+ DCHECK_OR_RETURN_VOID(message);
+
+ SmartObject& params = (*message)[strings::params];
+
+ params[strings::function_id] = FunctionID::SDL_GetListOfPermissions;
+ params[strings::message_type] = MessageType::kResponse;
+ params[strings::correlation_id] = correlation_id;
+ params[hmi_response::code] = static_cast<int32_t>(Common_Result::SUCCESS);
+
+ SmartObject& msg_params = (*message)[strings::msg_params];
+
+ const std::string allowed_functions = "allowedFunctions";
+ msg_params[allowed_functions] = SmartObject(SmartType_Array);
+
+ SmartObject& allowed_functions_array = msg_params[allowed_functions];
+
+ GroupsAppender groups_appender(allowed_functions_array);
+ std::for_each(permissions.begin(), permissions.end(), groups_appender);
+ app_mngr.ManageHMICommand(message);
}
+#endif // EXTERNAL_PROPRIETARY_MODE
smart_objects::SmartObjectSPtr MessageHelper::CreateNegativeResponse(
uint32_t connection_key,
diff --git a/src/components/application_manager/src/policies/delegates/app_permission_delegate.cc b/src/components/application_manager/src/policies/delegates/app_permission_delegate.cc
index 5ec184e563..871e96442a 100644
--- a/src/components/application_manager/src/policies/delegates/app_permission_delegate.cc
+++ b/src/components/application_manager/src/policies/delegates/app_permission_delegate.cc
@@ -36,18 +36,35 @@
namespace policy {
CREATE_LOGGERPTR_GLOBAL(logger_, "PolicyHandler")
+#ifdef EXTERNAL_PROPRIETARY_MODE
AppPermissionDelegate::AppPermissionDelegate(
const uint32_t connection_key,
const PermissionConsent& permissions,
+ const ExternalConsentStatus& external_consent_status,
policy::PolicyHandlerInterface& policy_handler)
: connection_key_(connection_key)
, permissions_(permissions)
+ , external_consent_status_(external_consent_status)
, policy_handler_(policy_handler) {}
+#else
+AppPermissionDelegate::AppPermissionDelegate(
+ const uint32_t connection_key,
+ const PermissionConsent& permissions,
+ policy::PolicyHandlerInterface& policy_handler)
+ : connection_key_(connection_key)
+ , permissions_(permissions)
+ , policy_handler_(policy_handler) {}
+#endif
void AppPermissionDelegate::threadMain() {
LOG4CXX_AUTO_TRACE(logger_);
+
+#ifdef EXTERNAL_PROPRIETARY_MODE
policy_handler_.OnAppPermissionConsentInternal(
- connection_key_, ccs_status_, permissions_);
+ connection_key_, external_consent_status_, permissions_);
+#else
+ policy_handler_.OnAppPermissionConsentInternal(connection_key_, permissions_);
+#endif
}
void AppPermissionDelegate::exitThreadMain() {
diff --git a/src/components/application_manager/src/policies/policy_handler.cc b/src/components/application_manager/src/policies/policy_handler.cc
index 6c12edfbf4..d2a60ab240 100644
--- a/src/components/application_manager/src/policies/policy_handler.cc
+++ b/src/components/application_manager/src/policies/policy_handler.cc
@@ -37,7 +37,6 @@
#include <functional>
#include <utility>
#include "application_manager/smart_object_keys.h"
-
#include "application_manager/policies/delegates/app_permission_delegate.h"
#include "policy/status.h"
#include "application_manager/application_manager.h"
@@ -211,43 +210,6 @@ struct SDLAllowedNotification {
*/
struct LinksCollector {
LinksCollector(const ApplicationManager& application_manager,
- ApplicationsLinks& out_app_to_device_link)
- : application_manager_(application_manager)
- , out_app_to_device_link_(out_app_to_device_link) {
- out_app_to_device_link_.clear();
- }
-
- void operator()(const ApplicationSharedPtr& app) {
- if (!app.valid()) {
- LOG4CXX_WARN(logger_,
- "Invalid pointer to application was passed."
- "Skip current application.");
- return;
- }
- DeviceParams device_params = GetDeviceParams(
- app->device(),
- application_manager_.connection_handler().get_session_observer());
- const std::string app_id = app->policy_app_id();
- if (device_params.device_mac_address.empty()) {
- LOG4CXX_WARN(logger_,
- "Couldn't find device, which hosts application " << app_id);
- return;
- }
- out_app_to_device_link_.insert(
- std::make_pair(device_params.device_mac_address, app_id));
- }
-
- private:
- const ApplicationManager& application_manager_;
- ApplicationsLinks& out_app_to_device_link_;
-};
-
-/**
- * @brief Gets from system list of currently registered applications and
- * create collection of links device-to-application
- */
-struct LinksCollector {
- LinksCollector(const ApplicationManager& application_manager,
std::map<std::string, std::string>& out_app_to_device_link)
: application_manager_(application_manager)
, out_app_to_device_link_(out_app_to_device_link) {
@@ -453,12 +415,24 @@ uint32_t PolicyHandler::GetAppIdForSending() const {
return ChooseRandomAppForPolicyUpdate(apps_with_none_level);
}
+#ifdef EXTERNAL_PROPRIETARY_MODE
+void PolicyHandler::OnAppPermissionConsent(
+ const uint32_t connection_key,
+ const PermissionConsent& permissions,
+ const ExternalConsentStatus& external_consent_status) {
+ LOG4CXX_AUTO_TRACE(logger_);
+ AsyncRun(new AppPermissionDelegate(
+ connection_key, permissions, external_consent_status, *this));
+}
+#else
void PolicyHandler::OnAppPermissionConsent(
const uint32_t connection_key, const PermissionConsent& permissions) {
LOG4CXX_AUTO_TRACE(logger_);
AsyncRun(new AppPermissionDelegate(connection_key, permissions, *this));
}
+#endif
+
void PolicyHandler::OnDeviceConsentChanged(const std::string& device_id,
const bool is_allowed) {
POLICY_LIB_CHECK_VOID();
@@ -478,8 +452,10 @@ void PolicyHandler::OnDeviceConsentChanged(const std::string& device_id,
if (device_handle == (*it_app_list).get()->device()) {
const std::string policy_app_id = (*it_app_list)->policy_app_id();
- // If app has predata policy, which is assigned without device consent or
- // with negative data consent, there no necessity to change smth and send
+ // If app has predata policy, which is assigned without device consent
+ // or
+ // with negative data consent, there no necessity to change smth and
+ // send
// notification for such app in case of device consent is not allowed
if (policy_manager_->IsPredataPolicy(policy_app_id) && !is_allowed) {
continue;
@@ -533,9 +509,10 @@ struct SmartObjectToInt {
};
StatusNotifier PolicyHandler::AddApplication(
- const std::string& application_id) {
+ const std::string& application_id,
+ const rpc::policy_table_interface_base::AppHmiTypes& hmi_types) {
POLICY_LIB_CHECK(utils::MakeShared<utils::CallNothing>());
- return policy_manager_->AddApplication(application_id);
+ return policy_manager_->AddApplication(application_id, hmi_types);
}
void PolicyHandler::AddDevice(const std::string& device_id,
@@ -552,11 +529,11 @@ void PolicyHandler::SetDeviceInfo(const std::string& device_id,
policy_manager_->SetDeviceInfo(device_id, device_info);
}
+#ifdef EXTERNAL_PROPRIETARY_MODE
void PolicyHandler::OnAppPermissionConsentInternal(
const uint32_t connection_key,
- const CCSStatus& ccs_status,
+ const ExternalConsentStatus& external_consent_status,
PermissionConsent& out_permissions) {
- LOG4CXX_AUTO_TRACE(logger_);
POLICY_LIB_CHECK_VOID();
if (connection_key) {
@@ -576,7 +553,8 @@ void PolicyHandler::OnAppPermissionConsentInternal(
}
} else if (!app_to_device_link_.empty()) {
sync_primitives::AutoLock lock(app_to_device_link_lock_);
- ApplicationsLinks::const_iterator it = app_to_device_link_.begin();
+ std::map<std::string, std::string>::const_iterator it =
+ app_to_device_link_.begin();
for (; app_to_device_link_.end() != it; ++it) {
ApplicationSharedPtr app =
application_manager_.application_by_policy_id(it->second);
@@ -611,11 +589,70 @@ void PolicyHandler::OnAppPermissionConsentInternal(
"There are no applications previously stored for "
"setting common permissions.");
}
+ if (!policy_manager_->SetExternalConsentStatus(external_consent_status)) {
+ LOG4CXX_WARN(logger_, "ExternalConsent status has not been set!");
+ }
+}
+#else
+void PolicyHandler::OnAppPermissionConsentInternal(
+ const uint32_t connection_key, PermissionConsent& out_permissions) {
+ POLICY_LIB_CHECK_VOID();
+
+ if (connection_key) {
+ ApplicationSharedPtr app = application_manager_.application(connection_key);
+
+ if (app.valid()) {
+ out_permissions.policy_app_id = app->policy_app_id();
+ DeviceParams device_params = GetDeviceParams(
+ app->device(),
+ application_manager_.connection_handler().get_session_observer());
+
+ out_permissions.device_id = device_params.device_mac_address;
+ }
+
+ if (!out_permissions.policy_app_id.empty()) {
+ policy_manager_->SetUserConsentForApp(out_permissions);
+ }
+ } else if (!app_to_device_link_.empty()) {
+ sync_primitives::AutoLock lock(app_to_device_link_lock_);
+ std::map<std::string, std::string>::const_iterator it =
+ app_to_device_link_.begin();
+ for (; app_to_device_link_.end() != it; ++it) {
+ ApplicationSharedPtr app =
+ application_manager_.application_by_policy_id(it->second);
+
+ // If list of apps sent to HMI for user consents is not the same as
+ // current,
+ // permissions should be set only for coincident to registered apps
+ if (!app.valid()) {
+ LOG4CXX_WARN(logger_,
+ "Invalid pointer to application was passed."
+ "Permissions setting skipped.");
+ continue;
+ }
- if (!policy_manager_->SetCCSStatus(ccs_status)) {
- LOG4CXX_WARN(logger_, "CCS status has not been set!");
+ DeviceParams device_params = GetDeviceParams(
+ app->device(),
+ application_manager_.connection_handler().get_session_observer());
+
+ if (device_params.device_mac_address != it->first) {
+ LOG4CXX_WARN(logger_,
+ "Device_id of application is changed."
+ "Permissions setting skipped.");
+ continue;
+ }
+
+ out_permissions.policy_app_id = it->second;
+ out_permissions.device_id = it->first;
+ policy_manager_->SetUserConsentForApp(out_permissions);
+ }
+ } else {
+ LOG4CXX_WARN(logger_,
+ "There are no applications previously stored for "
+ "setting common permissions.");
}
}
+#endif
void policy::PolicyHandler::SetDaysAfterEpoch() {
POLICY_LIB_CHECK_VOID();
@@ -655,7 +692,8 @@ void PolicyHandler::OnGetUserFriendlyMessage(
result, correlation_id, application_manager_);
}
-void PolicyHandler::GetRegisteredLinks(ApplicationsLinks& out_links) const {
+void PolicyHandler::GetRegisteredLinks(
+ std::map<std::string, std::string>& out_links) const {
DataAccessor<ApplicationSet> accessor = application_manager_.applications();
ApplicationSetConstIt it_app = accessor.GetData().begin();
ApplicationSetConstIt it_app_end = accessor.GetData().end();
@@ -667,7 +705,7 @@ void PolicyHandler::GetRegisteredLinks(ApplicationsLinks& out_links) const {
std::vector<policy::FunctionalGroupPermission>
PolicyHandler::CollectRegisteredAppsPermissions() {
LOG4CXX_AUTO_TRACE(logger_);
- POLICY_LIB_CHECK_VOID();
+ POLICY_LIB_CHECK(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_);
@@ -676,59 +714,75 @@ PolicyHandler::CollectRegisteredAppsPermissions() {
PermissionsConsolidator consolidator;
std::vector<policy::FunctionalGroupPermission> group_permissions;
- ApplicationsLinks::const_iterator it = app_to_device_link_.begin();
+ std::map<std::string, std::string>::const_iterator it =
+ app_to_device_link_.begin();
for (; it != app_to_device_link_.end(); ++it) {
policy_manager_->GetUserConsentForApp(
it->first, it->second, group_permissions);
consolidator.Consolidate(group_permissions);
}
-
+ return consolidator.GetConsolidatedPermissions();
+}
+std::vector<FunctionalGroupPermission> PolicyHandler::CollectAppPermissions(
+ const uint32_t connection_key) {
// Single app only
ApplicationSharedPtr app = application_manager_.application(connection_key);
+ std::vector<FunctionalGroupPermission> group_permissions;
- if (!app.valid()) {
+ if (NULL == app.get() || !app.valid()) {
LOG4CXX_WARN(logger_,
"Connection key '"
<< connection_key
<< "' "
"not found within registered applications.");
- return;
+
+ return group_permissions;
}
DeviceParams device_params = GetDeviceParams(
app->device(),
application_manager_.connection_handler().get_session_observer());
- std::vector<FunctionalGroupPermission> group_permissions;
if (device_params.device_mac_address.empty()) {
LOG4CXX_WARN(logger_, "Couldn't find device, which hosts application.");
- } else if (!app) {
- LOG4CXX_WARN(logger_, "Couldn't find application to get permissions.");
- } else {
- policy_manager_->GetUserConsentForApp(device_params.device_mac_address,
- app->policy_app_id(),
- group_permissions);
-
- MessageHelper::SendGetListOfPermissionsResponse(
- group_permissions, correlation_id, application_manager_);
+ return group_permissions;
}
+
+ policy_manager_->GetUserConsentForApp(device_params.device_mac_address,
+ app->policy_app_id(),
+ group_permissions);
+
+ return group_permissions;
}
-void PolicyHandler::LinkAppsToDevice() {
- sync_primitives::AutoLock lock(app_to_device_link_lock_);
- LinkAppToDevice linker(app_to_device_link_, application_manager_);
- LOG4CXX_DEBUG(logger_, "add links to app. no specific app was passed");
- {
- const ApplicationSet& accessor =
- application_manager_.applications().GetData();
- if (accessor.empty()) {
- LOG4CXX_WARN(logger_,
- "application_manager doesn't have any applications");
- } else {
- // Add all currently registered applications
- std::for_each(accessor.begin(), accessor.end(), linker);
- }
+void PolicyHandler::OnGetListOfPermissions(const uint32_t connection_key,
+ const uint32_t correlation_id) {
+ LOG4CXX_AUTO_TRACE(logger_);
+ POLICY_LIB_CHECK_VOID();
+
+ application_manager::ApplicationSharedPtr app =
+ application_manager_.application(connection_key);
+ const bool is_app_registered = NULL != app.get();
+ const bool is_connection_key_valid = is_app_registered && connection_key;
+
+ const std::vector<policy::FunctionalGroupPermission> permissions =
+ is_connection_key_valid ? CollectAppPermissions(connection_key)
+ : CollectRegisteredAppsPermissions();
+
+ if (permissions.empty() && is_connection_key_valid) {
+ LOG4CXX_ERROR(logger_,
+ "No permissions found for application with connection key:"
+ << connection_key);
+ return;
}
+
+ MessageHelper::SendGetListOfPermissionsResponse(
+ permissions,
+#ifdef EXTERNAL_PROPRIETARY_MODE
+ policy_manager_->GetExternalConsentStatus(),
+#endif // EXTERNAL_PROPRIETARY_MODE
+ correlation_id,
+ application_manager_);
}
bool PolicyHandler::IsAppSuitableForPolicyUpdate(
@@ -821,12 +875,6 @@ std::string PolicyHandler::OnCurrentDeviceIdUpdateRequired(
return device_params.device_mac_address;
}
-ApplicationsLinks PolicyHandler::GetRegisteredLinks() const {
- ApplicationsLinks links;
- GetRegisteredLinks(links);
- return links;
-}
-
void PolicyHandler::OnSystemInfoChanged(const std::string& language) {
LOG4CXX_AUTO_TRACE(logger_);
POLICY_LIB_CHECK_VOID();
@@ -967,11 +1015,18 @@ bool PolicyHandler::SendMessageToSDK(const BinaryMessage& pt_string,
LOG4CXX_AUTO_TRACE(logger_);
POLICY_LIB_CHECK(false);
- uint32_t app_id = GetAppIdForSending();
+ ApplicationSharedPtr app;
+ uint32_t app_id = 0;
+ if (last_used_app_ids_.empty()) {
+ LOG4CXX_WARN(logger_, "last_used_app_ids_ is empty");
+ return false;
+ } else {
+ app_id = last_used_app_ids_.back();
- ApplicationSharedPtr app = application_manager_.application(app_id);
+ app = application_manager_.application(app_id);
+ }
- if (!app.valid()) {
+ if (!app) {
LOG4CXX_WARN(logger_,
"There is no registered application with "
"connection key '"
@@ -1439,15 +1494,28 @@ bool PolicyHandler::GetPriority(const std::string& policy_app_id,
return policy_manager_->GetPriority(policy_app_id, priority);
}
-void PolicyHandler::CheckPermissions(const PTString& app_id,
- const PTString& hmi_level,
- const PTString& rpc,
- const RPCParams& rpc_params,
- CheckPermissionResult& result) {
+void PolicyHandler::CheckPermissions(
+ const application_manager::ApplicationSharedPtr app,
+ const PTString& rpc,
+ const RPCParams& rpc_params,
+ CheckPermissionResult& result) {
POLICY_LIB_CHECK_VOID();
- policy_manager_->CheckPermissions(app_id, hmi_level, rpc, rpc_params, result);
+ const std::string hmi_level =
+ MessageHelper::StringifiedHMILevel(app->hmi_level());
+ const std::string device_id = MessageHelper::GetDeviceMacAddressForHandle(
+ app->device(), application_manager_);
+ LOG4CXX_INFO(logger_,
+ "Checking permissions for " << app->policy_app_id() << " in "
+ << hmi_level << " on device "
+ << device_id << " rpc " << rpc);
+#ifdef EXTERNAL_PROPRIETARY_MODE
+ policy_manager_->CheckPermissions(
+ app->policy_app_id(), hmi_level, rpc, rpc_params, result);
+#else // EXTERNAL_PROPRIETARY_MODE
+ policy_manager_->CheckPermissions(
+ device_id, app->policy_app_id(), hmi_level, rpc, rpc_params, result);
+#endif // EXTERNAL_PROPRIETARY_MODE
}
-
uint32_t PolicyHandler::GetNotificationsNumber(
const std::string& priority) const {
POLICY_LIB_CHECK(0);
diff --git a/src/components/application_manager/src/smart_object_keys.cc b/src/components/application_manager/src/smart_object_keys.cc
index 9ab79791a5..dbfd4c73f4 100644
--- a/src/components/application_manager/src/smart_object_keys.cc
+++ b/src/components/application_manager/src/smart_object_keys.cc
@@ -290,7 +290,7 @@ const char* const auto_complete_text_supported = "autoCompleteTextSupported";
const char* const entity_type = "entityType";
const char* const entity_id = "entityID";
const char* const status = "status";
-const char* const ccs_status = "ccsStatus";
+const char* const external_consent_status = "ExternalConsentStatus";
const char* const consented_functions = "consentedFunctions";
const char* const source = "source";
} // namespace strings
diff --git a/src/components/application_manager/test/commands/hmi/hmi_notifications/hmi_notifications_test.cc b/src/components/application_manager/test/commands/hmi/hmi_notifications/hmi_notifications_test.cc
index f3cca144b8..ecdb698c56 100644
--- a/src/components/application_manager/test/commands/hmi/hmi_notifications/hmi_notifications_test.cc
+++ b/src/components/application_manager/test/commands/hmi/hmi_notifications/hmi_notifications_test.cc
@@ -34,7 +34,80 @@
#include <string>
#include <vector>
#include "gtest/gtest.h"
-#include "commands/command_request_test.h"
+#include "application_manager/commands/commands_test.h"
+
+#include "application_manager/commands/hmi/on_button_event_notification.h"
+#include "application_manager/commands/hmi/on_navi_tbt_client_state_notification.h"
+#include "application_manager/commands/hmi/on_navi_way_point_change_notification.h"
+#include "application_manager/commands/hmi/on_ui_command_notification.h"
+#include "application_manager/commands/hmi/on_ui_keyboard_input_notification.h"
+#include "application_manager/commands/hmi/on_ui_touch_event_notification.h"
+#include "application_manager/commands/hmi/on_vi_acc_pedal_position_notification.h"
+#include "application_manager/commands/hmi/on_vi_belt_status_notification.h"
+#include "application_manager/commands/hmi/on_vi_body_information_notification.h"
+#include "application_manager/commands/hmi/on_vi_device_status_notification.h"
+#include "application_manager/commands/hmi/on_vi_driver_braking_notification.h"
+#include "application_manager/commands/hmi/on_vi_engine_torque_notification.h"
+#include "application_manager/commands/hmi/on_vi_external_temperature_notification.h"
+#include "application_manager/commands/hmi/on_vi_fuel_level_notification.h"
+#include "application_manager/commands/hmi/on_vi_fuel_level_state_notification.h"
+#include "application_manager/commands/hmi/on_vi_gps_data_notification.h"
+#include "application_manager/commands/hmi/on_vi_head_lamp_status_notification.h"
+#include "application_manager/commands/hmi/on_vi_instant_fuel_consumption_notification.h"
+#include "application_manager/commands/hmi/on_vi_my_key_notification.h"
+#include "application_manager/commands/hmi/on_vi_odometer_notification.h"
+#include "application_manager/commands/hmi/on_vi_prndl_notification.h"
+#include "application_manager/commands/hmi/on_vi_rpm_notification.h"
+#include "application_manager/commands/hmi/on_vi_speed_notification.h"
+#include "application_manager/commands/hmi/on_vi_steering_wheel_angle_notification.h"
+#include "application_manager/commands/hmi/on_vi_tire_pressure_notification.h"
+#include "application_manager/commands/hmi/on_vi_vehicle_data_notification.h"
+#include "application_manager/commands/hmi/on_vi_vin_notification.h"
+#include "application_manager/commands/hmi/on_vi_wiper_status_notification.h"
+#include "application_manager/commands/hmi/on_app_permission_changed_notification.h"
+#include "application_manager/commands/hmi/on_app_registered_notification.h"
+#include "application_manager/commands/hmi/on_audio_data_streaming_notification.h"
+#include "application_manager/commands/hmi/on_button_subscription_notification.h"
+#include "application_manager/commands/hmi/on_file_removed_notification.h"
+#include "application_manager/commands/hmi/on_put_file_notification.h"
+#include "application_manager/commands/hmi/on_resume_audio_source_notification.h"
+#include "application_manager/commands/hmi/on_sdl_close_notification.h"
+#include "application_manager/commands/hmi/on_sdl_consent_needed_notification.h"
+#include "application_manager/commands/hmi/on_sdl_persistence_complete_notification.h"
+#include "application_manager/commands/hmi/on_status_update_notification.h"
+#include "application_manager/commands/hmi/on_video_data_streaming_notification.h"
+#include "application_manager/commands/hmi/on_record_start_notification.h"
+#include "application_manager/commands/hmi/on_app_activated_notification.h"
+#include "application_manager/commands/hmi/on_app_deactivated_notification.h"
+#include "application_manager/commands/hmi/on_app_unregistered_notification.h"
+#include "application_manager/commands/hmi/on_button_press_notification.h"
+#include "application_manager/commands/hmi/on_event_changed_notification.h"
+#include "application_manager/commands/hmi/on_ready_notification.h"
+#include "application_manager/commands/hmi/on_tts_reset_timeout_notification.h"
+#include "application_manager/commands/hmi/on_tts_started_notification.h"
+#include "application_manager/commands/hmi/on_tts_stopped_notification.h"
+#include "application_manager/commands/hmi/on_ui_reset_timeout_notification.h"
+#include "application_manager/commands/hmi/on_vr_started_notification.h"
+#include "application_manager/commands/hmi/on_vr_stopped_notification.h"
+#include "application_manager/commands/hmi/on_app_permission_consent_notification.h"
+#include "application_manager/commands/hmi/on_ignition_cycle_over_notification.h"
+#include "application_manager/commands/hmi/on_policy_update.h"
+#include "application_manager/commands/hmi/on_received_policy_update.h"
+#include "application_manager/commands/hmi/on_system_error_notification.h"
+#include "application_manager/commands/hmi/on_system_info_changed_notification.h"
+#include "application_manager/commands/hmi/on_allow_sdl_functionality_notification.h"
+#include "application_manager/commands/hmi/on_device_state_changed_notification.h"
+#include "application_manager/commands/hmi/on_exit_all_applications_notification.h"
+#include "application_manager/commands/hmi/on_exit_application_notification.h"
+#include "application_manager/commands/hmi/on_vr_command_notification.h"
+#include "application_manager/commands/hmi/on_vr_language_change_notification.h"
+#include "application_manager/commands/hmi/on_start_device_discovery.h"
+#include "application_manager/commands/hmi/on_device_chosen_notification.h"
+#include "application_manager/commands/hmi/on_system_context_notification.h"
+#include "application_manager/commands/hmi/on_system_request_notification.h"
+#include "application_manager/commands/hmi/on_tts_language_change_notification.h"
+#include "application_manager/commands/hmi/on_ui_language_change_notification.h"
+#include "application_manager/commands/hmi/on_driver_distraction_notification.h"
#include "utils/lock.h"
#include "utils/data_accessor.h"
@@ -43,7 +116,6 @@
#include "utils/make_shared.h"
#include "utils/file_system.h"
#include "smart_objects/smart_object.h"
-#include "interfaces/HMI_API.h"
#include "application_manager/smart_object_keys.h"
#include "application_manager/mock_application_manager.h"
#include "application_manager/mock_state_controller.h"
@@ -55,85 +127,13 @@
#include "connection_handler/mock_connection_handler.h"
#include "connection_handler/mock_connection_handler_settings.h"
#include "test/application_manager/mock_application_manager_settings.h"
-#include "application_manager/mock_policy_handler_interface.h"
+#include "application_manager/policies/mock_policy_handler_interface.h"
#include "application_manager/mock_message_helper.h"
+#include "protocol_handler/mock_session_observer.h"
-#ifdef HMI_DBUS_API
-#include "hmi/on_vi_acc_pedal_position_notification.h"
-#include "hmi/on_vi_belt_status_notification.h"
-#include "hmi/on_vi_body_information_notification.h"
-#include "hmi/on_vi_device_status_notification.h"
-#include "hmi/on_vi_driver_braking_notification.h"
-#include "hmi/on_vi_engine_torque_notification.h"
-#include "hmi/on_vi_external_temperature_notification.h"
-#include "hmi/on_vi_fuel_level_notification.h"
-#include "hmi/on_vi_fuel_level_state_notification.h"
-#include "hmi/on_vi_gps_data_notification.h"
-#include "hmi/on_vi_head_lamp_status_notification.h"
-#include "hmi/on_vi_instant_fuel_consumption_notification.h"
-#include "hmi/on_vi_my_key_notification.h"
-#include "hmi/on_vi_odometer_notification.h"
-#include "hmi/on_vi_prndl_notification.h"
-#include "hmi/on_vi_rpm_notification.h"
-#include "hmi/on_vi_speed_notification.h"
-#include "hmi/on_vi_steering_wheel_angle_notification.h"
-#include "hmi/on_vi_tire_pressure_notification.h"
-#include "hmi/on_vi_vin_notification.h"
-#include "hmi/on_vi_wiper_status_notification.h"
-#else
-#include "hmi/on_vi_vehicle_data_notification.h"
-#endif // HMI_DBUS_API
-
-#include "hmi/on_button_event_notification.h"
-#include "hmi/on_navi_tbt_client_state_notification.h"
-#include "hmi/on_navi_way_point_change_notification.h"
-#include "hmi/on_ui_command_notification.h"
-#include "hmi/on_ui_keyboard_input_notification.h"
-#include "hmi/on_ui_touch_event_notification.h"
-#include "hmi/on_app_permission_changed_notification.h"
-#include "hmi/on_app_registered_notification.h"
-#include "hmi/on_audio_data_streaming_notification.h"
-#include "hmi/on_button_subscription_notification.h"
-#include "hmi/on_file_removed_notification.h"
-#include "hmi/on_put_file_notification.h"
-#include "hmi/on_resume_audio_source_notification.h"
-#include "hmi/on_sdl_close_notification.h"
-#include "hmi/on_sdl_consent_needed_notification.h"
-#include "hmi/on_sdl_persistence_complete_notification.h"
-#include "hmi/on_status_update_notification.h"
-#include "hmi/on_video_data_streaming_notification.h"
-#include "hmi/on_record_start_notification.h"
-#include "hmi/on_app_activated_notification.h"
-#include "hmi/on_app_deactivated_notification.h"
-#include "hmi/on_app_unregistered_notification.h"
-#include "hmi/on_button_press_notification.h"
-#include "hmi/on_event_changed_notification.h"
-#include "hmi/on_ready_notification.h"
-#include "hmi/on_tts_reset_timeout_notification.h"
-#include "hmi/on_tts_started_notification.h"
-#include "hmi/on_tts_stopped_notification.h"
-#include "hmi/on_ui_reset_timeout_notification.h"
-#include "hmi/on_vr_started_notification.h"
-#include "hmi/on_vr_stopped_notification.h"
-#include "hmi/on_app_permission_consent_notification.h"
-#include "hmi/on_ignition_cycle_over_notification.h"
-#include "hmi/on_policy_update.h"
-#include "hmi/on_received_policy_update.h"
-#include "hmi/on_system_error_notification.h"
-#include "hmi/on_system_info_changed_notification.h"
-#include "hmi/on_allow_sdl_functionality_notification.h"
-#include "hmi/on_device_state_changed_notification.h"
-#include "hmi/on_exit_all_applications_notification.h"
-#include "hmi/on_exit_application_notification.h"
-#include "hmi/on_vr_command_notification.h"
-#include "hmi/on_vr_language_change_notification.h"
-#include "hmi/on_start_device_discovery.h"
-#include "hmi/on_device_chosen_notification.h"
-#include "hmi/on_system_context_notification.h"
-#include "hmi/on_system_request_notification.h"
-#include "hmi/on_tts_language_change_notification.h"
-#include "hmi/on_ui_language_change_notification.h"
-#include "hmi/on_device_connection_status_notification.h"
+namespace am = application_manager;
+
+static am::MockMessageHelper* message_helper_mock_;
namespace test {
namespace components {
@@ -141,34 +141,45 @@ namespace commands_test {
namespace hmi_commands_test {
namespace hmi_notifications_test {
-namespace am = application_manager;
-
using ::testing::_;
using ::testing::Test;
using ::testing::Types;
using ::testing::Return;
using ::testing::ReturnRef;
using ::testing::NiceMock;
+using ::testing::Mock;
+using ::testing::InSequence;
using ::utils::SharedPtr;
using ::smart_objects::SmartObject;
-using testing::Mock;
+using ::application_manager::commands::MessageSharedPtr;
+using ::test::components::application_manager_test::MockApplicationManager;
+using ::test::components::application_manager_test::
+ MockApplicationManagerSettings;
+using ::application_manager::ApplicationSharedPtr;
+using ::test::components::application_manager_test::MockApplication;
+using ::test::components::event_engine_test::MockEventDispatcher;
+using ::application_manager::MockMessageHelper;
-namespace am = ::application_manager;
-namespace strings = am::strings;
+using namespace am::commands;
-using am::commands::MessageSharedPtr;
-using am::ApplicationSharedPtr;
+typedef SharedPtr<MockApplication> MockAppPtr;
+typedef NiceMock<
+ ::test::components::application_manager_test::MockHMICapabilities>
+ MockHMICapabilities;
-using namespace am::commands;
+#define MEDIA true
+#define NOT_MEDIA false
+#define VC true
+#define NOT_VC false
+#define NAVI true
+#define NOT_NAVI false
ACTION_P(GetEventId, event_id) {
*event_id = arg0.id();
}
-
ACTION_P(GetArg, arg) {
*arg = arg0;
}
-
ACTION_P2(GetConnectIdPermissionConsent, connect_id, consent) {
*connect_id = arg0;
std::vector<policy::FunctionalGroupPermission>::const_iterator it =
@@ -178,14 +189,20 @@ ACTION_P2(GetConnectIdPermissionConsent, connect_id, consent) {
}
consent->consent_source = arg1.consent_source;
}
-
ACTION_P2(GetBoolValueAndString, value, str) {
*value = arg0;
*str = arg1;
}
-
ACTION_P(GetMessage, message) {
- (*message) = (*arg0);
+ (*message)[am::strings::params][am::strings::function_id] =
+ (*arg0)[am::strings::params][am::strings::function_id].asInt();
+ (*message)[am::strings::params][am::strings::message_type] =
+ (*arg0)[am::strings::params][am::strings::message_type].asInt();
+ (*message)[am::strings::params][am::strings::correlation_id] =
+ (*arg0)[am::strings::params][am::strings::correlation_id].asInt();
+ (*message)[am::strings::params][am::strings::connection_key] =
+ (*arg0)[am::strings::params][am::strings::connection_key].asInt();
+ return (*message)[am::strings::params][am::strings::correlation_id].asInt();
}
namespace {
@@ -195,77 +212,118 @@ const int32_t kHmiProtocolType_ = 1;
const int32_t kMobileProtocolType_ = 0;
const int32_t kProtocolVersion_ = 3;
const uint32_t kCorrelationId_ = 1939u;
-const uint32_t kAppId = 2014u;
-const uint32_t kConnectionKey = 0u;
-// Following variable represents MAC adress so it must contain 12 symbols.
-const std::string kCustomDeviceInternalId = "255255255001";
-const std::string kEmptyDeviceInternalId = "";
-const std::string kDeviceId = "device_id";
+const uint32_t kAppId_ = 2014u;
} // namespace
class HMICommandsNotificationsTest
- : public components::commands_test::CommandRequestTest<
+ : public components::commands_test::CommandsTest<
CommandsTestMocks::kIsNice> {
public:
HMICommandsNotificationsTest()
- : mock_app_(CreateMockApp())
- , message_helper_mock_(NULL)
- , message_(CreateMessage(smart_objects::SmartType_Map))
- , applications_(application_set_, applications_lock_) {}
+ : applications_(application_set_, applications_lock_), app_ptr_(NULL) {
+ message_helper_mock_ =
+ application_manager::MockMessageHelper::message_helper_mock();
+ Mock::VerifyAndClearExpectations(message_helper_mock_);
+ }
+ ~HMICommandsNotificationsTest() {
+ // Fix DataAccessor release and WinQt crash
+ Mock::VerifyAndClearExpectations(&app_mngr_);
+ Mock::VerifyAndClearExpectations(message_helper_mock_);
+ }
typedef Command CommandType;
- MockAppPtr mock_app_;
- am::MockMessageHelper* message_helper_mock_;
-
- MessageSharedPtr message_;
+ protected:
am::ApplicationSet application_set_;
sync_primitives::Lock applications_lock_;
DataAccessor<am::ApplicationSet> applications_;
- NiceMock<application_manager_test::MockHMICapabilities>
- mock_hmi_capabilities_;
+ MockHMICapabilities mock_hmi_capabilities_;
- typename IsNiceMock<policy_test::MockPolicyHandlerInterface,
- kAreMocksNice>::Result mock_policy_handler_;
+ NiceMock<event_engine_test::MockEventDispatcher> mock_event_dispatcher_;
+ NiceMock<policy_test::MockPolicyHandlerInterface> policy_interface_;
- typename IsNiceMock<application_manager_test::MockStateController,
- kAreMocksNice>::Result mock_state_controller_;
+ application_manager_test::MockStateController mock_state_controller_;
- protected:
- void SetUp() OVERRIDE {
- message_helper_mock_ = am::MockMessageHelper::message_helper_mock();
- Mock::VerifyAndClearExpectations(&message_helper_mock_);
- ConfigureApp(kAppId, false, false, false);
- ON_CALL(mock_app_manager_, GetPolicyHandler())
- .WillByDefault(ReturnRef(mock_policy_handler_));
- ON_CALL(mock_app_manager_, application_by_hmi_app(_))
- .WillByDefault(Return(mock_app_));
- }
+ am::ApplicationSharedPtr app_;
+ NiceMock<MockApplication>* app_ptr_;
+
+ typedef IsNiceMock<connection_handler_test::MockConnectionHandler,
+ kMocksAreNice>::Result MockConnectionHandler;
+
+ typedef IsNiceMock<protocol_handler_test::MockSessionObserver,
+ kMocksAreNice>::Result MockSessionObserver;
- void TearDown() OVERRIDE {
- Mock::VerifyAndClearExpectations(&message_helper_mock_);
- Mock::VerifyAndClearExpectations(&mock_app_manager_);
+ MockConnectionHandler mock_connection_handler_;
+ MockSessionObserver mock_session_observer_;
+
+ void InitCommand(const uint32_t& default_timeout) OVERRIDE {
+ app_ = ConfigureApp(&app_ptr_, kAppId_, NOT_MEDIA, NOT_NAVI, NOT_VC);
+ EXPECT_CALL(app_mngr_, get_settings())
+ .WillOnce(ReturnRef(app_mngr_settings_));
+ EXPECT_CALL(app_mngr_settings_, default_timeout())
+ .WillOnce(ReturnRef(default_timeout));
+ ON_CALL(app_mngr_, event_dispatcher())
+ .WillByDefault(ReturnRef(mock_event_dispatcher_));
+ ON_CALL(app_mngr_, GetPolicyHandler())
+ .WillByDefault(ReturnRef(policy_interface_));
+ ON_CALL(app_mngr_, application_by_hmi_app(_)).WillByDefault(Return(app_));
+ ON_CALL(*app_ptr_, app_id()).WillByDefault(Return(kAppId_));
}
- void ConfigureApp(uint32_t app_id, bool media, bool navi, bool vc) {
- ON_CALL(*mock_app_, app_id()).WillByDefault(Return(app_id));
- ON_CALL(*mock_app_, is_media()).WillByDefault(Return(media));
- ON_CALL(*mock_app_, is_navi()).WillByDefault(Return(navi));
- ON_CALL(*mock_app_, is_voice_communication()).WillByDefault(Return(vc));
- ON_CALL(*mock_app_, is_audio()).WillByDefault(Return(media || navi || vc));
+ am::ApplicationSharedPtr ConfigureApp(NiceMock<MockApplication>** app_mock,
+ uint32_t app_id,
+ bool media,
+ bool navi,
+ bool vc) {
+ *app_mock = new NiceMock<MockApplication>;
+
+ Mock::AllowLeak(*app_mock); // WorkAround for gogletest bug
+ am::ApplicationSharedPtr app(*app_mock);
+
+ ON_CALL(**app_mock, app_id()).WillByDefault(Return(app_id));
+ ON_CALL(**app_mock, is_media_application()).WillByDefault(Return(media));
+ ON_CALL(**app_mock, is_navi()).WillByDefault(Return(navi));
+ ON_CALL(**app_mock, is_voice_communication_supported())
+ .WillByDefault(Return(vc));
+ ON_CALL(**app_mock, IsAudioApplication())
+ .WillByDefault(Return(media || navi || vc));
+ return app;
+ }
+#if defined(OS_POSIX)
+ void SubscribeForSignal() {
+ sigset_t signal_set;
+ sigemptyset(&signal_set);
+ sigaddset(&signal_set, SIGINT);
+ sigaddset(&signal_set, SIGTERM);
+ pthread_sigmask(SIG_BLOCK, &signal_set, NULL);
}
+#endif
};
+namespace {
+void sig_handler(int sig) {
+ switch (sig) {
+ case SIGINT:
+ break;
+ case SIGTERM:
+ break;
+ case SIGSEGV:
+ abort();
+ default:
+ exit(EXIT_FAILURE);
+ }
+}
+} // namespace
+
template <class Command>
-class HMIOnViNotifications
- : public commands_test::CommandsTest<CommandsTestMocks::kIsNice> {
+class HMIOnViNotifications : public commands_test::CommandsTest<kIsNice> {
public:
typedef Command CommandType;
};
template <class Command>
class HMIOnNotificationsListToHMI
- : public commands_test::CommandsTest<CommandsTestMocks::kIsNice> {
+ : public commands_test::CommandsTest<kIsNice> {
public:
typedef Command CommandType;
};
@@ -278,38 +336,34 @@ struct CommandPair {
template <class Command>
class HMIOnNotificationsEventDispatcher
- : public commands_test::CommandRequestTest<CommandsTestMocks::kIsNice> {
+ : public commands_test::CommandsTest<kIsNice> {
public:
typedef Command CommandType;
+ NiceMock<event_engine_test::MockEventDispatcher> mock_event_dispatcher_;
};
-typedef Types<
-#ifdef HMI_DBUS_API
- OnVIAccPedalPositionNotification,
- OnVIBeltStatusNotification,
- OnVIBodyInformationNotification,
- OnVIDeviceStatusNotification,
- OnVIDriverBrakingNotification,
- OnVIEngineTorqueNotification,
- OnVIExternalTemperatureNotification,
- OnVIFuelLevelNotification,
- OnVIFuelLevelStateNotification,
- OnVIGpsDataNotification,
- OnVIHeadLampStatusNotification,
- OnVIInstantFuelConsumptionNotification,
- OnVIMyKeyNotification,
- OnVIOdometerNotification,
- OnVIPrndlNotification,
- OnVIRpmNotification,
- OnVISpeedNotification,
- OnVISteeringWheelAngleNotification,
- OnVITirePressureNotification,
- OnVIVinNotification,
- OnVIWiperStatusNotification
-#else
- OnVIVehicleDataNotification
-#endif // HMI_DBUS_API
- > HMIOnViNotificationsTypes;
+typedef Types<OnVIAccPedalPositionNotification,
+ OnVIBeltStatusNotification,
+ OnVIBodyInformationNotification,
+ OnVIDeviceStatusNotification,
+ OnVIDriverBrakingNotification,
+ OnVIEngineTorqueNotification,
+ OnVIExternalTemperatureNotification,
+ OnVIFuelLevelNotification,
+ OnVIFuelLevelStateNotification,
+ OnVIGpsDataNotification,
+ OnVIHeadLampStatusNotification,
+ OnVIInstantFuelConsumptionNotification,
+ OnVIMyKeyNotification,
+ OnVIOdometerNotification,
+ OnVIPrndlNotification,
+ OnVIRpmNotification,
+ OnVISpeedNotification,
+ OnVISteeringWheelAngleNotification,
+ OnVITirePressureNotification,
+ OnVIVehicleDataNotification,
+ OnVIVinNotification,
+ OnVIWiperStatusNotification> HMIOnViNotificationsTypes;
typedef Types<OnAppPermissionChangedNotification,
OnAudioDataStreamingNotification,
@@ -322,8 +376,7 @@ typedef Types<OnAppPermissionChangedNotification,
OnSDLPersistenceCompleteNotification,
OnStatusUpdateNotification,
OnVideoDataStreamingNotification,
- OnRecordStartdNotification,
- OnAppRegisteredNotification> HMIOnNotificationsListToHMITypes;
+ OnRecordStartdNotification> HMIOnNotificationsListToHMITypes;
typedef Types<
CommandPair<OnAppActivatedNotification,
@@ -348,43 +401,45 @@ TYPED_TEST_CASE(HMIOnNotificationsEventDispatcher,
HMIOnNotificationsEventDispatcherTypes);
TYPED_TEST(HMIOnViNotifications, CommandsSendNotificationToMobile) {
- MessageSharedPtr message = this->CreateMessage();
+ MessageSharedPtr message =
+ commands_test::CommandsTest<kIsNice>::CreateMessage();
utils::SharedPtr<typename TestFixture::CommandType> command =
this->template CreateCommand<typename TestFixture::CommandType>(message);
- EXPECT_CALL(commands_test::CommandsTest<
- CommandsTestMocks::kIsNice>::mock_app_manager_,
+ EXPECT_CALL(commands_test::CommandsTest<kIsNice>::app_mngr_,
ManageMobileCommand(_, Command::CommandOrigin::ORIGIN_SDL));
command->Run();
EXPECT_EQ(
static_cast<int32_t>(mobile_apis::FunctionID::eType::OnVehicleDataID),
- (*message)[strings::params][strings::function_id].asInt());
+ (*message)[am::strings::params][am::strings::function_id].asInt());
EXPECT_EQ(static_cast<int32_t>(am::MessageType::kNotification),
- (*message)[strings::params][strings::message_type].asInt());
+ (*message)[am::strings::params][am::strings::message_type].asInt());
}
TYPED_TEST(HMIOnNotificationsListToHMI, CommandsSendNotificationToHmi) {
- MessageSharedPtr message = this->CreateMessage();
+ MessageSharedPtr message =
+ commands_test::CommandsTest<kIsNice>::CreateMessage();
utils::SharedPtr<typename TestFixture::CommandType> command =
this->template CreateCommand<typename TestFixture::CommandType>(message);
- EXPECT_CALL(commands_test::CommandsTest<
- CommandsTestMocks::kIsNice>::mock_app_manager_,
+ EXPECT_CALL(commands_test::CommandsTest<kIsNice>::app_mngr_,
SendMessageToHMI(_));
command->Run();
- EXPECT_EQ(static_cast<int32_t>(kHmiProtocolType_),
- (*message)[strings::params][strings::protocol_type].asInt());
- EXPECT_EQ(static_cast<int32_t>(kProtocolVersion_),
- (*message)[strings::params][strings::protocol_version].asInt());
+ EXPECT_EQ(
+ static_cast<int32_t>(kHmiProtocolType_),
+ (*message)[am::strings::params][am::strings::protocol_type].asInt());
+ EXPECT_EQ(
+ static_cast<int32_t>(kProtocolVersion_),
+ (*message)[am::strings::params][am::strings::protocol_version].asInt());
}
TYPED_TEST(HMIOnNotificationsEventDispatcher,
CommandsNotificationEventDispatcher) {
int32_t event_id = hmi_apis::FunctionID::INVALID_ENUM;
- MessageSharedPtr message = this->CreateMessage();
+ MessageSharedPtr message =
+ commands_test::CommandsTest<kIsNice>::CreateMessage();
utils::SharedPtr<typename TestFixture::CommandType::CommandType> command =
this->template CreateCommand<
typename TestFixture::CommandType::CommandType>(message);
- EXPECT_CALL(commands_test::CommandsTest<
- CommandsTestMocks::kIsNice>::mock_app_manager_,
+ EXPECT_CALL(commands_test::CommandsTest<kIsNice>::app_mngr_,
event_dispatcher())
.WillOnce(ReturnRef(this->mock_event_dispatcher_));
EXPECT_CALL(this->mock_event_dispatcher_, raise_event(_))
@@ -393,157 +448,196 @@ TYPED_TEST(HMIOnNotificationsEventDispatcher,
EXPECT_EQ(TestFixture::CommandType::kHMICommandId, event_id);
}
+// notifications(SendNotificationToMobile)
TEST_F(HMICommandsNotificationsTest, OnButtonEventSendNotificationToMobile) {
+ MessageSharedPtr message = CreateMessage();
utils::SharedPtr<Command> command =
- CreateCommand<hmi::OnButtonEventNotification>(message_);
+ CreateCommand<hmi::OnButtonEventNotification>(message);
- EXPECT_CALL(mock_app_manager_,
+ EXPECT_CALL(app_mngr_,
ManageMobileCommand(_, Command::CommandOrigin::ORIGIN_SDL));
command->Run();
EXPECT_EQ(static_cast<int32_t>(mobile_apis::FunctionID::OnButtonEventID),
- (*message_)[strings::params][strings::function_id].asInt());
+ (*message)[am::strings::params][am::strings::function_id].asInt());
EXPECT_EQ(static_cast<int32_t>(am::MessageType::kNotification),
- (*message_)[strings::params][strings::message_type].asInt());
+ (*message)[am::strings::params][am::strings::message_type].asInt());
}
TEST_F(HMICommandsNotificationsTest, OnNaviTBTClientSendNotificationToMobile) {
+ MessageSharedPtr message = CreateMessage();
utils::SharedPtr<Command> command =
- CreateCommand<OnNaviTBTClientStateNotification>(message_);
+ CreateCommand<OnNaviTBTClientStateNotification>(message);
- EXPECT_CALL(mock_app_manager_,
+ EXPECT_CALL(app_mngr_,
ManageMobileCommand(_, Command::CommandOrigin::ORIGIN_SDL));
command->Run();
EXPECT_EQ(static_cast<int32_t>(mobile_apis::FunctionID::OnTBTClientStateID),
- (*message_)[strings::params][strings::function_id].asInt());
+ (*message)[am::strings::params][am::strings::function_id].asInt());
EXPECT_EQ(static_cast<int32_t>(am::MessageType::kNotification),
- (*message_)[strings::params][strings::message_type].asInt());
+ (*message)[am::strings::params][am::strings::message_type].asInt());
}
TEST_F(HMICommandsNotificationsTest,
OnNaviWayPointChangeSendNotificationToMobile) {
+ MessageSharedPtr message = CreateMessage();
utils::SharedPtr<Command> command =
- CreateCommand<OnNaviWayPointChangeNotification>(message_);
+ CreateCommand<OnNaviWayPointChangeNotification>(message);
- EXPECT_CALL(mock_app_manager_,
+ EXPECT_CALL(app_mngr_,
ManageMobileCommand(_, Command::CommandOrigin::ORIGIN_SDL));
command->Run();
EXPECT_EQ(static_cast<int32_t>(mobile_apis::FunctionID::OnWayPointChangeID),
- (*message_)[strings::params][strings::function_id].asInt());
+ (*message)[am::strings::params][am::strings::function_id].asInt());
EXPECT_EQ(static_cast<int32_t>(am::MessageType::kNotification),
- (*message_)[strings::params][strings::message_type].asInt());
+ (*message)[am::strings::params][am::strings::message_type].asInt());
}
TEST_F(HMICommandsNotificationsTest, OnUICommandSendNotificationToMobile) {
+ MessageSharedPtr message = CreateMessage();
utils::SharedPtr<Command> command =
- CreateCommand<OnUICommandNotification>(message_);
+ CreateCommand<OnUICommandNotification>(message);
- EXPECT_CALL(mock_app_manager_,
+ EXPECT_CALL(app_mngr_,
ManageMobileCommand(_, Command::CommandOrigin::ORIGIN_SDL));
command->Run();
EXPECT_EQ(static_cast<int32_t>(mobile_apis::FunctionID::eType::OnCommandID),
- (*message_)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(static_cast<int32_t>(mobile_apis::TriggerSource::TS_MENU),
- (*message_)[strings::msg_params][strings::trigger_source].asInt());
+ (*message)[am::strings::params][am::strings::function_id].asInt());
+ EXPECT_EQ(
+ static_cast<int32_t>(mobile_apis::TriggerSource::TS_MENU),
+ (*message)[am::strings::msg_params][am::strings::trigger_source].asInt());
EXPECT_EQ(static_cast<int32_t>(am::MessageType::kNotification),
- (*message_)[strings::params][strings::message_type].asInt());
+ (*message)[am::strings::params][am::strings::message_type].asInt());
}
TEST_F(HMICommandsNotificationsTest,
OnUIKeyBoardInputSendNotificationToMobile) {
+ MessageSharedPtr message = CreateMessage();
utils::SharedPtr<Command> command =
- CreateCommand<hmi::OnUIKeyBoardInputNotification>(message_);
+ CreateCommand<hmi::OnUIKeyBoardInputNotification>(message);
- EXPECT_CALL(mock_app_manager_,
+ EXPECT_CALL(app_mngr_,
ManageMobileCommand(_, Command::CommandOrigin::ORIGIN_SDL));
command->Run();
EXPECT_EQ(static_cast<int32_t>(mobile_apis::FunctionID::OnKeyboardInputID),
- (*message_)[strings::params][strings::function_id].asInt());
+ (*message)[am::strings::params][am::strings::function_id].asInt());
EXPECT_EQ(static_cast<int32_t>(am::MessageType::kNotification),
- (*message_)[strings::params][strings::message_type].asInt());
+ (*message)[am::strings::params][am::strings::message_type].asInt());
}
TEST_F(HMICommandsNotificationsTest, OnUITouchEventSendNotificationToMobile) {
+ MessageSharedPtr message = CreateMessage();
utils::SharedPtr<Command> command =
- CreateCommand<hmi::OnUITouchEventNotification>(message_);
+ CreateCommand<hmi::OnUITouchEventNotification>(message);
- EXPECT_CALL(mock_app_manager_,
+ EXPECT_CALL(app_mngr_,
ManageMobileCommand(_, Command::CommandOrigin::ORIGIN_SDL));
command->Run();
EXPECT_EQ(static_cast<int32_t>(mobile_apis::FunctionID::OnTouchEventID),
- (*message_)[strings::params][strings::function_id].asInt());
+ (*message)[am::strings::params][am::strings::function_id].asInt());
EXPECT_EQ(static_cast<int32_t>(am::MessageType::kNotification),
- (*message_)[strings::params][strings::message_type].asInt());
+ (*message)[am::strings::params][am::strings::message_type].asInt());
}
TEST_F(HMICommandsNotificationsTest,
- OnAppUnregisteredNotificationEventDispatcher) {
+ OnAppRegisteredNotificationSendNotificationToHmi) {
int32_t event_id = hmi_apis::FunctionID::INVALID_ENUM;
+ MessageSharedPtr message = CreateMessage();
+ utils::SharedPtr<Command> command =
+ CreateCommand<OnAppRegisteredNotification>(message);
+
+ EXPECT_CALL(app_mngr_, SendMessageToHMI(_));
+ EXPECT_CALL(app_mngr_, event_dispatcher());
+ EXPECT_CALL(mock_event_dispatcher_, raise_event(_))
+ .WillOnce(GetEventId(&event_id));
+ command->Run();
+ EXPECT_EQ(static_cast<int32_t>(
+ hmi_apis::FunctionID::BasicCommunication_OnAppRegistered),
+ event_id);
+ EXPECT_EQ(
+ kHmiProtocolType_,
+ (*message)[am::strings::params][am::strings::protocol_type].asInt());
+ EXPECT_EQ(
+ kProtocolVersion_,
+ (*message)[am::strings::params][am::strings::protocol_version].asInt());
+}
+TEST_F(HMICommandsNotificationsTest,
+ OnAppUnregisteredNotificationEventDispatcher) {
+ int32_t event_id = hmi_apis::FunctionID::INVALID_ENUM;
+ MessageSharedPtr message = CreateMessage();
utils::SharedPtr<Command> command =
- CreateCommand<OnAppUnregisteredNotification>(message_);
+ CreateCommand<OnAppUnregisteredNotification>(message);
- EXPECT_CALL(mock_app_manager_, SendMessageToHMI(_));
- EXPECT_CALL(mock_app_manager_, event_dispatcher());
+ EXPECT_CALL(app_mngr_, SendMessageToHMI(_));
+ EXPECT_CALL(app_mngr_, event_dispatcher());
EXPECT_CALL(mock_event_dispatcher_, raise_event(_))
.WillOnce(GetEventId(&event_id));
command->Run();
EXPECT_EQ(static_cast<int32_t>(
hmi_apis::FunctionID::BasicCommunication_OnAppUnregistered),
event_id);
- EXPECT_EQ(kHmiProtocolType_,
- (*message_)[strings::params][strings::protocol_type].asInt());
- EXPECT_EQ(kProtocolVersion_,
- (*message_)[strings::params][strings::protocol_version].asInt());
+ EXPECT_EQ(
+ kHmiProtocolType_,
+ (*message)[am::strings::params][am::strings::protocol_type].asInt());
+ EXPECT_EQ(
+ kProtocolVersion_,
+ (*message)[am::strings::params][am::strings::protocol_version].asInt());
}
TEST_F(HMICommandsNotificationsTest, OnButtonPressNotificationEventDispatcher) {
int32_t event_id = hmi_apis::FunctionID::INVALID_ENUM;
-
+ MessageSharedPtr message = CreateMessage();
utils::SharedPtr<Command> command =
- CreateCommand<hmi::OnButtonPressNotification>(message_);
+ CreateCommand<hmi::OnButtonPressNotification>(message);
- EXPECT_CALL(mock_app_manager_,
+ EXPECT_CALL(app_mngr_,
ManageMobileCommand(_, Command::CommandOrigin::ORIGIN_SDL));
- EXPECT_CALL(mock_app_manager_, event_dispatcher());
+ EXPECT_CALL(app_mngr_, event_dispatcher());
EXPECT_CALL(mock_event_dispatcher_, raise_event(_))
.WillOnce(GetEventId(&event_id));
command->Run();
EXPECT_EQ(static_cast<int32_t>(hmi_apis::FunctionID::Buttons_OnButtonPress),
event_id);
EXPECT_EQ(static_cast<int>(mobile_apis::FunctionID::eType::OnButtonPressID),
- (*message_)[strings::params][strings::function_id].asInt());
+ (*message)[am::strings::params][am::strings::function_id].asInt());
}
TEST_F(HMICommandsNotificationsTest, OnReadyNotificationEventDispatcher) {
int32_t event_id = hmi_apis::FunctionID::INVALID_ENUM;
-
+ MessageSharedPtr message = CreateMessage();
utils::SharedPtr<Command> command =
- CreateCommand<OnReadyNotification>(message_);
+ CreateCommand<OnReadyNotification>(message);
- EXPECT_CALL(mock_app_manager_, OnHMIStartedCooperation());
- EXPECT_CALL(mock_app_manager_, event_dispatcher());
+ EXPECT_CALL(app_mngr_, OnHMIStartedCooperation());
+ EXPECT_CALL(app_mngr_, event_dispatcher());
EXPECT_CALL(mock_event_dispatcher_, raise_event(_))
.WillOnce(GetEventId(&event_id));
command->Run();
EXPECT_EQ(hmi_apis::FunctionID::BasicCommunication_OnReady, event_id);
}
+// policy handler
TEST_F(HMICommandsNotificationsTest,
OnIgnitionCycleOverNotificationPolicyHandler) {
+ MessageSharedPtr message = CreateMessage();
utils::SharedPtr<Command> command =
- CreateCommand<OnIgnitionCycleOverNotification>(message_);
+ CreateCommand<OnIgnitionCycleOverNotification>(message);
- EXPECT_CALL(mock_policy_handler_, OnIgnitionCycleOver());
+ EXPECT_CALL(app_mngr_, GetPolicyHandler());
+ EXPECT_CALL(policy_interface_, OnIgnitionCycleOver());
command->Run();
}
TEST_F(HMICommandsNotificationsTest, OnPolicyUpdateNotificationPolicyHandler) {
- utils::SharedPtr<Command> command = CreateCommand<OnPolicyUpdate>(message_);
+ MessageSharedPtr message = CreateMessage();
+ utils::SharedPtr<Command> command = CreateCommand<OnPolicyUpdate>(message);
- EXPECT_CALL(mock_policy_handler_, OnPTExchangeNeeded());
+ EXPECT_CALL(app_mngr_, GetPolicyHandler());
+ EXPECT_CALL(policy_interface_, OnPTExchangeNeeded());
command->Run();
}
+#if defined(PROPRIETARY_MODE) || defined(EXTERNAL_PROPRIETARY_MODE)
TEST_F(HMICommandsNotificationsTest,
OnReceivePolicyUpdateNotification_SUCCESS) {
const std::string kFile = "./test_file.txt";
@@ -552,67 +646,84 @@ TEST_F(HMICommandsNotificationsTest,
std::vector<uint8_t> data(tmp, tmp + 4);
EXPECT_TRUE(file_system::WriteBinaryFile(kFile, data));
- (*message_)[strings::msg_params][am::hmi_notification::policyfile] = kFile;
+ MessageSharedPtr message = CreateMessage(smart_objects::SmartType_String);
+ (*message)[am::strings::msg_params][am::hmi_notification::policyfile] = kFile;
utils::SharedPtr<Command> command =
- CreateCommand<OnReceivedPolicyUpdate>(message_);
+ CreateCommand<OnReceivedPolicyUpdate>(message);
- EXPECT_CALL(mock_policy_handler_, ReceiveMessageFromSDK(kFile, data));
+ EXPECT_CALL(app_mngr_, GetPolicyHandler());
+ EXPECT_CALL(policy_interface_, ReceiveMessageFromSDK(kFile, data));
command->Run();
EXPECT_TRUE(file_system::DeleteFile(kFile));
}
+#endif
TEST_F(HMICommandsNotificationsTest,
OnReceivePolicyUpdateNotification_UNSUCCESS) {
+ MessageSharedPtr message = CreateMessage(smart_objects::SmartType_String);
utils::SharedPtr<Command> command =
- CreateCommand<OnReceivedPolicyUpdate>(message_);
+ CreateCommand<OnReceivedPolicyUpdate>(message);
- EXPECT_CALL(mock_app_manager_, GetPolicyHandler()).Times(0);
- EXPECT_CALL(mock_policy_handler_, ReceiveMessageFromSDK(_, _)).Times(0);
+ EXPECT_CALL(app_mngr_, GetPolicyHandler()).Times(0);
+ EXPECT_CALL(policy_interface_, ReceiveMessageFromSDK(_, _)).Times(0);
command->Run();
}
TEST_F(HMICommandsNotificationsTest,
OnAppPermissionConsentNotificationPolicyHandlerNoAppId) {
- (*message_)[strings::msg_params]["consentedFunctions"] =
+ MessageSharedPtr message = CreateMessage(smart_objects::SmartType_Map);
+ (*message)[am::strings::msg_params]["consentedFunctions"] =
smart_objects::SmartObject(smart_objects::SmartType_Array);
SmartObject& applications =
- (*message_)[strings::msg_params]["consentedFunctions"];
+ (*message)[am::strings::msg_params]["consentedFunctions"];
smart_objects::SmartObject hmi_application_temp(smart_objects::SmartType_Map);
applications[0] = hmi_application_temp;
utils::SharedPtr<Command> command =
- CreateCommand<OnAppPermissionConsentNotification>(message_);
- EXPECT_CALL(mock_policy_handler_,
- OnAppPermissionConsent(kConnectionKey, _, _));
+ CreateCommand<OnAppPermissionConsentNotification>(message);
+
+ int32_t connection_id = -1;
+ EXPECT_CALL(app_mngr_, GetPolicyHandler());
+#ifdef EXTERNAL_PROPRIETARY_MODE
+ EXPECT_CALL(policy_interface_, OnAppPermissionConsent(_, _, _))
+#else
+ EXPECT_CALL(policy_interface_, OnAppPermissionConsent(_, _))
+#endif
+ .WillOnce(GetArg(&connection_id));
command->Run();
+ EXPECT_EQ(0, connection_id);
}
TEST_F(HMICommandsNotificationsTest,
OnAppPermissionConsentNotificationPolicyHandlerWithAppId) {
- (*message_)[strings::msg_params][strings::app_id] = kAppId;
- (*message_)[strings::msg_params]["consentedFunctions"] =
+ MessageSharedPtr message = CreateMessage(smart_objects::SmartType_Map);
+ (*message)[am::strings::msg_params][am::strings::app_id] = kAppId_;
+ (*message)[am::strings::msg_params]["consentedFunctions"] =
smart_objects::SmartObject(smart_objects::SmartType_Array);
smart_objects::SmartObjectSPtr consented_function =
utils::MakeShared<smart_objects::SmartObject>();
- (*message_)[strings::msg_params]["consentedFunctions"][0] =
+ (*message)[am::strings::msg_params]["consentedFunctions"][0] =
*consented_function;
utils::SharedPtr<Command> command =
- CreateCommand<OnAppPermissionConsentNotification>(message_);
+ CreateCommand<OnAppPermissionConsentNotification>(message);
- uint32_t connection_id = 0u;
+ int32_t connection_id = -1;
policy::PermissionConsent permission_consent;
- EXPECT_CALL(mock_policy_handler_, OnAppPermissionConsent(_, _, _))
+ EXPECT_CALL(app_mngr_, GetPolicyHandler());
+#ifdef EXTERNAL_PROPRIETARY_MODE
+ EXPECT_CALL(policy_interface_, OnAppPermissionConsent(_, _, _))
+#else
+ EXPECT_CALL(policy_interface_, OnAppPermissionConsent(_, _))
+#endif
.WillOnce(
GetConnectIdPermissionConsent(&connection_id, &permission_consent));
command->Run();
- EXPECT_EQ(kAppId, connection_id);
-
+ EXPECT_EQ(static_cast<int32_t>(kAppId_), connection_id);
std::vector<policy::FunctionalGroupPermission>::const_iterator it =
permission_consent.group_permissions.begin();
-
for (; it != permission_consent.group_permissions.end(); ++it) {
EXPECT_EQ(policy::kGroupUndefined, (*it).state);
}
@@ -620,29 +731,35 @@ TEST_F(HMICommandsNotificationsTest,
TEST_F(HMICommandsNotificationsTest,
OnAppPermissionConsentNotificationPolicyHandlerAppIdAllowTrue) {
- (*message_)[strings::msg_params]["consentedFunctions"] =
+ MessageSharedPtr message = CreateMessage(smart_objects::SmartType_Map);
+ (*message)[am::strings::msg_params]["consentedFunctions"] =
smart_objects::SmartObject(smart_objects::SmartType_Array);
- (*message_)[strings::msg_params][strings::app_id] = kAppId;
- (*message_)[strings::msg_params]["source"] = "test_content_source";
+ (*message)[am::strings::msg_params][am::strings::app_id] = kAppId_;
+ (*message)[am::strings::msg_params]["source"] = "test_content_source";
smart_objects::SmartObjectSPtr consented_function =
utils::MakeShared<smart_objects::SmartObject>();
(*consented_function)["allowed"] = true;
- (*consented_function)[strings::id] = 999;
- (*consented_function)[strings::name] = "test_group_alias";
- (*message_)[strings::msg_params]["consentedFunctions"][0] =
+ (*consented_function)[am::strings::id] = 999;
+ (*consented_function)[am::strings::name] = "test_group_alias";
+ (*message)[am::strings::msg_params]["consentedFunctions"][0] =
*consented_function;
utils::SharedPtr<Command> command =
- CreateCommand<OnAppPermissionConsentNotification>(message_);
+ CreateCommand<OnAppPermissionConsentNotification>(message);
- uint32_t connection_id = 0u;
+ int32_t connection_id = -1;
policy::PermissionConsent permission_consent;
- EXPECT_CALL(mock_policy_handler_, OnAppPermissionConsent(_, _, _))
+ EXPECT_CALL(app_mngr_, GetPolicyHandler());
+#ifdef EXTERNAL_PROPRIETARY_MODE
+ EXPECT_CALL(policy_interface_, OnAppPermissionConsent(_, _, _))
+#else
+ EXPECT_CALL(policy_interface_, OnAppPermissionConsent(_, _))
+#endif
.WillOnce(
GetConnectIdPermissionConsent(&connection_id, &permission_consent));
command->Run();
- EXPECT_EQ(kAppId, connection_id);
+ EXPECT_EQ(static_cast<int32_t>(kAppId_), connection_id);
std::vector<policy::FunctionalGroupPermission>::const_iterator it =
permission_consent.group_permissions.begin();
@@ -656,29 +773,35 @@ TEST_F(HMICommandsNotificationsTest,
TEST_F(HMICommandsNotificationsTest,
OnAppPermissionConsentNotificationPolicyHandlerAppIdAllowFalse) {
- (*message_)[strings::msg_params]["consentedFunctions"] =
+ MessageSharedPtr message = CreateMessage(smart_objects::SmartType_Map);
+ (*message)[am::strings::msg_params]["consentedFunctions"] =
smart_objects::SmartObject(smart_objects::SmartType_Array);
- (*message_)[strings::msg_params][strings::app_id] = kAppId;
- (*message_)[strings::msg_params]["source"] = "test_content_source";
+ (*message)[am::strings::msg_params][am::strings::app_id] = kAppId_;
+ (*message)[am::strings::msg_params]["source"] = "test_content_source";
smart_objects::SmartObjectSPtr consented_function =
utils::MakeShared<smart_objects::SmartObject>();
(*consented_function)["allowed"] = false;
- (*consented_function)[strings::id] = 999;
- (*consented_function)[strings::name] = "test_group_alias";
- (*message_)[strings::msg_params]["consentedFunctions"][0] =
+ (*consented_function)[am::strings::id] = 999;
+ (*consented_function)[am::strings::name] = "test_group_alias";
+ (*message)[am::strings::msg_params]["consentedFunctions"][0] =
*consented_function;
utils::SharedPtr<Command> command =
- CreateCommand<OnAppPermissionConsentNotification>(message_);
+ CreateCommand<OnAppPermissionConsentNotification>(message);
- uint32_t connection_id = 0u;
+ int32_t connection_id = -1;
policy::PermissionConsent permission_consent;
- EXPECT_CALL(mock_policy_handler_, OnAppPermissionConsent(_, _, _))
+ EXPECT_CALL(app_mngr_, GetPolicyHandler());
+#ifdef EXTERNAL_PROPRIETARY_MODE
+ EXPECT_CALL(policy_interface_, OnAppPermissionConsent(_, _, _))
+#else
+ EXPECT_CALL(policy_interface_, OnAppPermissionConsent(_, _))
+#endif
.WillOnce(
GetConnectIdPermissionConsent(&connection_id, &permission_consent));
command->Run();
- EXPECT_EQ(kAppId, connection_id);
+ EXPECT_EQ(static_cast<int32_t>(kAppId_), connection_id);
std::vector<policy::FunctionalGroupPermission>::const_iterator it =
permission_consent.group_permissions.begin();
@@ -692,14 +815,16 @@ TEST_F(HMICommandsNotificationsTest,
TEST_F(HMICommandsNotificationsTest,
OnSystemErrorNotificationOnSystemErrorCode) {
- (*message_)[strings::msg_params][am::hmi_notification::error] =
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::hmi_notification::error] =
hmi_apis::Common_SystemError::SYNC_REBOOTED;
utils::SharedPtr<Command> command =
- CreateCommand<OnSystemErrorNotification>(message_);
+ CreateCommand<OnSystemErrorNotification>(message);
int32_t code = hmi_apis::Common_SystemError::INVALID_ENUM;
- EXPECT_CALL(mock_policy_handler_, OnSystemError(_)).WillOnce(GetArg(&code));
+ EXPECT_CALL(app_mngr_, GetPolicyHandler());
+ EXPECT_CALL(policy_interface_, OnSystemError(_)).WillOnce(GetArg(&code));
command->Run();
EXPECT_EQ(static_cast<int32_t>(hmi_apis::Common_SystemError::SYNC_REBOOTED),
code);
@@ -708,42 +833,49 @@ TEST_F(HMICommandsNotificationsTest,
TEST_F(HMICommandsNotificationsTest,
OnSystemInfoChangedNotificationCheckLanguage) {
const uint32_t kLangCode = 5u;
-
- (*message_)[strings::msg_params][strings::language] = kLangCode;
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::language] = kLangCode;
utils::SharedPtr<Command> command =
- CreateCommand<OnSystemInfoChangedNotification>(message_);
+ CreateCommand<OnSystemInfoChangedNotification>(message);
EXPECT_CALL(*message_helper_mock_, CommonLanguageToString(_));
- EXPECT_CALL(mock_policy_handler_, OnSystemInfoChanged(_));
+ EXPECT_CALL(app_mngr_, GetPolicyHandler());
+ EXPECT_CALL(policy_interface_, OnSystemInfoChanged(_));
command->Run();
}
TEST_F(HMICommandsNotificationsTest,
OnAllowSDLFunctionalityNotificationDeviceKeyNotExist) {
- (*message_)[strings::msg_params][am::hmi_response::allowed] = true;
+ const std::string kDeviceId = "";
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::hmi_response::allowed] = true;
utils::SharedPtr<Command> command =
- CreateCommand<OnAllowSDLFunctionalityNotification>(message_);
+ CreateCommand<OnAllowSDLFunctionalityNotification>(message);
bool value = false;
std::string str;
- EXPECT_CALL(mock_policy_handler_, OnAllowSDLFunctionalityNotification(_, _))
+ EXPECT_CALL(app_mngr_, GetPolicyHandler());
+ EXPECT_CALL(policy_interface_, OnAllowSDLFunctionalityNotification(_, _))
.WillOnce(GetBoolValueAndString(&value, &str));
command->Run();
EXPECT_EQ(true, value);
- EXPECT_EQ(kEmptyDeviceInternalId, str);
+ EXPECT_EQ(kDeviceId, str);
}
TEST_F(HMICommandsNotificationsTest,
OnAllowSDLFunctionalityNotificationDeviceKeyExist) {
- (*message_)[strings::msg_params][am::hmi_response::allowed] = true;
- (*message_)[strings::msg_params][strings::device][strings::id] = kDeviceId;
+ const std::string kDeviceId = "device_id";
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::hmi_response::allowed] = true;
+ (*message)[am::strings::msg_params]["device"]["id"] = kDeviceId;
utils::SharedPtr<Command> command =
- CreateCommand<OnAllowSDLFunctionalityNotification>(message_);
+ CreateCommand<OnAllowSDLFunctionalityNotification>(message);
bool value;
std::string str;
- EXPECT_CALL(mock_policy_handler_, OnAllowSDLFunctionalityNotification(_, _))
+ EXPECT_CALL(app_mngr_, GetPolicyHandler());
+ EXPECT_CALL(policy_interface_, OnAllowSDLFunctionalityNotification(_, _))
.WillOnce(GetBoolValueAndString(&value, &str));
command->Run();
EXPECT_EQ(true, value);
@@ -752,96 +884,101 @@ TEST_F(HMICommandsNotificationsTest,
TEST_F(HMICommandsNotificationsTest,
OnDeviceStateChangedNotificationDeviceStateNotUnpaired) {
- (*message_)[strings::msg_params]["deviceState"] =
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params]["deviceState"] =
hmi_apis::Common_DeviceState::INVALID_ENUM;
utils::SharedPtr<Command> command =
- CreateCommand<OnDeviceStateChangedNotification>(message_);
+ CreateCommand<OnDeviceStateChangedNotification>(message);
- EXPECT_CALL(mock_policy_handler_, RemoveDevice(_)).Times(0);
+ EXPECT_CALL(app_mngr_, GetPolicyHandler()).Times(0);
+ EXPECT_CALL(policy_interface_, RemoveDevice(_)).Times(0);
command->Run();
}
TEST_F(HMICommandsNotificationsTest,
OnDeviceStateChangedNotificationDeviceStateUnpaired) {
- (*message_)[strings::msg_params]["deviceState"] =
+ // Random MAC adress for test. It must contain 12 symbols.
+ const std::string device_id = "AA15F2204D6B";
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params]["deviceState"] =
hmi_apis::Common_DeviceState::UNPAIRED;
- (*message_)[strings::msg_params]["deviceInternalId"] =
- kCustomDeviceInternalId;
+ (*message)[am::strings::msg_params]["deviceInternalId"] = device_id;
utils::SharedPtr<Command> command =
- CreateCommand<OnDeviceStateChangedNotification>(message_);
+ CreateCommand<OnDeviceStateChangedNotification>(message);
- // If the "deviceInternalId" key is valid the MAC address will be hashed
- EXPECT_CALL(mock_policy_handler_, RemoveDevice(_));
+ EXPECT_CALL(app_mngr_, GetPolicyHandler());
+ EXPECT_CALL(policy_interface_, RemoveDevice(_));
command->Run();
}
TEST_F(HMICommandsNotificationsTest,
OnDeviceStateChangedNotificationDeviceStateEmptyDeviceId) {
- (*message_)[strings::msg_params]["deviceState"] =
+ const std::string empty_device_id = "";
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params]["deviceState"] =
hmi_apis::Common_DeviceState::UNPAIRED;
- (*message_)[strings::msg_params]["deviceInternalId"] = kEmptyDeviceInternalId;
+ (*message)[am::strings::msg_params]["deviceInternalId"] = empty_device_id;
utils::SharedPtr<Command> command =
- CreateCommand<OnDeviceStateChangedNotification>(message_);
+ CreateCommand<OnDeviceStateChangedNotification>(message);
- std::string result_device_id = "default_id";
- EXPECT_CALL(mock_policy_handler_, RemoveDevice(_))
- .WillOnce(GetArg(&result_device_id));
+ std::string device_id = "default_id";
+ EXPECT_CALL(app_mngr_, GetPolicyHandler());
+ EXPECT_CALL(policy_interface_, RemoveDevice(_)).WillOnce(GetArg(&device_id));
command->Run();
- EXPECT_EQ(kEmptyDeviceInternalId, result_device_id);
+ EXPECT_EQ(empty_device_id, device_id);
}
TEST_F(HMICommandsNotificationsTest,
OnDeviceStateChangedNotificationDeviceStateDeviceIdFromId) {
+ const std::string empty_device_id = "";
+ const std::string id = "id_string";
MessageSharedPtr message = CreateMessage();
- (*message)[strings::msg_params]["deviceState"] =
+ (*message)[am::strings::msg_params]["deviceState"] =
hmi_apis::Common_DeviceState::UNPAIRED;
- (*message)[strings::msg_params]["deviceInternalId"] = kEmptyDeviceInternalId;
- (*message)[strings::msg_params]["deviceId"][strings::id] = kDeviceId;
+ (*message)[am::strings::msg_params]["deviceInternalId"] = empty_device_id;
+ (*message)[am::strings::msg_params]["deviceId"]["id"] = id;
utils::SharedPtr<Command> command =
CreateCommand<OnDeviceStateChangedNotification>(message);
- std::string result_device_id = "default_id";
- EXPECT_CALL(mock_policy_handler_, RemoveDevice(_))
- .WillOnce(GetArg(&result_device_id));
+ std::string device_id = "default_id";
+ EXPECT_CALL(app_mngr_, GetPolicyHandler());
+ EXPECT_CALL(policy_interface_, RemoveDevice(_)).WillOnce(GetArg(&device_id));
command->Run();
- EXPECT_EQ(kDeviceId, result_device_id);
-}
-
-MATCHER_P(ReasonCodeEqualTo, kCode, "") {
- return kCode == arg;
-}
-
-void DummySigHandler(int) {
- return;
+ EXPECT_EQ(id, device_id);
}
+//~policy_handler
TEST_F(HMICommandsNotificationsTest,
OnExitAllApplicationsNotificationReasonIgnitionOff) {
- (*message_)[strings::msg_params][am::hmi_request::reason] =
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::hmi_request::reason] =
hmi_apis::Common_ApplicationsCloseReason::IGNITION_OFF;
- utils::SharedPtr<am::commands::Command> command =
- CreateCommand<am::commands::OnExitAllApplicationsNotification>(message_);
+ utils::SharedPtr<Command> command =
+ CreateCommand<OnExitAllApplicationsNotification>(message);
+#if defined(OS_POSIX)
+ am::mobile_api::AppInterfaceUnregisteredReason::eType mob_reason;
- EXPECT_CALL(
- mock_app_manager_,
- SetUnregisterAllApplicationsReason(ReasonCodeEqualTo(
- am::mobile_api::AppInterfaceUnregisteredReason::IGNITION_OFF)));
- EXPECT_CALL(mock_app_manager_, HeadUnitReset(_)).Times(0);
+ EXPECT_CALL(app_mngr_, SetUnregisterAllApplicationsReason(_))
+ .WillOnce(GetArg(&mob_reason));
+ EXPECT_CALL(app_mngr_, HeadUnitReset(_)).Times(0);
- utils::UnsibscribeFromTermination();
+ SubscribeForSignal();
command->Run();
- utils::WaitTerminationSignals(&DummySigHandler);
+ utils::WaitTerminationSignals(sig_handler);
- EXPECT_CALL(mock_app_manager_, SetUnregisterAllApplicationsReason(_))
- .Times(0);
+ EXPECT_EQ(am::mobile_api::AppInterfaceUnregisteredReason::IGNITION_OFF,
+ mob_reason);
+#endif
}
TEST_F(HMICommandsNotificationsTest,
OnExitAllApplicationsNotificationReasonMasterResetAndFactoryDefaults) {
+ MessageSharedPtr message = CreateMessage();
+
std::vector<hmi_apis::Common_ApplicationsCloseReason::eType> reason_list;
reason_list.push_back(hmi_apis::Common_ApplicationsCloseReason::MASTER_RESET);
reason_list.push_back(
@@ -860,87 +997,88 @@ TEST_F(HMICommandsNotificationsTest,
it_mob_reason = mob_reason_list.begin();
for (; it_reason != reason_list.end(); ++it_reason, ++it_mob_reason) {
- (*message_)[strings::msg_params][am::hmi_request::reason] = *it_reason;
-
- utils::SharedPtr<am::commands::Command> command =
- CreateCommand<am::commands::OnExitAllApplicationsNotification>(
- message_);
+ (*message)[am::strings::msg_params][am::hmi_request::reason] = *it_reason;
+ utils::SharedPtr<Command> command =
+ CreateCommand<OnExitAllApplicationsNotification>(message);
+#if defined(OS_POSIX)
am::mobile_api::AppInterfaceUnregisteredReason::eType mob_reason =
*it_mob_reason;
- EXPECT_CALL(mock_app_manager_,
- SetUnregisterAllApplicationsReason(mob_reason));
- EXPECT_CALL(mock_app_manager_, HeadUnitReset(mob_reason));
- utils::UnsibscribeFromTermination();
+ EXPECT_CALL(app_mngr_, SetUnregisterAllApplicationsReason(mob_reason));
+ EXPECT_CALL(app_mngr_, HeadUnitReset(mob_reason));
+
+ SubscribeForSignal();
command->Run();
- utils::WaitTerminationSignals(&DummySigHandler);
- EXPECT_CALL(mock_app_manager_, SetUnregisterAllApplicationsReason(_))
- .Times(0);
- EXPECT_CALL(mock_app_manager_, HeadUnitReset(_)).Times(0);
+ utils::WaitTerminationSignals(sig_handler);
+#endif
}
}
TEST_F(HMICommandsNotificationsTest,
OnExitAllApplicationsNotificationReasonSuspend) {
- (*message_)[strings::msg_params][am::hmi_request::reason] =
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::hmi_request::reason] =
hmi_apis::Common_ApplicationsCloseReason::SUSPEND;
- utils::SharedPtr<am::commands::Command> command =
- CreateCommand<am::commands::OnExitAllApplicationsNotification>(message_);
+ utils::SharedPtr<Command> command =
+ CreateCommand<OnExitAllApplicationsNotification>(message);
MessageSharedPtr ethalon_message =
CreateMessage(smart_objects::SmartType_Map);
- (*ethalon_message)[strings::params][strings::function_id] =
+ (*ethalon_message)[am::strings::params][am::strings::function_id] =
hmi_apis::FunctionID::BasicCommunication_OnSDLPersistenceComplete;
- (*ethalon_message)[strings::params][strings::message_type] =
+ (*ethalon_message)[am::strings::params][am::strings::message_type] =
am::MessageType::kNotification;
- (*ethalon_message)[strings::params][strings::correlation_id] =
+ (*ethalon_message)[am::strings::params][am::strings::correlation_id] =
kCorrelationId_;
MessageSharedPtr temp_message = CreateMessage();
- EXPECT_CALL(mock_app_manager_, GetNextHMICorrelationID())
+ EXPECT_CALL(app_mngr_, GetNextHMICorrelationID())
.WillOnce(Return(kCorrelationId_));
- EXPECT_CALL(mock_app_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(GetMessage(temp_message), Return(true)));
+ EXPECT_CALL(app_mngr_, ManageHMICommand(_))
+ .WillOnce(GetMessage(temp_message));
command->Run();
- EXPECT_CALL(mock_app_manager_, GetNextHMICorrelationID()).Times(0);
- EXPECT_CALL(mock_app_manager_, ManageHMICommand(_)).Times(0);
- EXPECT_EQ((*temp_message)[strings::params][strings::function_id].asInt(),
- hmi_apis::FunctionID::BasicCommunication_OnSDLPersistenceComplete);
- EXPECT_EQ((*temp_message)[strings::params][strings::message_type].asInt(),
- am::MessageType::kNotification);
- EXPECT_EQ((*temp_message)[strings::params][strings::correlation_id].asInt(),
- kCorrelationId_);
+ EXPECT_EQ(
+ static_cast<uint32_t>(
+ hmi_apis::FunctionID::BasicCommunication_OnSDLPersistenceComplete),
+ (*temp_message)[am::strings::params][am::strings::function_id].asInt());
+ EXPECT_EQ(
+ static_cast<uint32_t>(am::MessageType::kNotification),
+ (*temp_message)[am::strings::params][am::strings::message_type].asInt());
+ EXPECT_EQ(static_cast<uint32_t>(kCorrelationId_),
+ (*temp_message)[am::strings::params][am::strings::correlation_id]
+ .asInt());
}
TEST_F(HMICommandsNotificationsTest,
OnExitAllApplicationsNotificationReasonInvalidEnum) {
- (*message_)[strings::msg_params][am::hmi_request::reason] =
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::hmi_request::reason] =
hmi_apis::Common_ApplicationsCloseReason::INVALID_ENUM;
- utils::SharedPtr<am::commands::Command> command =
- CreateCommand<am::commands::OnExitAllApplicationsNotification>(message_);
+ utils::SharedPtr<Command> command =
+ CreateCommand<OnExitAllApplicationsNotification>(message);
- EXPECT_CALL(mock_app_manager_, SetUnregisterAllApplicationsReason(_))
- .Times(0);
- EXPECT_CALL(mock_app_manager_, HeadUnitReset(_)).Times(0);
- EXPECT_CALL(mock_app_manager_, GetNextHMICorrelationID()).Times(0);
- EXPECT_CALL(mock_app_manager_, ManageHMICommand(_)).Times(0);
+ EXPECT_CALL(app_mngr_, SetUnregisterAllApplicationsReason(_)).Times(0);
+ EXPECT_CALL(app_mngr_, HeadUnitReset(_)).Times(0);
+ EXPECT_CALL(app_mngr_, GetNextHMICorrelationID()).Times(0);
+ EXPECT_CALL(app_mngr_, ManageHMICommand(_)).Times(0);
command->Run();
}
TEST_F(HMICommandsNotificationsTest,
OnExitApplicationNotificationManageMobileCommand) {
- (*message_)[strings::msg_params][strings::app_id] = kAppId;
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::app_id] = kAppId_;
smart_objects::SmartObjectSPtr notification =
utils::MakeShared<smart_objects::SmartObject>();
- (*notification)[strings::params][strings::function_id] =
-
- mobile_apis::FunctionID::OnAppInterfaceUnregisteredID;
- (*notification)[strings::params][strings::message_type] =
- am::MessageType::kNotification;
- (*notification)[strings::params][strings::connection_key] = kAppId;
+ (*notification)[am::strings::params][am::strings::function_id] =
+ static_cast<int32_t>(
+ mobile_apis::FunctionID::OnAppInterfaceUnregisteredID);
+ (*notification)[am::strings::params][am::strings::message_type] =
+ static_cast<int32_t>(am::MessageType::kNotification);
+ (*notification)[am::strings::params][am::strings::connection_key] = kAppId_;
std::vector<hmi_apis::Common_ApplicationExitReason::eType> reason_list;
reason_list.push_back(hmi_apis::Common_ApplicationExitReason::
@@ -961,106 +1099,76 @@ TEST_F(HMICommandsNotificationsTest,
it_reason = reason_list.begin();
for (; it_reason != reason_list.end(); ++it_reason, ++it_mobile_reason) {
- (*message_)[strings::msg_params][strings::reason] = *it_reason;
+ (*message)[am::strings::msg_params][am::strings::reason] = *it_reason;
utils::SharedPtr<Command> command =
- CreateCommand<OnExitApplicationNotification>(message_);
+ CreateCommand<OnExitApplicationNotification>(message);
- (*notification)[strings::msg_params][strings::reason] =
+ (*notification)[am::strings::msg_params][am::strings::reason] =
static_cast<int32_t>(*it_mobile_reason);
- EXPECT_CALL(mock_app_manager_, application(kAppId))
- .WillRepeatedly(Return(mock_app_));
+ EXPECT_CALL(app_mngr_, application(kAppId_)).WillRepeatedly(Return(app_));
EXPECT_CALL(*message_helper_mock_,
GetOnAppInterfaceUnregisteredNotificationToMobile(
- kAppId, *it_mobile_reason)).WillOnce(Return(notification));
- EXPECT_CALL(mock_app_manager_,
+ kAppId_, *it_mobile_reason)).WillOnce(Return(notification));
+ EXPECT_CALL(app_mngr_,
ManageMobileCommand(notification, Command::ORIGIN_SDL));
- EXPECT_CALL(mock_app_manager_,
+ EXPECT_CALL(app_mngr_,
UnregisterApplication(
- kAppId, mobile_apis::Result::SUCCESS, false, false));
+ kAppId_, mobile_apis::Result::SUCCESS, false, false));
command->Run();
}
}
TEST_F(HMICommandsNotificationsTest,
OnExitApplicationNotificationUnhandledReason) {
- (*message_)[strings::msg_params][strings::app_id] = kAppId;
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::app_id] = kAppId_;
- (*message_)[strings::msg_params][strings::reason] =
+ (*message)[am::strings::msg_params][am::strings::reason] =
hmi_apis::Common_ApplicationExitReason::INVALID_ENUM;
utils::SharedPtr<Command> command =
- CreateCommand<OnExitApplicationNotification>(message_);
+ CreateCommand<OnExitApplicationNotification>(message);
- EXPECT_CALL(mock_app_manager_, application(_)).Times(0);
- EXPECT_CALL(mock_app_manager_, ManageMobileCommand(_, _)).Times(0);
- EXPECT_CALL(mock_app_manager_, UnregisterApplication(_, _, _, _)).Times(0);
- EXPECT_CALL(mock_app_manager_, state_controller()).Times(0);
- EXPECT_CALL(mock_app_manager_, application(kAppId))
- .WillOnce(Return(mock_app_));
+ EXPECT_CALL(app_mngr_, application(_)).Times(0);
+ EXPECT_CALL(app_mngr_, ManageMobileCommand(_, _)).Times(0);
+ EXPECT_CALL(app_mngr_, UnregisterApplication(_, _, _, _)).Times(0);
+ EXPECT_CALL(app_mngr_, state_controller()).Times(0);
+ EXPECT_CALL(app_mngr_, application(kAppId_)).WillOnce(Return(app_));
command->Run();
}
TEST_F(HMICommandsNotificationsTest, OnExitApplicationNotificationInvalidApp) {
- (*message_)[strings::msg_params][strings::app_id] = kAppId;
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::app_id] = kAppId_;
utils::SharedPtr<Command> command =
- CreateCommand<OnExitApplicationNotification>(message_);
+ CreateCommand<OnExitApplicationNotification>(message);
am::ApplicationSharedPtr invalid_app;
- EXPECT_CALL(mock_app_manager_, application(_)).Times(0);
- EXPECT_CALL(mock_app_manager_, ManageMobileCommand(_, _)).Times(0);
- EXPECT_CALL(mock_app_manager_, UnregisterApplication(_, _, _, _)).Times(0);
- EXPECT_CALL(mock_app_manager_, state_controller()).Times(0);
- EXPECT_CALL(mock_app_manager_, application(kAppId))
- .WillOnce(Return(invalid_app));
- command->Run();
-}
-
-TEST_F(HMICommandsNotificationsTest, Run_InvalidApp_UNSUCCESS) {
- (*message_)[strings::msg_params][strings::app_id] = kAppId;
- (*message_)[strings::msg_params][strings::reason] =
- hmi_apis::Common_ApplicationExitReason::DRIVER_DISTRACTION_VIOLATION;
- utils::SharedPtr<Command> command =
- CreateCommand<OnExitApplicationNotification>(message_);
-
- MockAppPtr valid_app = CreateMockApp();
- EXPECT_CALL(mock_app_manager_, application(kAppId))
- .WillOnce(Return(valid_app))
- .WillOnce(Return(MockAppPtr()));
- EXPECT_CALL(mock_app_manager_, ManageMobileCommand(_, _)).Times(0);
- EXPECT_CALL(mock_app_manager_, UnregisterApplication(_, _, _, _)).Times(0);
- EXPECT_CALL(mock_app_manager_, state_controller()).Times(0);
-
+ EXPECT_CALL(app_mngr_, application(_)).Times(0);
+ EXPECT_CALL(app_mngr_, ManageMobileCommand(_, _)).Times(0);
+ EXPECT_CALL(app_mngr_, UnregisterApplication(_, _, _, _)).Times(0);
+ EXPECT_CALL(app_mngr_, state_controller()).Times(0);
+ EXPECT_CALL(app_mngr_, application(kAppId_)).WillOnce(Return(invalid_app));
command->Run();
}
TEST_F(HMICommandsNotificationsTest,
- OnExitApplicationNotificationDriverDistractionValidApp) {
- (*message_)[strings::msg_params][strings::app_id] = kAppId;
- (*message_)[strings::msg_params][strings::reason] =
+ DISABLED_OnExitApplicationNotificationDriverDistractionValidApp) {
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::app_id] = kAppId_;
+ (*message)[am::strings::msg_params][am::strings::reason] =
hmi_apis::Common_ApplicationExitReason::DRIVER_DISTRACTION_VIOLATION;
utils::SharedPtr<Command> command =
- CreateCommand<OnExitApplicationNotification>(message_);
-
- smart_objects::SmartObjectSPtr notification =
- utils::MakeShared<smart_objects::SmartObject>();
- (*notification)[strings::params][strings::function_id] =
+ CreateCommand<OnExitApplicationNotification>(message);
- mobile_apis::FunctionID::OnAppInterfaceUnregisteredID;
- (*notification)[strings::params][strings::message_type] =
- am::MessageType::kNotification;
- (*notification)[strings::params][strings::connection_key] = kAppId;
- (*notification)[strings::msg_params][strings::reason] =
- mobile_apis::AppInterfaceUnregisteredReason::DRIVER_DISTRACTION_VIOLATION;
-
- EXPECT_CALL(mock_app_manager_, application(kAppId))
- .WillRepeatedly(Return(mock_app_));
+ EXPECT_CALL(app_mngr_, application(kAppId_)).WillRepeatedly(Return(app_));
- EXPECT_CALL(mock_app_manager_, state_controller())
+ EXPECT_CALL(app_mngr_, state_controller())
.WillOnce(ReturnRef(mock_state_controller_));
EXPECT_CALL(mock_state_controller_,
- SetRegularState(static_cast<am::ApplicationSharedPtr>(mock_app_),
+ SetRegularState(app_,
mobile_apis::HMILevel::HMI_NONE,
mobile_apis::AudioStreamingState::NOT_AUDIBLE,
false));
@@ -1068,36 +1176,21 @@ TEST_F(HMICommandsNotificationsTest,
}
TEST_F(HMICommandsNotificationsTest,
- OnExitApplicationNotificationDriverDistractionInvalidApp) {
- (*message_)[strings::msg_params][strings::app_id] = kAppId;
-
- utils::SharedPtr<Command> command =
- CreateCommand<OnExitApplicationNotification>(message_);
-
- EXPECT_CALL(mock_app_manager_, application(kAppId))
- .WillRepeatedly(Return(am::ApplicationSharedPtr()));
-
- EXPECT_CALL(mock_app_manager_, ManageMobileCommand(_, _)).Times(0);
-
- command->Run();
-}
-
-TEST_F(HMICommandsNotificationsTest,
- OnExitApplicationNotificationUserExitValidApp) {
- (*message_)[strings::msg_params][strings::app_id] = kAppId;
- (*message_)[strings::msg_params][strings::reason] =
+ OnExitApplicationNotificationrUserExitValidApp) {
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::app_id] = kAppId_;
+ (*message)[am::strings::msg_params][am::strings::reason] =
hmi_apis::Common_ApplicationExitReason::USER_EXIT;
utils::SharedPtr<Command> command =
- CreateCommand<OnExitApplicationNotification>(message_);
+ CreateCommand<OnExitApplicationNotification>(message);
- EXPECT_CALL(mock_app_manager_, application(kAppId))
- .WillRepeatedly(Return(mock_app_));
- EXPECT_CALL(mock_app_manager_, ManageMobileCommand(_, _)).Times(0);
- EXPECT_CALL(mock_app_manager_, UnregisterApplication(_, _, _, _)).Times(0);
- EXPECT_CALL(mock_app_manager_, state_controller())
+ EXPECT_CALL(app_mngr_, application(kAppId_)).WillRepeatedly(Return(app_));
+ EXPECT_CALL(app_mngr_, ManageMobileCommand(_, _)).Times(0);
+ EXPECT_CALL(app_mngr_, UnregisterApplication(_, _, _, _)).Times(0);
+ EXPECT_CALL(app_mngr_, state_controller())
.WillOnce(ReturnRef(mock_state_controller_));
EXPECT_CALL(mock_state_controller_,
- SetRegularState(static_cast<am::ApplicationSharedPtr>(mock_app_),
+ SetRegularState(app_,
mobile_apis::HMILevel::HMI_NONE,
mobile_apis::AudioStreamingState::NOT_AUDIBLE,
false));
@@ -1106,28 +1199,23 @@ TEST_F(HMICommandsNotificationsTest,
TEST_F(HMICommandsNotificationsTest,
OnVRCommandNotificationSwitchedAndValidApp) {
- const uint32_t cmnd_id = 12u;
+ const uint32_t cmd_id = 12u;
const uint32_t max_cmd_id = 10u;
- (*message_)[strings::msg_params][strings::cmd_id] = cmnd_id;
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::cmd_id] = cmd_id;
utils::SharedPtr<Command> command =
- CreateCommand<OnVRCommandNotification>(message_);
-
- EXPECT_CALL(mock_app_manager_, application(cmnd_id - max_cmd_id))
- .WillOnce(Return(mock_app_));
-
- EXPECT_CALL(mock_app_manager_, get_settings())
- .WillOnce(ReturnRef(mock_app_manager_settings_));
- EXPECT_CALL(mock_app_manager_settings_, max_cmd_id())
- .WillOnce(ReturnRef(max_cmd_id));
+ CreateCommand<OnVRCommandNotification>(message);
- EXPECT_CALL(mock_app_manager_, state_controller())
+ EXPECT_CALL(app_mngr_, application(_)).WillRepeatedly(Return(app_));
+ EXPECT_CALL(app_mngr_, state_controller())
.WillOnce(ReturnRef(mock_state_controller_));
EXPECT_CALL(mock_state_controller_,
- SetRegularState(static_cast<am::ApplicationSharedPtr>(mock_app_),
- mobile_apis::HMILevel::HMI_FULL,
- true));
+ SetRegularState(_, mobile_apis::HMILevel::HMI_FULL, true));
+ EXPECT_CALL(app_mngr_, get_settings())
+ .WillOnce(ReturnRef(app_mngr_settings_));
+ EXPECT_CALL(app_mngr_settings_, max_cmd_id()).WillOnce(ReturnRef(max_cmd_id));
command->Run();
}
@@ -1136,18 +1224,17 @@ TEST_F(HMICommandsNotificationsTest,
const uint32_t kCmdId = 12u;
const uint32_t kMaxCmdId = 10u;
- (*message_)[strings::msg_params][strings::cmd_id] = kCmdId;
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::cmd_id] = kCmdId;
utils::SharedPtr<Command> command =
- CreateCommand<OnVRCommandNotification>(message_);
+ CreateCommand<OnVRCommandNotification>(message);
am::ApplicationSharedPtr invalid_app;
- EXPECT_CALL(mock_app_manager_, application(_))
- .WillRepeatedly(Return(invalid_app));
- EXPECT_CALL(mock_app_manager_, state_controller()).Times(0);
- EXPECT_CALL(mock_app_manager_, get_settings())
- .WillOnce(ReturnRef(mock_app_manager_settings_));
- EXPECT_CALL(mock_app_manager_settings_, max_cmd_id())
- .WillOnce(ReturnRef(kMaxCmdId));
+ EXPECT_CALL(app_mngr_, application(_)).WillRepeatedly(Return(invalid_app));
+ EXPECT_CALL(app_mngr_, state_controller()).Times(0);
+ EXPECT_CALL(app_mngr_, get_settings())
+ .WillOnce(ReturnRef(app_mngr_settings_));
+ EXPECT_CALL(app_mngr_settings_, max_cmd_id()).WillOnce(ReturnRef(kMaxCmdId));
command->Run();
}
@@ -1156,15 +1243,15 @@ TEST_F(HMICommandsNotificationsTest,
const uint32_t kCmdId = 11u;
const uint32_t kMaxCmdId = 10u;
- (*message_)[strings::msg_params][strings::cmd_id] = kCmdId;
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::cmd_id] = kCmdId;
utils::SharedPtr<Command> command =
- CreateCommand<OnVRCommandNotification>(message_);
+ CreateCommand<OnVRCommandNotification>(message);
- EXPECT_CALL(mock_app_manager_, application(_)).Times(0);
- EXPECT_CALL(mock_app_manager_settings_, max_cmd_id())
- .WillOnce(ReturnRef(kMaxCmdId));
- EXPECT_CALL(mock_app_manager_, get_settings())
- .WillOnce(ReturnRef(mock_app_manager_settings_));
+ EXPECT_CALL(app_mngr_, application(_)).Times(0);
+ EXPECT_CALL(app_mngr_settings_, max_cmd_id()).WillOnce(ReturnRef(kMaxCmdId));
+ EXPECT_CALL(app_mngr_, get_settings())
+ .WillOnce(ReturnRef(app_mngr_settings_));
command->Run();
}
@@ -1173,20 +1260,18 @@ TEST_F(HMICommandsNotificationsTest,
const uint32_t kCmdId = 8u;
const uint32_t kMaxCmdId = 10u;
- (*message_)[strings::msg_params][strings::cmd_id] = kCmdId;
- (*message_)[strings::msg_params][strings::grammar_id] = 0;
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::cmd_id] = kCmdId;
utils::SharedPtr<Command> command =
- CreateCommand<OnVRCommandNotification>(message_);
-
- EXPECT_CALL(mock_app_manager_, get_settings())
- .WillOnce(ReturnRef(mock_app_manager_settings_));
- EXPECT_CALL(mock_app_manager_settings_, max_cmd_id())
- .WillOnce(ReturnRef(kMaxCmdId));
+ CreateCommand<OnVRCommandNotification>(message);
- EXPECT_CALL(mock_app_manager_, applications())
- .WillOnce(Return(applications_));
-
- EXPECT_CALL(mock_app_manager_, ManageMobileCommand(_, _)).Times(0);
+ am::ApplicationSharedPtr invalid_app;
+ EXPECT_CALL(app_mngr_, application(_)).WillOnce(Return(invalid_app));
+ EXPECT_CALL(app_mngr_settings_, max_cmd_id()).WillOnce(ReturnRef(kMaxCmdId));
+ EXPECT_CALL(app_mngr_, get_settings())
+ .WillOnce(ReturnRef(app_mngr_settings_));
+ EXPECT_CALL(app_mngr_, event_dispatcher()).Times(0);
+ EXPECT_CALL(app_mngr_, ManageMobileCommand(_, _)).Times(0);
command->Run();
}
@@ -1196,24 +1281,21 @@ TEST_F(HMICommandsNotificationsTest,
const uint32_t kMaxCmdId = 10u;
const uint32_t kIsPerformInteractionActive = 1u;
int32_t event_id = hmi_apis::FunctionID::INVALID_ENUM;
-
- (*message_)[strings::msg_params][strings::cmd_id] = kCmdId;
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::cmd_id] = kCmdId;
utils::SharedPtr<Command> command =
- CreateCommand<OnVRCommandNotification>(message_);
-
- application_set_.insert(mock_app_);
- EXPECT_CALL(mock_app_manager_, applications())
- .WillOnce(Return(applications_));
- EXPECT_CALL(mock_app_manager_settings_, max_cmd_id())
- .WillOnce(ReturnRef(kMaxCmdId));
- EXPECT_CALL(mock_app_manager_, get_settings())
- .WillOnce(ReturnRef(mock_app_manager_settings_));
- EXPECT_CALL(*mock_app_, is_perform_interaction_active())
+ CreateCommand<OnVRCommandNotification>(message);
+
+ EXPECT_CALL(app_mngr_, application(_)).WillOnce(Return(app_));
+ EXPECT_CALL(app_mngr_settings_, max_cmd_id()).WillOnce(ReturnRef(kMaxCmdId));
+ EXPECT_CALL(app_mngr_, get_settings())
+ .WillOnce(ReturnRef(app_mngr_settings_));
+ EXPECT_CALL(*app_ptr_, is_perform_interaction_active())
.WillOnce(Return(kIsPerformInteractionActive));
- EXPECT_CALL(mock_app_manager_, event_dispatcher());
+ EXPECT_CALL(app_mngr_, event_dispatcher());
EXPECT_CALL(mock_event_dispatcher_, raise_event(_))
.WillOnce(GetEventId(&event_id));
- EXPECT_CALL(mock_app_manager_, ManageMobileCommand(_, _)).Times(0);
+ EXPECT_CALL(app_mngr_, ManageMobileCommand(_, _)).Times(0);
command->Run();
EXPECT_EQ(hmi_apis::FunctionID::VR_OnCommand, event_id);
}
@@ -1223,177 +1305,179 @@ TEST_F(HMICommandsNotificationsTest,
const uint32_t kCmdId = 8u;
const uint32_t kMaxCmdId = 10u;
const uint32_t kIsPerformInteractionActive = 0u;
-
- (*message_)[strings::msg_params][strings::cmd_id] = kCmdId;
- (*message_)[strings::msg_params][strings::function_id] =
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::cmd_id] = kCmdId;
+ (*message)[am::strings::msg_params][am::strings::function_id] =
mobile_apis::FunctionID::eType::OnCommandID;
utils::SharedPtr<Command> command =
- CreateCommand<OnVRCommandNotification>(message_);
-
- application_set_.insert(mock_app_);
- EXPECT_CALL(mock_app_manager_, applications())
- .WillOnce(Return(applications_));
- EXPECT_CALL(mock_app_manager_settings_, max_cmd_id())
- .WillOnce(ReturnRef(kMaxCmdId));
- EXPECT_CALL(mock_app_manager_, get_settings())
- .WillOnce(ReturnRef(mock_app_manager_settings_));
- EXPECT_CALL(*mock_app_, is_perform_interaction_active())
+ CreateCommand<OnVRCommandNotification>(message);
+
+ EXPECT_CALL(app_mngr_, application(_)).WillOnce(Return(app_));
+ EXPECT_CALL(app_mngr_settings_, max_cmd_id()).WillOnce(ReturnRef(kMaxCmdId));
+ EXPECT_CALL(app_mngr_, get_settings())
+ .WillOnce(ReturnRef(app_mngr_settings_));
+ EXPECT_CALL(*app_ptr_, is_perform_interaction_active())
.WillOnce(Return(kIsPerformInteractionActive));
- EXPECT_CALL(mock_app_manager_, event_dispatcher()).Times(0);
- EXPECT_CALL(mock_app_manager_,
+ EXPECT_CALL(app_mngr_, event_dispatcher()).Times(0);
+ EXPECT_CALL(app_mngr_,
ManageMobileCommand(_, Command::CommandOrigin::ORIGIN_SDL));
command->Run();
EXPECT_EQ(static_cast<int32_t>(mobile_apis::FunctionID::eType::OnCommandID),
- (*message_)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(static_cast<int32_t>(mobile_apis::TriggerSource::TS_VR),
- (*message_)[strings::msg_params][strings::trigger_source].asInt());
+ (*message)[am::strings::params][am::strings::function_id].asInt());
+ EXPECT_EQ(
+ static_cast<int32_t>(mobile_apis::TriggerSource::TS_VR),
+ (*message)[am::strings::msg_params][am::strings::trigger_source].asInt());
EXPECT_EQ(static_cast<int32_t>(am::MessageType::kNotification),
- (*message_)[strings::params][strings::message_type].asInt());
+ (*message)[am::strings::params][am::strings::message_type].asInt());
}
TEST_F(HMICommandsNotificationsTest, OnVRLanguageChangeNotificationEmptyData) {
const mobile_apis::Language::eType& kLang = mobile_apis::Language::EN_GB;
-
- (*message_)[strings::msg_params][strings::language] = kLang;
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::language] = kLang;
utils::SharedPtr<Command> command =
- CreateCommand<OnVRLanguageChangeNotification>(message_);
+ CreateCommand<OnVRLanguageChangeNotification>(message);
EXPECT_CALL(mock_hmi_capabilities_, active_ui_language())
.WillOnce(Return(hmi_apis::Common_Language::EN_AU));
EXPECT_CALL(mock_hmi_capabilities_, set_active_vr_language(_));
- EXPECT_CALL(mock_app_manager_, hmi_capabilities())
+ EXPECT_CALL(app_mngr_, hmi_capabilities())
.WillOnce(ReturnRef(mock_hmi_capabilities_));
- EXPECT_CALL(mock_app_manager_, applications())
- .WillOnce(Return(applications_));
- EXPECT_CALL(mock_app_manager_, ManageMobileCommand(_, _)).Times(0);
- EXPECT_CALL(*mock_app_, app_id()).Times(0);
- EXPECT_CALL(*mock_app_, language()).Times(0);
+ EXPECT_CALL(app_mngr_, applications()).WillOnce(Return(applications_));
+ EXPECT_CALL(app_mngr_, ManageMobileCommand(_, _)).Times(0);
+ EXPECT_CALL(*app_ptr_, app_id()).Times(0);
+ EXPECT_CALL(*app_ptr_, language()).Times(0);
command->Run();
}
TEST_F(HMICommandsNotificationsTest,
OnVRLanguageChangeNotificationAppLangEqualMessageLang) {
const mobile_apis::Language::eType& kLang = mobile_apis::Language::EN_GB;
-
- (*message_)[strings::msg_params][strings::language] = kLang;
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::language] = kLang;
utils::SharedPtr<Command> command =
- CreateCommand<OnVRLanguageChangeNotification>(message_);
+ CreateCommand<OnVRLanguageChangeNotification>(message);
- application_set_.insert(mock_app_);
- EXPECT_CALL(mock_app_manager_, applications())
- .WillOnce(Return(applications_));
+ application_set_.insert(app_);
+ EXPECT_CALL(app_mngr_, applications()).WillOnce(Return(applications_));
EXPECT_CALL(mock_hmi_capabilities_, active_ui_language())
.WillOnce(Return(hmi_apis::Common_Language::EN_AU));
EXPECT_CALL(mock_hmi_capabilities_, set_active_vr_language(_));
- EXPECT_CALL(mock_app_manager_, hmi_capabilities())
+ EXPECT_CALL(app_mngr_, hmi_capabilities())
.WillOnce(ReturnRef(mock_hmi_capabilities_));
- EXPECT_CALL(mock_app_manager_,
+ EXPECT_CALL(app_mngr_,
ManageMobileCommand(_, Command::CommandOrigin::ORIGIN_SDL));
- ON_CALL(*mock_app_, app_id()).WillByDefault(Return(kAppId));
- ON_CALL(*mock_app_, language()).WillByDefault(ReturnRef(kLang));
+ EXPECT_CALL(*app_ptr_, app_id()).WillOnce(Return(kAppId_));
+ EXPECT_CALL(*app_ptr_, language()).WillRepeatedly(ReturnRef(kLang));
command->Run();
EXPECT_EQ(static_cast<int32_t>(mobile_apis::FunctionID::OnLanguageChangeID),
- (*message_)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(kAppId,
- (*message_)[strings::params][strings::connection_key].asUInt());
+ (*message)[am::strings::params][am::strings::function_id].asInt());
+ EXPECT_EQ(
+ static_cast<int32_t>(kAppId_),
+ (*message)[am::strings::params][am::strings::connection_key].asInt());
EXPECT_EQ(static_cast<int32_t>(am::MessageType::kNotification),
- (*message_)[strings::params][strings::message_type].asInt());
+ (*message)[am::strings::params][am::strings::message_type].asInt());
EXPECT_EQ(
static_cast<int32_t>(hmi_apis::Common_Language::EN_AU),
- (*message_)[strings::msg_params][strings::hmi_display_language].asInt());
+ (*message)[am::strings::msg_params][am::strings::hmi_display_language]
+ .asInt());
}
TEST_F(HMICommandsNotificationsTest,
OnVRLanguageChangeNotificationAppLangNotEqualMessageLang) {
const mobile_apis::Language::eType& kLang = mobile_apis::Language::EN_GB;
-
- (*message_)[strings::msg_params][strings::language] =
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::language] =
mobile_apis::Language::EN_US;
utils::SharedPtr<Command> command =
- CreateCommand<OnVRLanguageChangeNotification>(message_);
+ CreateCommand<OnVRLanguageChangeNotification>(message);
- application_set_.insert(mock_app_);
+ application_set_.insert(app_);
smart_objects::SmartObjectSPtr notification =
utils::MakeShared<smart_objects::SmartObject>();
- (*notification)[strings::params][strings::function_id] =
- mobile_apis::FunctionID::OnLanguageChangeID;
- (*notification)[strings::params][strings::message_type] =
- am::MessageType::kNotification;
- (*notification)[strings::params][strings::connection_key] = kAppId;
- (*notification)[strings::msg_params][strings::reason] =
- mobile_apis::AppInterfaceUnregisteredReason::LANGUAGE_CHANGE;
-
- EXPECT_CALL(mock_app_manager_, applications())
- .WillOnce(Return(applications_));
+ (*notification)[am::strings::params][am::strings::function_id] =
+ static_cast<int32_t>(mobile_apis::FunctionID::OnLanguageChangeID);
+ (*notification)[am::strings::params][am::strings::message_type] =
+ static_cast<int32_t>(am::MessageType::kNotification);
+ (*notification)[am::strings::params][am::strings::connection_key] = kAppId_;
+ (*notification)[am::strings::msg_params][am::strings::reason] =
+ static_cast<int32_t>(
+ mobile_apis::AppInterfaceUnregisteredReason::LANGUAGE_CHANGE);
+
+ EXPECT_CALL(app_mngr_, applications()).WillOnce(Return(applications_));
EXPECT_CALL(mock_hmi_capabilities_, active_ui_language())
.WillOnce(Return(hmi_apis::Common_Language::EN_AU));
EXPECT_CALL(mock_hmi_capabilities_, set_active_vr_language(_));
- EXPECT_CALL(mock_app_manager_, hmi_capabilities())
+ EXPECT_CALL(app_mngr_, hmi_capabilities())
.WillOnce(ReturnRef(mock_hmi_capabilities_));
- EXPECT_CALL(mock_app_manager_,
+ EXPECT_CALL(app_mngr_,
ManageMobileCommand(_, Command::CommandOrigin::ORIGIN_SDL));
- EXPECT_CALL(*mock_app_, app_id()).WillRepeatedly(Return(kAppId));
- EXPECT_CALL(*mock_app_, language()).WillRepeatedly(ReturnRef(kLang));
- EXPECT_CALL(mock_app_manager_, state_controller())
+ EXPECT_CALL(*app_ptr_, app_id()).WillRepeatedly(Return(kAppId_));
+ EXPECT_CALL(*app_ptr_, language()).WillRepeatedly(ReturnRef(kLang));
+ EXPECT_CALL(app_mngr_, state_controller())
.WillOnce(ReturnRef(mock_state_controller_));
EXPECT_CALL(mock_state_controller_,
- SetRegularState(static_cast<am::ApplicationSharedPtr>(mock_app_),
- mobile_apis::HMILevel::HMI_NONE,
- false));
- EXPECT_CALL(
- *message_helper_mock_,
- GetOnAppInterfaceUnregisteredNotificationToMobile(
- kAppId, mobile_apis::AppInterfaceUnregisteredReason::LANGUAGE_CHANGE))
+ SetRegularState(app_, mobile_apis::HMILevel::HMI_NONE, false));
+ EXPECT_CALL(*message_helper_mock_,
+ GetOnAppInterfaceUnregisteredNotificationToMobile(
+ kAppId_,
+ mobile_apis::AppInterfaceUnregisteredReason::LANGUAGE_CHANGE))
.WillOnce(Return(notification));
- EXPECT_CALL(mock_app_manager_,
+ EXPECT_CALL(app_mngr_,
ManageMobileCommand(notification, Command::ORIGIN_SDL));
- EXPECT_CALL(mock_app_manager_,
+ EXPECT_CALL(app_mngr_,
UnregisterApplication(
- kAppId, mobile_apis::Result::SUCCESS, false, false));
+ kAppId_, mobile_apis::Result::SUCCESS, false, false));
command->Run();
EXPECT_EQ(static_cast<int32_t>(mobile_apis::FunctionID::OnLanguageChangeID),
- (*message_)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(kAppId,
- (*message_)[strings::params][strings::connection_key].asUInt());
+ (*message)[am::strings::params][am::strings::function_id].asInt());
+ EXPECT_EQ(
+ static_cast<int32_t>(kAppId_),
+ (*message)[am::strings::params][am::strings::connection_key].asInt());
EXPECT_EQ(static_cast<int32_t>(am::MessageType::kNotification),
- (*message_)[strings::params][strings::message_type].asInt());
+ (*message)[am::strings::params][am::strings::message_type].asInt());
EXPECT_EQ(
static_cast<int32_t>(hmi_apis::Common_Language::EN_AU),
- (*message_)[strings::msg_params][strings::hmi_display_language].asInt());
+ (*message)[am::strings::msg_params][am::strings::hmi_display_language]
+ .asInt());
}
TEST_F(HMICommandsNotificationsTest, OnStartDeviceDiscoveryRun) {
+ MessageSharedPtr message = CreateMessage();
utils::SharedPtr<Command> command =
- CreateCommand<OnStartDeviceDiscovery>(message_);
- EXPECT_CALL(mock_app_manager_, StartDevicesDiscovery());
+ CreateCommand<OnStartDeviceDiscovery>(message);
+ EXPECT_CALL(app_mngr_, StartDevicesDiscovery());
command->Run();
}
TEST_F(HMICommandsNotificationsTest,
OnDeviceChosenNotificationDeviceInfoExists) {
- (*message_)[strings::msg_params][strings::device_info][strings::id] = "2014";
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::device_info]
+ [am::strings::id] = "2014";
utils::SharedPtr<Command> command =
- CreateCommand<OnDeviceChosenNotification>(message_);
- EXPECT_CALL(
- mock_app_manager_,
- ConnectToDevice(
- (*message_)[strings::msg_params][strings::device_info][strings::id]
- .asString()));
+ CreateCommand<OnDeviceChosenNotification>(message);
+ EXPECT_CALL(app_mngr_,
+ ConnectToDevice(
+ (*message)[am::strings::msg_params][am::strings::device_info]
+ [am::strings::id].asString()));
command->Run();
}
TEST_F(HMICommandsNotificationsTest,
OnDeviceChosenNotificationDeviceInfoNotExists) {
+ MessageSharedPtr message = CreateMessage();
utils::SharedPtr<Command> command =
- CreateCommand<OnDeviceChosenNotification>(message_);
- EXPECT_CALL(mock_app_manager_, ConnectToDevice(_)).Times(0);
+ CreateCommand<OnDeviceChosenNotification>(message);
+ EXPECT_CALL(app_mngr_, ConnectToDevice(_)).Times(0);
command->Run();
}
TEST_F(HMICommandsNotificationsTest,
OnSystemContextNotificationValidActiveApplication) {
+ MessageSharedPtr message = CreateMessage();
std::vector<am::mobile_api::SystemContext::eType> system_context_list;
system_context_list.push_back(
am::mobile_api::SystemContext::SYSCTXT_VRSESSION);
@@ -1404,49 +1488,48 @@ TEST_F(HMICommandsNotificationsTest,
std::vector<am::mobile_api::SystemContext::eType>::iterator it =
system_context_list.begin();
for (; it != system_context_list.end(); ++it) {
- (*message_)[strings::msg_params][am::hmi_notification::system_context] =
+ (*message)[am::strings::msg_params][am::hmi_notification::system_context] =
*it;
utils::SharedPtr<Command> command =
- CreateCommand<OnSystemContextNotification>(message_);
- EXPECT_CALL(mock_app_manager_, active_application())
- .WillOnce(Return(mock_app_));
- EXPECT_CALL(mock_app_manager_, state_controller())
+ CreateCommand<OnSystemContextNotification>(message);
+ EXPECT_CALL(app_mngr_, active_application()).WillOnce(Return(app_));
+ EXPECT_CALL(app_mngr_, state_controller())
.WillOnce(ReturnRef(mock_state_controller_));
- EXPECT_CALL(
- mock_state_controller_,
- SetRegularState(static_cast<am::ApplicationSharedPtr>(mock_app_), *it));
+ EXPECT_CALL(mock_state_controller_, SetRegularState(app_, *it));
command->Run();
}
}
TEST_F(HMICommandsNotificationsTest,
OnSystemContextNotificationInvalidActiveApplication) {
- (*message_)[strings::msg_params][am::hmi_notification::system_context] =
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::hmi_notification::system_context] =
am::mobile_api::SystemContext::SYSCTXT_VRSESSION;
utils::SharedPtr<Command> command =
- CreateCommand<OnSystemContextNotification>(message_);
+ CreateCommand<OnSystemContextNotification>(message);
ApplicationSharedPtr invalid_app;
- EXPECT_CALL(mock_app_manager_, active_application())
- .WillOnce(Return(invalid_app));
- EXPECT_CALL(mock_app_manager_, state_controller()).Times(0);
+ EXPECT_CALL(app_mngr_, active_application()).WillOnce(Return(invalid_app));
+ EXPECT_CALL(app_mngr_, state_controller()).Times(0);
command->Run();
}
TEST_F(HMICommandsNotificationsTest,
OnSystemContextNotificationInvalidSystemContext) {
- (*message_)[strings::msg_params][am::hmi_notification::system_context] =
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::hmi_notification::system_context] =
am::mobile_api::SystemContext::INVALID_ENUM;
utils::SharedPtr<Command> command =
- CreateCommand<OnSystemContextNotification>(message_);
- EXPECT_CALL(mock_app_manager_, active_application()).Times(0);
- EXPECT_CALL(mock_app_manager_, application(_)).Times(0);
- EXPECT_CALL(mock_app_manager_, state_controller()).Times(0);
+ CreateCommand<OnSystemContextNotification>(message);
+ EXPECT_CALL(app_mngr_, active_application()).Times(0);
+ EXPECT_CALL(app_mngr_, application(_)).Times(0);
+ EXPECT_CALL(app_mngr_, state_controller()).Times(0);
command->Run();
}
TEST_F(HMICommandsNotificationsTest,
OnSystemContextNotificationValidApplication) {
- (*message_)[strings::msg_params][strings::app_id] = kAppId;
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::app_id] = kAppId_;
std::vector<am::mobile_api::SystemContext::eType> system_context_list;
system_context_list.push_back(am::mobile_api::SystemContext::SYSCTXT_ALERT);
system_context_list.push_back(am::mobile_api::SystemContext::SYSCTXT_MAIN);
@@ -1454,489 +1537,402 @@ TEST_F(HMICommandsNotificationsTest,
std::vector<am::mobile_api::SystemContext::eType>::iterator it =
system_context_list.begin();
for (; it != system_context_list.end(); ++it) {
- (*message_)[strings::msg_params][am::hmi_notification::system_context] =
+ (*message)[am::strings::msg_params][am::hmi_notification::system_context] =
*it;
utils::SharedPtr<Command> command =
- CreateCommand<OnSystemContextNotification>(message_);
- EXPECT_CALL(mock_app_manager_, application(_)).WillOnce(Return(mock_app_));
- EXPECT_CALL(mock_app_manager_, state_controller())
+ CreateCommand<OnSystemContextNotification>(message);
+ EXPECT_CALL(app_mngr_, application(_)).WillOnce(Return(app_));
+ EXPECT_CALL(app_mngr_, state_controller())
.WillOnce(ReturnRef(mock_state_controller_));
- EXPECT_CALL(
- mock_state_controller_,
- SetRegularState(static_cast<am::ApplicationSharedPtr>(mock_app_), *it));
+ EXPECT_CALL(mock_state_controller_, SetRegularState(app_, *it));
command->Run();
}
}
TEST_F(HMICommandsNotificationsTest,
OnSystemContextNotificationAppIdDoesntExists) {
- (*message_)[strings::msg_params][am::hmi_notification::system_context] =
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::hmi_notification::system_context] =
am::mobile_api::SystemContext::SYSCTXT_ALERT;
utils::SharedPtr<Command> command =
- CreateCommand<OnSystemContextNotification>(message_);
- EXPECT_CALL(mock_app_manager_, application(_)).Times(0);
- EXPECT_CALL(mock_app_manager_, state_controller()).Times(0);
+ CreateCommand<OnSystemContextNotification>(message);
+ EXPECT_CALL(app_mngr_, application(_)).Times(0);
+ EXPECT_CALL(app_mngr_, state_controller()).Times(0);
command->Run();
}
TEST_F(HMICommandsNotificationsTest,
OnSystemRequestNotificationAppIdExistsAndValidApp) {
- (*message_)[strings::msg_params][strings::app_id] = kAppId;
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::app_id] = kAppId_;
utils::SharedPtr<Command> command =
- CreateCommand<OnSystemRequestNotification>(message_);
+ CreateCommand<OnSystemRequestNotification>(message);
- EXPECT_CALL(mock_app_manager_, application(kAppId))
- .WillOnce(Return(mock_app_));
- ON_CALL(*mock_app_, app_id()).WillByDefault(Return(kAppId));
- EXPECT_CALL(mock_app_manager_,
+ EXPECT_CALL(app_mngr_, application(kAppId_)).WillOnce(Return(app_));
+ ON_CALL(app_mngr_, connection_handler())
+ .WillByDefault(ReturnRef(mock_connection_handler_));
+ ON_CALL(mock_connection_handler_, get_session_observer())
+ .WillByDefault(ReturnRef(mock_session_observer_));
+ const int32_t device_id = 1;
+ ON_CALL(mock_session_observer_, GetDataOnDeviceID(_, NULL, NULL, _, NULL))
+ .WillByDefault(Return(device_id));
+
+ EXPECT_CALL(policy_interface_, GetUserConsentForDevice(_))
+ .WillOnce(Return(policy::kDeviceAllowed));
+
+ EXPECT_CALL(app_mngr_,
ManageMobileCommand(_, Command::CommandOrigin::ORIGIN_SDL));
command->Run();
EXPECT_EQ(static_cast<int32_t>(am::MessageType::kNotification),
- (*message_)[strings::params][strings::message_type].asInt());
+ (*message)[am::strings::params][am::strings::message_type].asInt());
EXPECT_EQ(
static_cast<int32_t>(mobile_apis::FunctionID::eType::OnSystemRequestID),
- (*message_)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(kAppId,
- (*message_)[strings::params][strings::connection_key].asUInt());
+ (*message)[am::strings::params][am::strings::function_id].asInt());
+ EXPECT_EQ(
+ static_cast<int32_t>(kAppId_),
+ (*message)[am::strings::params][am::strings::connection_key].asInt());
}
TEST_F(HMICommandsNotificationsTest,
OnSystemRequestNotificationAppIdExistsAndInvalidApp) {
- (*message_)[strings::msg_params][strings::app_id] = kAppId;
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::app_id] = kAppId_;
utils::SharedPtr<Command> command =
- CreateCommand<OnSystemRequestNotification>(message_);
+ CreateCommand<OnSystemRequestNotification>(message);
ApplicationSharedPtr invalid_app;
- EXPECT_CALL(mock_app_manager_, application(kAppId))
- .WillOnce(Return(invalid_app));
- EXPECT_CALL(*mock_app_, app_id()).Times(0);
- EXPECT_CALL(mock_app_manager_, ManageMobileCommand(_, _)).Times(0);
+ EXPECT_CALL(app_mngr_, application(kAppId_)).WillOnce(Return(invalid_app));
+ EXPECT_CALL(*app_ptr_, app_id()).Times(0);
+ EXPECT_CALL(app_mngr_, ManageMobileCommand(_, _)).Times(0);
command->Run();
EXPECT_EQ(
static_cast<int32_t>(mobile_apis::FunctionID::eType::OnSystemRequestID),
- (*message_)[strings::params][strings::function_id].asInt());
+ (*message)[am::strings::params][am::strings::function_id].asInt());
}
TEST_F(HMICommandsNotificationsTest,
OnSystemRequestNotificationAppIdDoesntExistsAndValidApp) {
+ MessageSharedPtr message = CreateMessage();
utils::SharedPtr<Command> command =
- CreateCommand<OnSystemRequestNotification>(message_);
- EXPECT_CALL(mock_policy_handler_, GetAppIdForSending())
- .WillOnce(Return(kAppId));
- EXPECT_CALL(mock_app_manager_, application(_)).WillOnce(Return(mock_app_));
- EXPECT_CALL(mock_app_manager_,
+ CreateCommand<OnSystemRequestNotification>(message);
+ ON_CALL(app_mngr_, GetPolicyHandler())
+ .WillByDefault(ReturnRef(policy_interface_));
+ EXPECT_CALL(policy_interface_, GetAppIdForSending())
+ .WillOnce(Return(kAppId_));
+ EXPECT_CALL(app_mngr_, application(_)).WillOnce(Return(app_));
+ ON_CALL(app_mngr_, connection_handler())
+ .WillByDefault(ReturnRef(mock_connection_handler_));
+ ON_CALL(mock_connection_handler_, get_session_observer())
+ .WillByDefault(ReturnRef(mock_session_observer_));
+ const int32_t device_id = 1;
+ ON_CALL(mock_session_observer_, GetDataOnDeviceID(_, NULL, NULL, _, NULL))
+ .WillByDefault(Return(device_id));
+
+ EXPECT_CALL(policy_interface_, GetUserConsentForDevice(_))
+ .WillOnce(Return(policy::kDeviceAllowed));
+ EXPECT_CALL(app_mngr_,
ManageMobileCommand(_, Command::CommandOrigin::ORIGIN_SDL));
command->Run();
EXPECT_EQ(static_cast<int32_t>(am::MessageType::kNotification),
- (*message_)[strings::params][strings::message_type].asInt());
+ (*message)[am::strings::params][am::strings::message_type].asInt());
EXPECT_EQ(
static_cast<int32_t>(mobile_apis::FunctionID::eType::OnSystemRequestID),
- (*message_)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(kAppId,
- (*message_)[strings::params][strings::connection_key].asUInt());
+ (*message)[am::strings::params][am::strings::function_id].asInt());
+ EXPECT_EQ(
+ static_cast<int32_t>(kAppId_),
+ (*message)[am::strings::params][am::strings::connection_key].asInt());
}
TEST_F(HMICommandsNotificationsTest,
OnSystemRequestNotificationAppIdDoesntExistsAndNullAppId) {
const uint32_t kNullApppId = 0u;
-
+ MessageSharedPtr message = CreateMessage();
utils::SharedPtr<Command> command =
- CreateCommand<OnSystemRequestNotification>(message_);
- EXPECT_CALL(mock_policy_handler_, GetAppIdForSending())
+ CreateCommand<OnSystemRequestNotification>(message);
+ EXPECT_CALL(app_mngr_, GetPolicyHandler());
+ EXPECT_CALL(policy_interface_, GetAppIdForSending())
.WillOnce(Return(kNullApppId));
- EXPECT_CALL(mock_app_manager_, application(_)).Times(0);
- EXPECT_CALL(mock_app_manager_, ManageMobileCommand(_, _)).Times(0);
+ EXPECT_CALL(app_mngr_, application(_)).Times(0);
+ EXPECT_CALL(app_mngr_, ManageMobileCommand(_, _)).Times(0);
command->Run();
}
TEST_F(HMICommandsNotificationsTest, OnTTSLanguageChangeNotificationEmptyData) {
const mobile_apis::Language::eType& kLang = mobile_apis::Language::EN_GB;
-
- (*message_)[strings::msg_params][strings::language] = kLang;
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::language] = kLang;
utils::SharedPtr<Command> command =
- CreateCommand<OnTTSLanguageChangeNotification>(message_);
+ CreateCommand<OnTTSLanguageChangeNotification>(message);
EXPECT_CALL(mock_hmi_capabilities_, set_active_tts_language(_));
EXPECT_CALL(mock_hmi_capabilities_, set_active_vr_language(_));
EXPECT_CALL(mock_hmi_capabilities_, active_ui_language())
.WillOnce(Return(hmi_apis::Common_Language::EN_AU));
- EXPECT_CALL(mock_app_manager_, hmi_capabilities())
+ EXPECT_CALL(app_mngr_, hmi_capabilities())
.WillOnce(ReturnRef(mock_hmi_capabilities_));
- EXPECT_CALL(mock_app_manager_, applications())
- .WillOnce(Return(applications_));
- EXPECT_CALL(mock_app_manager_, ManageMobileCommand(_, _)).Times(0);
- EXPECT_CALL(*mock_app_, app_id()).Times(0);
- EXPECT_CALL(*mock_app_, language()).Times(0);
+ EXPECT_CALL(app_mngr_, applications()).WillOnce(Return(applications_));
+ EXPECT_CALL(app_mngr_, ManageMobileCommand(_, _)).Times(0);
+ EXPECT_CALL(*app_ptr_, app_id()).Times(0);
+ EXPECT_CALL(*app_ptr_, language()).Times(0);
command->Run();
}
TEST_F(HMICommandsNotificationsTest,
OnTTSLanguageChangeNotificationAppLangEqualMessageLang) {
const mobile_apis::Language::eType& kLang = mobile_apis::Language::EN_GB;
-
- (*message_)[strings::msg_params][strings::language] = kLang;
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::language] = kLang;
utils::SharedPtr<Command> command =
- CreateCommand<OnTTSLanguageChangeNotification>(message_);
+ CreateCommand<OnTTSLanguageChangeNotification>(message);
- application_set_.insert(mock_app_);
- EXPECT_CALL(mock_app_manager_, applications())
- .WillOnce(Return(applications_));
+ application_set_.insert(app_);
+ EXPECT_CALL(app_mngr_, applications()).WillOnce(Return(applications_));
EXPECT_CALL(mock_hmi_capabilities_, active_ui_language())
.WillOnce(Return(hmi_apis::Common_Language::EN_AU));
EXPECT_CALL(mock_hmi_capabilities_, set_active_vr_language(_));
EXPECT_CALL(mock_hmi_capabilities_, set_active_tts_language(_));
- EXPECT_CALL(mock_app_manager_, hmi_capabilities())
+ EXPECT_CALL(app_mngr_, hmi_capabilities())
.WillOnce(ReturnRef(mock_hmi_capabilities_));
- EXPECT_CALL(mock_app_manager_,
+ EXPECT_CALL(app_mngr_,
ManageMobileCommand(_, Command::CommandOrigin::ORIGIN_SDL));
- ON_CALL(*mock_app_, app_id()).WillByDefault(Return(kAppId));
- ON_CALL(*mock_app_, language()).WillByDefault(ReturnRef(kLang));
+ EXPECT_CALL(*app_ptr_, app_id()).WillOnce(Return(kAppId_));
+ EXPECT_CALL(*app_ptr_, language()).WillRepeatedly(ReturnRef(kLang));
command->Run();
EXPECT_EQ(static_cast<int32_t>(mobile_apis::FunctionID::OnLanguageChangeID),
- (*message_)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(kAppId,
- (*message_)[strings::params][strings::connection_key].asUInt());
+ (*message)[am::strings::params][am::strings::function_id].asInt());
+ EXPECT_EQ(
+ static_cast<int32_t>(kAppId_),
+ (*message)[am::strings::params][am::strings::connection_key].asInt());
EXPECT_EQ(static_cast<int32_t>(am::MessageType::kNotification),
- (*message_)[strings::params][strings::message_type].asInt());
+ (*message)[am::strings::params][am::strings::message_type].asInt());
EXPECT_EQ(
static_cast<int32_t>(hmi_apis::Common_Language::EN_AU),
- (*message_)[strings::msg_params][strings::hmi_display_language].asInt());
+ (*message)[am::strings::msg_params][am::strings::hmi_display_language]
+ .asInt());
}
TEST_F(HMICommandsNotificationsTest,
OnTTSLanguageChangeNotificationAppLangNotEqualMessageLang) {
const mobile_apis::Language::eType& kLang = mobile_apis::Language::EN_GB;
-
- (*message_)[strings::msg_params][strings::language] =
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::language] =
mobile_apis::Language::EN_US;
utils::SharedPtr<Command> command =
- CreateCommand<OnTTSLanguageChangeNotification>(message_);
+ CreateCommand<OnTTSLanguageChangeNotification>(message);
- application_set_.insert(mock_app_);
+ application_set_.insert(app_);
smart_objects::SmartObjectSPtr notification =
utils::MakeShared<smart_objects::SmartObject>();
- (*notification)[strings::params][strings::function_id] =
- mobile_apis::FunctionID::OnLanguageChangeID;
- (*notification)[strings::params][strings::message_type] =
- am::MessageType::kNotification;
- (*notification)[strings::params][strings::connection_key] = kAppId;
- (*notification)[strings::msg_params][strings::reason] =
- mobile_apis::AppInterfaceUnregisteredReason::LANGUAGE_CHANGE;
-
- EXPECT_CALL(mock_app_manager_, applications())
- .WillOnce(Return(applications_));
+ (*notification)[am::strings::params][am::strings::function_id] =
+ static_cast<int32_t>(mobile_apis::FunctionID::OnLanguageChangeID);
+ (*notification)[am::strings::params][am::strings::message_type] =
+ static_cast<int32_t>(am::MessageType::kNotification);
+ (*notification)[am::strings::params][am::strings::connection_key] = kAppId_;
+ (*notification)[am::strings::msg_params][am::strings::reason] =
+ static_cast<int32_t>(
+ mobile_apis::AppInterfaceUnregisteredReason::LANGUAGE_CHANGE);
+
+ EXPECT_CALL(app_mngr_, applications()).WillOnce(Return(applications_));
EXPECT_CALL(mock_hmi_capabilities_, active_ui_language())
.WillOnce(Return(hmi_apis::Common_Language::EN_AU));
EXPECT_CALL(mock_hmi_capabilities_, set_active_vr_language(_));
EXPECT_CALL(mock_hmi_capabilities_, set_active_tts_language(_));
- EXPECT_CALL(mock_app_manager_, hmi_capabilities())
+ EXPECT_CALL(app_mngr_, hmi_capabilities())
.WillOnce(ReturnRef(mock_hmi_capabilities_));
- EXPECT_CALL(mock_app_manager_,
+ EXPECT_CALL(app_mngr_,
ManageMobileCommand(_, Command::CommandOrigin::ORIGIN_SDL));
- EXPECT_CALL(*mock_app_, app_id()).WillRepeatedly(Return(kAppId));
- EXPECT_CALL(*mock_app_, language()).WillRepeatedly(ReturnRef(kLang));
- EXPECT_CALL(
- *message_helper_mock_,
- GetOnAppInterfaceUnregisteredNotificationToMobile(
- kAppId, mobile_apis::AppInterfaceUnregisteredReason::LANGUAGE_CHANGE))
+ EXPECT_CALL(*app_ptr_, app_id()).WillRepeatedly(Return(kAppId_));
+ EXPECT_CALL(*app_ptr_, language()).WillRepeatedly(ReturnRef(kLang));
+ EXPECT_CALL(*message_helper_mock_,
+ GetOnAppInterfaceUnregisteredNotificationToMobile(
+ kAppId_,
+ mobile_apis::AppInterfaceUnregisteredReason::LANGUAGE_CHANGE))
.WillOnce(Return(notification));
- EXPECT_CALL(mock_app_manager_,
+ EXPECT_CALL(app_mngr_,
ManageMobileCommand(notification, Command::ORIGIN_SDL));
- EXPECT_CALL(mock_app_manager_,
+ EXPECT_CALL(app_mngr_,
UnregisterApplication(
- kAppId, mobile_apis::Result::SUCCESS, false, false));
+ kAppId_, mobile_apis::Result::SUCCESS, false, false));
command->Run();
EXPECT_EQ(static_cast<int32_t>(mobile_apis::FunctionID::OnLanguageChangeID),
- (*message_)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(kAppId,
- (*message_)[strings::params][strings::connection_key].asUInt());
+ (*message)[am::strings::params][am::strings::function_id].asInt());
+ EXPECT_EQ(
+ static_cast<int32_t>(kAppId_),
+ (*message)[am::strings::params][am::strings::connection_key].asInt());
EXPECT_EQ(static_cast<int32_t>(am::MessageType::kNotification),
- (*message_)[strings::params][strings::message_type].asInt());
+ (*message)[am::strings::params][am::strings::message_type].asInt());
EXPECT_EQ(
static_cast<int32_t>(hmi_apis::Common_Language::EN_AU),
- (*message_)[strings::msg_params][strings::hmi_display_language].asInt());
+ (*message)[am::strings::msg_params][am::strings::hmi_display_language]
+ .asInt());
}
TEST_F(HMICommandsNotificationsTest, OnUILanguageChangeNotificationEmptyData) {
const mobile_apis::Language::eType& kLang = mobile_apis::Language::EN_GB;
-
- (*message_)[strings::msg_params][strings::language] = kLang;
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::language] = kLang;
utils::SharedPtr<Command> command =
- CreateCommand<OnUILanguageChangeNotification>(message_);
+ CreateCommand<OnUILanguageChangeNotification>(message);
EXPECT_CALL(mock_hmi_capabilities_, set_active_ui_language(_));
EXPECT_CALL(mock_hmi_capabilities_, active_vr_language())
.WillOnce(Return(hmi_apis::Common_Language::EN_AU));
- EXPECT_CALL(mock_app_manager_, hmi_capabilities())
+ EXPECT_CALL(app_mngr_, hmi_capabilities())
.WillOnce(ReturnRef(mock_hmi_capabilities_));
- EXPECT_CALL(mock_app_manager_, applications())
- .WillOnce(Return(applications_));
- EXPECT_CALL(mock_app_manager_, ManageMobileCommand(_, _)).Times(0);
- EXPECT_CALL(*mock_app_, app_id()).Times(0);
- EXPECT_CALL(*mock_app_, ui_language()).Times(0);
+ EXPECT_CALL(app_mngr_, applications()).WillOnce(Return(applications_));
+ EXPECT_CALL(app_mngr_, ManageMobileCommand(_, _)).Times(0);
+ EXPECT_CALL(*app_ptr_, app_id()).Times(0);
+ EXPECT_CALL(*app_ptr_, ui_language()).Times(0);
command->Run();
}
TEST_F(HMICommandsNotificationsTest,
OnUILanguageChangeNotificationAppLangEqualMessageLang) {
const mobile_apis::Language::eType& kLang = mobile_apis::Language::EN_GB;
- (*message_)[strings::msg_params][strings::language] = kLang;
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::language] = kLang;
utils::SharedPtr<Command> command =
- CreateCommand<OnUILanguageChangeNotification>(message_);
+ CreateCommand<OnUILanguageChangeNotification>(message);
- application_set_.insert(mock_app_);
- EXPECT_CALL(mock_app_manager_, applications())
- .WillOnce(Return(applications_));
+ application_set_.insert(app_);
+ EXPECT_CALL(app_mngr_, applications()).WillOnce(Return(applications_));
EXPECT_CALL(mock_hmi_capabilities_, active_vr_language())
.WillOnce(Return(hmi_apis::Common_Language::EN_AU));
EXPECT_CALL(mock_hmi_capabilities_, set_active_ui_language(_));
- EXPECT_CALL(mock_app_manager_, hmi_capabilities())
+ EXPECT_CALL(app_mngr_, hmi_capabilities())
.WillOnce(ReturnRef(mock_hmi_capabilities_));
- EXPECT_CALL(mock_app_manager_,
+ EXPECT_CALL(app_mngr_,
ManageMobileCommand(_, Command::CommandOrigin::ORIGIN_SDL));
- ON_CALL(*mock_app_, app_id()).WillByDefault(Return(kAppId));
- ON_CALL(*mock_app_, ui_language()).WillByDefault(ReturnRef(kLang));
+ EXPECT_CALL(*app_ptr_, app_id()).WillOnce(Return(kAppId_));
+ EXPECT_CALL(*app_ptr_, ui_language()).WillRepeatedly(ReturnRef(kLang));
command->Run();
EXPECT_EQ(static_cast<int32_t>(mobile_apis::FunctionID::OnLanguageChangeID),
- (*message_)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(kAppId,
- (*message_)[strings::params][strings::connection_key].asUInt());
+ (*message)[am::strings::params][am::strings::function_id].asInt());
+ EXPECT_EQ(
+ static_cast<int32_t>(kAppId_),
+ (*message)[am::strings::params][am::strings::connection_key].asInt());
EXPECT_EQ(static_cast<int32_t>(am::MessageType::kNotification),
- (*message_)[strings::params][strings::message_type].asInt());
+ (*message)[am::strings::params][am::strings::message_type].asInt());
EXPECT_EQ(
static_cast<int32_t>(kLang),
- (*message_)[strings::msg_params][strings::hmi_display_language].asInt());
+ (*message)[am::strings::msg_params][am::strings::hmi_display_language]
+ .asInt());
}
TEST_F(HMICommandsNotificationsTest,
OnUILanguageChangeNotificationAppLangNotEqualMessageLang) {
const mobile_apis::Language::eType& kLang = mobile_apis::Language::EN_GB;
-
- (*message_)[strings::msg_params][strings::language] =
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::strings::language] =
mobile_apis::Language::EN_US;
utils::SharedPtr<Command> command =
- CreateCommand<OnUILanguageChangeNotification>(message_);
+ CreateCommand<OnUILanguageChangeNotification>(message);
- application_set_.insert(mock_app_);
+ application_set_.insert(app_);
smart_objects::SmartObjectSPtr notification =
utils::MakeShared<smart_objects::SmartObject>();
- (*notification)[strings::params][strings::function_id] =
- mobile_apis::FunctionID::OnLanguageChangeID;
- (*notification)[strings::params][strings::message_type] =
- am::MessageType::kNotification;
- (*notification)[strings::params][strings::connection_key] = kAppId;
- (*notification)[strings::msg_params][strings::reason] =
- mobile_apis::AppInterfaceUnregisteredReason::LANGUAGE_CHANGE;
-
- EXPECT_CALL(mock_app_manager_, applications())
- .WillOnce(Return(applications_));
+ (*notification)[am::strings::params][am::strings::function_id] =
+ static_cast<int32_t>(mobile_apis::FunctionID::OnLanguageChangeID);
+ (*notification)[am::strings::params][am::strings::message_type] =
+ static_cast<int32_t>(am::MessageType::kNotification);
+ (*notification)[am::strings::params][am::strings::connection_key] = kAppId_;
+ (*notification)[am::strings::msg_params][am::strings::reason] =
+ static_cast<int32_t>(
+ mobile_apis::AppInterfaceUnregisteredReason::LANGUAGE_CHANGE);
+
+ EXPECT_CALL(app_mngr_, applications()).WillOnce(Return(applications_));
EXPECT_CALL(mock_hmi_capabilities_, active_vr_language())
.WillOnce(Return(hmi_apis::Common_Language::EN_AU));
EXPECT_CALL(mock_hmi_capabilities_, set_active_ui_language(_));
- EXPECT_CALL(mock_app_manager_, hmi_capabilities())
+ EXPECT_CALL(app_mngr_, hmi_capabilities())
.WillOnce(ReturnRef(mock_hmi_capabilities_));
- EXPECT_CALL(mock_app_manager_,
+ EXPECT_CALL(app_mngr_,
ManageMobileCommand(_, Command::CommandOrigin::ORIGIN_SDL));
- EXPECT_CALL(*mock_app_, app_id()).WillRepeatedly(Return(kAppId));
- EXPECT_CALL(*mock_app_, ui_language()).WillRepeatedly(ReturnRef(kLang));
- EXPECT_CALL(
- *message_helper_mock_,
- GetOnAppInterfaceUnregisteredNotificationToMobile(
- kAppId, mobile_apis::AppInterfaceUnregisteredReason::LANGUAGE_CHANGE))
+ EXPECT_CALL(*app_ptr_, app_id()).WillRepeatedly(Return(kAppId_));
+ EXPECT_CALL(*app_ptr_, ui_language()).WillRepeatedly(ReturnRef(kLang));
+ EXPECT_CALL(*message_helper_mock_,
+ GetOnAppInterfaceUnregisteredNotificationToMobile(
+ kAppId_,
+ mobile_apis::AppInterfaceUnregisteredReason::LANGUAGE_CHANGE))
.WillOnce(Return(notification));
- EXPECT_CALL(mock_app_manager_,
+ EXPECT_CALL(app_mngr_,
ManageMobileCommand(notification, Command::ORIGIN_SDL));
- EXPECT_CALL(mock_app_manager_,
+ EXPECT_CALL(app_mngr_,
UnregisterApplication(
- kAppId, mobile_apis::Result::SUCCESS, false, false));
+ kAppId_, mobile_apis::Result::SUCCESS, false, false));
command->Run();
EXPECT_EQ(static_cast<int32_t>(mobile_apis::FunctionID::OnLanguageChangeID),
- (*message_)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(kAppId,
- (*message_)[strings::params][strings::connection_key].asUInt());
+ (*message)[am::strings::params][am::strings::function_id].asInt());
+ EXPECT_EQ(
+ static_cast<int32_t>(kAppId_),
+ (*message)[am::strings::params][am::strings::connection_key].asInt());
EXPECT_EQ(static_cast<int32_t>(am::MessageType::kNotification),
- (*message_)[strings::params][strings::message_type].asInt());
+ (*message)[am::strings::params][am::strings::message_type].asInt());
EXPECT_EQ(
static_cast<int32_t>(mobile_apis::Language::EN_US),
- (*message_)[strings::msg_params][strings::hmi_display_language].asInt());
-}
-
-TEST_F(
- HMICommandsNotificationsTest,
- OnDeviceConnectionStatusNotification_DeviceKeyNotExist_IgnoreNotification) {
- utils::SharedPtr<Command> command =
- CreateCommand<hmi::OnDeviceConnectionStatusNotification>(message_);
-
- EXPECT_CALL(mock_app_manager_, GetDeviceConnectionType(_)).Times(0);
- EXPECT_CALL(mock_policy_handler_, OnDeviceConnectionStatus(_, _)).Times(0);
- command->Run();
+ (*message)[am::strings::msg_params][am::strings::hmi_display_language]
+ .asInt());
}
-TEST_F(
- HMICommandsNotificationsTest,
- OnDeviceConnectionStatusNotification_MandatoryParamsMissing_IgnoreNotification) {
- (*message_)[strings::msg_params][strings::device] = SmartObject();
+TEST_F(HMICommandsNotificationsTest, OnDriverDistractionNotificationEmptyData) {
+ const hmi_apis::Common_DriverDistractionState::eType state =
+ hmi_apis::Common_DriverDistractionState::DD_ON;
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::hmi_notification::state] = state;
utils::SharedPtr<Command> command =
- CreateCommand<hmi::OnDeviceConnectionStatusNotification>(message_);
-
- EXPECT_CALL(mock_app_manager_, GetDeviceConnectionType(_)).Times(0);
- EXPECT_CALL(mock_policy_handler_, OnDeviceConnectionStatus(_, _)).Times(0);
- command->Run();
-}
+ CreateCommand<hmi::OnDriverDistractionNotification>(message);
-TEST_F(
- HMICommandsNotificationsTest,
- OnDeviceConnectionStatusNotification_MandatoryIntegerParamsMissing_IgnoreNotification) {
- const hmi_apis::Common_UserSetting::eType usb_transport_status =
- hmi_apis::Common_UserSetting::ENABLED;
+ EXPECT_CALL(app_mngr_, set_driver_distraction(state));
+ EXPECT_CALL(app_mngr_, applications()).WillOnce(Return(applications_));
- SmartObject& device_so = (*message_)[strings::msg_params][strings::device];
- device_so[strings::id] = kDeviceId;
- device_so[strings::usb_transport_status] = usb_transport_status;
-
- utils::SharedPtr<Command> command =
- CreateCommand<hmi::OnDeviceConnectionStatusNotification>(message_);
-
- EXPECT_CALL(mock_app_manager_, GetDeviceConnectionType(_)).Times(0);
- EXPECT_CALL(mock_policy_handler_, OnDeviceConnectionStatus(_, _)).Times(0);
+ EXPECT_CALL(app_mngr_, ManageMobileCommand(_, _)).Times(0);
+ EXPECT_CALL(*app_ptr_, app_id()).Times(0);
command->Run();
}
-TEST_F(
- HMICommandsNotificationsTest,
- OnDeviceConnectionStatusNotification_MandatoryStringParamsMissing_IgnoreNotification) {
- const hmi_apis::Common_TransportType::eType transport_type =
- hmi_apis::Common_TransportType::USB_AOA;
- const hmi_apis::Common_UserSetting::eType usb_transport_status =
- hmi_apis::Common_UserSetting::ENABLED;
-
- SmartObject& device_so = (*message_)[strings::msg_params][strings::device];
- device_so[strings::transport_type] = transport_type;
- device_so[strings::usb_transport_status] = usb_transport_status;
-
- utils::SharedPtr<Command> command =
- CreateCommand<hmi::OnDeviceConnectionStatusNotification>(message_);
-
- EXPECT_CALL(mock_app_manager_, GetDeviceConnectionType(_)).Times(0);
- EXPECT_CALL(mock_policy_handler_, OnDeviceConnectionStatus(_, _)).Times(0);
- command->Run();
-}
-
-TEST_F(
- HMICommandsNotificationsTest,
- OnDeviceConnectionStatusNotification_StringParamsEmpty_IgnoreNotification) {
- const hmi_apis::Common_TransportType::eType transport_type =
- hmi_apis::Common_TransportType::USB_AOA;
- const std::string connection_type = "USB_AOA";
- const hmi_apis::Common_UserSetting::eType usb_transport_status =
- hmi_apis::Common_UserSetting::ENABLED;
-
- SmartObject& device_so = (*message_)[strings::msg_params][strings::device];
- device_so[strings::transport_type] = transport_type;
- device_so[strings::id] = kEmptyDeviceInternalId;
- device_so[strings::usb_transport_status] = usb_transport_status;
-
- utils::SharedPtr<Command> command =
- CreateCommand<hmi::OnDeviceConnectionStatusNotification>(message_);
-
- EXPECT_CALL(mock_app_manager_, GetDeviceConnectionType(_)).Times(0);
- EXPECT_CALL(mock_policy_handler_, OnDeviceConnectionStatus(_, _)).Times(0);
- command->Run();
-}
-
-TEST_F(
- HMICommandsNotificationsTest,
- OnDeviceConnectionStatusNotification_InvalidTransportType_IgnoreNotification) {
- const hmi_apis::Common_TransportType::eType transport_type_value =
- hmi_apis::Common_TransportType::INVALID_ENUM;
- const std::string connection_type;
- const hmi_apis::Common_UserSetting::eType usb_transport_status =
- hmi_apis::Common_UserSetting::ENABLED;
-
- SmartObject& device_so = (*message_)[strings::msg_params][strings::device];
- device_so[strings::transport_type] = transport_type_value;
- device_so[strings::id] = kDeviceId;
- device_so[strings::usb_transport_status] = usb_transport_status;
-
+TEST_F(HMICommandsNotificationsTest,
+ OnDriverDistractionNotificationInvalidApp) {
+ const hmi_apis::Common_DriverDistractionState::eType state =
+ hmi_apis::Common_DriverDistractionState::DD_ON;
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::hmi_notification::state] = state;
utils::SharedPtr<Command> command =
- CreateCommand<hmi::OnDeviceConnectionStatusNotification>(message_);
-
- EXPECT_CALL(mock_app_manager_, GetDeviceConnectionType(transport_type_value))
- .WillOnce(Return(connection_type));
- EXPECT_CALL(mock_policy_handler_, OnDeviceConnectionStatus(_, _)).Times(0);
- command->Run();
-}
-
-TEST_F(
- HMICommandsNotificationsTest,
- OnDeviceConnectionStatusNotification_USBTransportStatusInvalid_IgnoreNotification) {
- const hmi_apis::Common_TransportType::eType transport_type_value =
- hmi_apis::Common_TransportType::USB_AOA;
- const std::string connection_type = "USB_AOA";
- const hmi_apis::Common_UserSetting::eType usb_transport_status =
- hmi_apis::Common_UserSetting::INVALID_ENUM;
-
- SmartObject& device_so = (*message_)[strings::msg_params][strings::device];
- device_so[strings::transport_type] = transport_type_value;
- device_so[strings::id] = kDeviceId;
- device_so[strings::usb_transport_status] = usb_transport_status;
+ CreateCommand<hmi::OnDriverDistractionNotification>(message);
- utils::SharedPtr<Command> command =
- CreateCommand<hmi::OnDeviceConnectionStatusNotification>(message_);
+ ApplicationSharedPtr invalid_app;
+ application_set_.insert(invalid_app);
+ EXPECT_CALL(app_mngr_, applications()).WillOnce(Return(applications_));
- EXPECT_CALL(mock_app_manager_, GetDeviceConnectionType(transport_type_value))
- .WillOnce(Return(connection_type));
- EXPECT_CALL(mock_policy_handler_, OnDeviceConnectionStatus(_, _)).Times(0);
+ EXPECT_CALL(app_mngr_, ManageMobileCommand(_, _)).Times(0);
+ EXPECT_CALL(*app_ptr_, app_id()).Times(0);
command->Run();
}
-TEST_F(
- HMICommandsNotificationsTest,
- OnDeviceConnectionStatusNotification_NotificationValidUSBTransportEnable_SendNotificationToPolicy) {
- const hmi_apis::Common_TransportType::eType transport_type_value =
- hmi_apis::Common_TransportType::USB_AOA;
- const std::string connection_type = "USB_AOA";
- const hmi_apis::Common_UserSetting::eType usb_transport_status =
- hmi_apis::Common_UserSetting::ENABLED;
-
- SmartObject& device_so = (*message_)[strings::msg_params][strings::device];
- device_so[strings::transport_type] = transport_type_value;
- device_so[strings::id] = kDeviceId;
- device_so[strings::usb_transport_status] = usb_transport_status;
-
+TEST_F(HMICommandsNotificationsTest, OnDriverDistractionNotificationValidApp) {
+ const hmi_apis::Common_DriverDistractionState::eType state =
+ hmi_apis::Common_DriverDistractionState::DD_ON;
+ MessageSharedPtr message = CreateMessage();
+ (*message)[am::strings::msg_params][am::mobile_notification::state] = state;
utils::SharedPtr<Command> command =
- CreateCommand<hmi::OnDeviceConnectionStatusNotification>(message_);
-
- EXPECT_CALL(mock_app_manager_, GetDeviceConnectionType(transport_type_value))
- .WillOnce(Return(connection_type));
- EXPECT_CALL(mock_policy_handler_,
- OnDeviceConnectionStatus(kDeviceId, usb_transport_status));
- command->Run();
-}
-
-TEST_F(
- HMICommandsNotificationsTest,
- OnDeviceConnectionStatusNotification_NotificationValidUSBTransportDisable_SendNotificationToPolicy) {
- const hmi_apis::Common_TransportType::eType transport_type_value =
- hmi_apis::Common_TransportType::USB_AOA;
- const std::string connection_type = "USB_AOA";
- const hmi_apis::Common_UserSetting::eType usb_transport_status =
- hmi_apis::Common_UserSetting::DISABLED;
+ CreateCommand<hmi::OnDriverDistractionNotification>(message);
- SmartObject& device_so = (*message_)[strings::msg_params][strings::device];
- device_so[strings::transport_type] = transport_type_value;
- device_so[strings::id] = kDeviceId;
- device_so[strings::usb_transport_status] = usb_transport_status;
-
- utils::SharedPtr<Command> command =
- CreateCommand<hmi::OnDeviceConnectionStatusNotification>(message_);
+ application_set_.insert(app_);
- EXPECT_CALL(mock_app_manager_, GetDeviceConnectionType(transport_type_value))
- .WillOnce(Return(connection_type));
- EXPECT_CALL(mock_policy_handler_,
- OnDeviceConnectionStatus(kDeviceId, usb_transport_status));
+ EXPECT_CALL(app_mngr_, applications()).WillOnce(Return(applications_));
+ EXPECT_CALL(app_mngr_,
+ ManageMobileCommand(_, Command::CommandOrigin::ORIGIN_SDL))
+ .WillOnce(GetMessage(message));
+ EXPECT_CALL(*app_ptr_, app_id()).WillRepeatedly(Return(kAppId_));
command->Run();
+ EXPECT_EQ(
+ static_cast<int32_t>(am::mobile_api::FunctionID::OnDriverDistractionID),
+ (*message)[am::strings::params][am::strings::function_id].asInt());
+ EXPECT_EQ(
+ static_cast<int32_t>(kAppId_),
+ (*message)[am::strings::params][am::strings::connection_key].asInt());
+ EXPECT_EQ(static_cast<int32_t>(am::MessageType::kNotification),
+ (*message)[am::strings::params][am::strings::message_type].asInt());
}
} // namespace hmi_notifications_test
diff --git a/src/components/application_manager/test/commands/mobile/register_app_interface_request_test.cc b/src/components/application_manager/test/commands/mobile/register_app_interface_request_test.cc
index fe252e38d6..96b3cb067b 100644
--- a/src/components/application_manager/test/commands/mobile/register_app_interface_request_test.cc
+++ b/src/components/application_manager/test/commands/mobile/register_app_interface_request_test.cc
@@ -229,7 +229,7 @@ TEST_F(RegisterAppInterfaceRequestTest, Run_MinimalData_SUCCESS) {
.WillByDefault(Return(true));
policy::StatusNotifier notify_upd_manager =
utils::MakeShared<utils::CallNothing>();
- ON_CALL(mock_policy_handler_, AddApplication(_))
+ ON_CALL(mock_policy_handler_, AddApplication(_, _))
.WillByDefault(Return(notify_upd_manager));
EXPECT_CALL(app_mngr_, RegisterApplication(msg_)).WillOnce(Return(mock_app));
@@ -324,7 +324,7 @@ TEST_F(RegisterAppInterfaceRequestTest,
.WillByDefault(Return(true));
policy::StatusNotifier notify_upd_manager =
utils::MakeShared<utils::CallNothing>();
- ON_CALL(mock_policy_handler_, AddApplication(_))
+ ON_CALL(mock_policy_handler_, AddApplication(_, _))
.WillByDefault(Return(notify_upd_manager));
EXPECT_CALL(app_mngr_, RegisterApplication(msg_)).WillOnce(Return(mock_app));
diff --git a/src/components/application_manager/test/include/application_manager/mock_message_helper.h b/src/components/application_manager/test/include/application_manager/mock_message_helper.h
index d0e8338d77..0d28f9e522 100644
--- a/src/components/application_manager/test/include/application_manager/mock_message_helper.h
+++ b/src/components/application_manager/test/include/application_manager/mock_message_helper.h
@@ -118,11 +118,20 @@ class MockMessageHelper {
MOCK_METHOD2(SendDecryptCertificateToHMI,
void(const std::string& file_name,
ApplicationManager& app_mngr));
+#ifdef EXTERNAL_PROPRIETARY_MODE
+ MOCK_METHOD4(
+ SendGetListOfPermissionsResponse,
+ void(const std::vector<policy::FunctionalGroupPermission>& permissions,
+ const policy::ExternalConsentStatus& external_consent_status,
+ uint32_t correlation_id,
+ ApplicationManager& app_mngr));
+#else
MOCK_METHOD3(
SendGetListOfPermissionsResponse,
void(const std::vector<policy::FunctionalGroupPermission>& permissions,
uint32_t correlation_id,
ApplicationManager& app_mngr));
+#endif // #ifdef EXTERNAL_PROPRIETARY_MODE
MOCK_METHOD3(SendOnPermissionsChangeNotification,
void(uint32_t connection_key,
const policy::Permissions& permissions,
@@ -245,6 +254,9 @@ class MockMessageHelper {
ApplicationManager& application_manager));
MOCK_METHOD1(StringifiedHMILevel,
std::string(const mobile_apis::HMILevel::eType hmi_level));
+ MOCK_METHOD2(GetDeviceMacAddressForHandle,
+ std::string(const uint32_t device_handle,
+ const ApplicationManager& app_mngr));
static MockMessageHelper* message_helper_mock();
};
diff --git a/src/components/application_manager/test/message_helper/message_helper_test.cc b/src/components/application_manager/test/message_helper/message_helper_test.cc
index 0a9075b73e..12ed3fcdb3 100644
--- a/src/components/application_manager/test/message_helper/message_helper_test.cc
+++ b/src/components/application_manager/test/message_helper/message_helper_test.cc
@@ -46,6 +46,10 @@
#include "application_manager/state_controller.h"
#include "application_manager/resumption/resume_ctrl.h"
+#ifdef EXTERNAL_PROPRIETARY_MODE
+#include "policy/policy_external/include/policy/policy_types.h"
+#endif
+
namespace test {
namespace components {
namespace application_manager_test {
@@ -903,947 +907,57 @@ TEST_F(MessageHelperTest, SubscribeApplicationToSoftButton_CallFromApp) {
EXPECT_CALL(*appSharedPtr,
SubscribeToSoftButtons(function_id, SoftButtonID())).Times(1);
MessageHelper::SubscribeApplicationToSoftButton(
- message_params, mock_app_, function_id);
-}
-
-TEST_F(MessageHelperTest, SendOnAppUnregNotificationToHMI) {
- const bool kIsUnexpectedDisconnect = false;
-
- const uint32_t kMockHmiAppId = 1u;
- EXPECT_CALL(*mock_app_, hmi_app_id()).WillOnce(Return(kMockHmiAppId));
-
- smart_objects::SmartObjectSPtr test_notification;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&test_notification), Return(true)));
-
- MessageHelper::SendOnAppUnregNotificationToHMI(
- mock_app_, kIsUnexpectedDisconnect, mock_application_manager_);
-
- EXPECT_EQ(
- hmi_apis::FunctionID::BasicCommunication_OnAppUnregistered,
- (*test_notification)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(
- MessageType::kNotification,
- (*test_notification)[strings::params][strings::message_type].asInt());
- EXPECT_EQ(kMockHmiAppId,
- (*test_notification)[strings::msg_params][strings::app_id].asInt());
- EXPECT_EQ(
- kIsUnexpectedDisconnect,
- (*test_notification)[strings::msg_params][strings::unexpected_disconnect]
- .asInt());
-}
-
-TEST_F(MessageHelperTest, SendOnAppUnregNotificationToHMI_InvalidApp) {
- const bool kIsUnexpectedDisconnect = false;
-
- MockApplicationSharedPtr mock_app;
-
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_)).Times(0);
-
- MessageHelper::SendOnAppUnregNotificationToHMI(
- mock_app, kIsUnexpectedDisconnect, mock_application_manager_);
-}
-
-TEST_F(MessageHelperTest, SendOnButtonSubscriptionNotification) {
- const hmi_apis::Common_ButtonName::eType kButton =
- hmi_apis::Common_ButtonName::OK;
- const bool kIsSubscribed = true;
-
- smart_objects::SmartObject msg_params(smart_objects::SmartType_Map);
- msg_params[strings::app_id] = kAppId_;
- msg_params[strings::name] = kButton;
- msg_params[strings::is_suscribed] = kIsSubscribed;
-
- smart_objects::SmartObjectSPtr test_notification;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&test_notification), Return(true)));
-
- MessageHelper::SendOnButtonSubscriptionNotification(
- kAppId_, kButton, kIsSubscribed, mock_application_manager_);
-
- EXPECT_EQ(
- application_manager::MessageType::kNotification,
- (*test_notification)[strings::params][strings::message_type].asInt());
- EXPECT_EQ(
- commands::CommandImpl::protocol_version_,
- (*test_notification)[strings::params][strings::protocol_version].asInt());
- EXPECT_EQ(
- commands::CommandImpl::hmi_protocol_type_,
- (*test_notification)[strings::params][strings::protocol_type].asInt());
- EXPECT_EQ(
- hmi_apis::FunctionID::Buttons_OnButtonSubscription,
- (*test_notification)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(
- hmi_apis::FunctionID::Buttons_OnButtonSubscription,
- (*test_notification)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(msg_params, (*test_notification)[strings::msg_params]);
-}
-
-TEST_F(MessageHelperTest, SendOnDataStreaming_Audio) {
- const protocol_handler::ServiceType kService =
- protocol_handler::ServiceType::kAudio;
-
- smart_objects::SmartObjectSPtr test_notification;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&test_notification), Return(true)));
-
- MessageHelper::SendOnDataStreaming(
- kService, kAvailable_, mock_application_manager_);
-
- EXPECT_EQ(
- hmi_apis::FunctionID::Navigation_OnAudioDataStreaming,
- (*test_notification)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(
- hmi_apis::messageType::notification,
- (*test_notification)[strings::params][strings::message_type].asInt());
- EXPECT_EQ(
- commands::CommandImpl::protocol_version_,
- (*test_notification)[strings::params][strings::protocol_version].asInt());
- EXPECT_EQ(
- commands::CommandImpl::hmi_protocol_type_,
- (*test_notification)[strings::params][strings::protocol_type].asInt());
- EXPECT_EQ(kAvailable_,
- (*test_notification)[strings::msg_params]["available"].asInt());
-}
-
-TEST_F(MessageHelperTest, SendOnDataStreaming_MobileNav) {
- const protocol_handler::ServiceType kService =
- protocol_handler::ServiceType::kMobileNav;
-
- smart_objects::SmartObjectSPtr test_notification;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&test_notification), Return(true)));
-
- MessageHelper::SendOnDataStreaming(
- kService, kAvailable_, mock_application_manager_);
-
- EXPECT_EQ(
- hmi_apis::FunctionID::Navigation_OnVideoDataStreaming,
- (*test_notification)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(
- hmi_apis::messageType::notification,
- (*test_notification)[strings::params][strings::message_type].asInt());
- EXPECT_EQ(
- commands::CommandImpl::protocol_version_,
- (*test_notification)[strings::params][strings::protocol_version].asInt());
- EXPECT_EQ(
- commands::CommandImpl::hmi_protocol_type_,
- (*test_notification)[strings::params][strings::protocol_type].asInt());
- EXPECT_EQ(kAvailable_,
- (*test_notification)[strings::msg_params]["available"].asInt());
-}
-
-TEST_F(MessageHelperTest, SendOnDataStreaming_Fail) {
- const protocol_handler::ServiceType kService =
- protocol_handler::ServiceType::kInvalidServiceType;
-
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_)).Times(0);
-
- MessageHelper::SendOnDataStreaming(
- kService, kAvailable_, mock_application_manager_);
-}
-
-TEST_F(MessageHelperTest, SendOnPermissionsChangeNotification) {
- const policy::RpcName kRpcName1 = "rpc_name_1";
- const std::string kHMIPermissionLabel1 = "level_1";
- const std::string kHMIPermissionValue1 = "hmi_level_1";
-
- std::set<policy::HMILevel> hmi_levels_1;
- hmi_levels_1.insert(kHMIPermissionValue1);
-
- policy::HMIPermissions hmi_permissions_1;
- hmi_permissions_1[kHMIPermissionLabel1] = hmi_levels_1;
-
- std::set<policy::Parameter> parameters_1;
- parameters_1.insert("parameter_1");
-
- policy::ParameterPermissions parameter_permissions_1;
- parameter_permissions_1["1"] = parameters_1;
-
- const policy::RpcPermissions kRpcPermissions1 = {hmi_permissions_1,
- parameter_permissions_1};
-
- policy::Permissions permissions;
- permissions[kRpcName1] = kRpcPermissions1;
-
- smart_objects::SmartObjectSPtr test_notification;
- EXPECT_CALL(mock_application_manager_,
- ManageMobileCommand(_, commands::Command::ORIGIN_SDL))
- .WillOnce(DoAll(SaveArg<0>(&test_notification), Return(true)));
-
- MessageHelper::SendOnPermissionsChangeNotification(
- kConnectionKey_, permissions, mock_application_manager_);
-
- EXPECT_EQ(
- mobile_apis::FunctionID::OnPermissionsChangeID,
- (*test_notification)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(
- mobile_apis::messageType::notification,
- (*test_notification)[strings::params][strings::message_type].asInt());
- EXPECT_EQ(
- commands::CommandImpl::mobile_protocol_type_,
- (*test_notification)[strings::params][strings::protocol_type].asInt());
- EXPECT_EQ(
- kConnectionKey_,
- (*test_notification)[strings::params][strings::connection_key].asUInt());
-
- // Permissions Data check
- policy::Permissions::const_iterator it_permissions = permissions.begin();
- policy::Permissions::const_iterator it_permissions_end = permissions.end();
- const smart_objects::SmartObject& kPermissionsItemArray =
- (*test_notification)[strings::msg_params]["permissionItem"];
-
- for (size_t index_pi = 0; it_permissions != it_permissions_end;
- ++it_permissions, ++index_pi) {
- const smart_objects::SmartObject& kPermissionItem =
- kPermissionsItemArray[index_pi];
-
- EXPECT_EQ((*it_permissions).first, kPermissionItem["rpcName"].asString());
-
- // Checking the hmiPermissions
- const smart_objects::SmartObject& kHmiPermissions =
- kPermissionItem["hmiPermissions"];
- const policy::RpcPermissions& rpc_permissions = (*it_permissions).second;
- policy::HMIPermissions::const_iterator it_hmi_permissions =
- rpc_permissions.hmi_permissions.begin();
- policy::HMIPermissions::const_iterator it_hmi_permissions_end =
- rpc_permissions.hmi_permissions.end();
-
- for (; it_hmi_permissions != it_hmi_permissions_end; ++it_hmi_permissions) {
- std::set<policy::HMILevel>::const_iterator it_hmi_levels =
- (*it_hmi_permissions).second.begin();
- std::set<policy::HMILevel>::const_iterator it_hmi_levels_end =
- (*it_hmi_permissions).second.end();
- const smart_objects::SmartObject& kHmiLevels =
- kHmiPermissions[(*it_hmi_permissions).first];
-
- for (size_t index_hmi_levels = 0; it_hmi_levels != it_hmi_levels_end;
- ++it_hmi_levels, ++index_hmi_levels) {
- EXPECT_EQ(kHMIPermissionValue1,
- kHmiLevels[index_hmi_levels].asString());
- }
- }
-
- // Checking the parameterPermissions
- const smart_objects::SmartObject& kParameterPermissions =
- kPermissionItem["parameterPermissions"];
- policy::ParameterPermissions::const_iterator it_parameter_permissions =
- rpc_permissions.parameter_permissions.begin();
- policy::ParameterPermissions::const_iterator it_parameter_permissions_end =
- rpc_permissions.parameter_permissions.end();
-
- for (; it_parameter_permissions != it_parameter_permissions_end;
- ++it_parameter_permissions) {
- const smart_objects::SmartObject& kParameters =
- kParameterPermissions[(*it_parameter_permissions).first];
-
- std::set<policy::Parameter>::const_iterator it_parameters =
- (*it_parameter_permissions).second.begin();
- std::set<policy::Parameter>::const_iterator it_parameters_end =
- (*it_parameter_permissions).second.end();
-
- for (size_t index_parameters = 0; it_parameters != it_parameters_end;
- ++it_parameters, ++index_parameters) {
- EXPECT_EQ(*it_parameters, kParameters[index_parameters].asString());
- }
- }
- }
-}
-
-TEST_F(MessageHelperTest, SendOnResumeAudioSourceToHMI) {
- EXPECT_CALL(mock_application_manager_, application(kAppId_))
- .WillOnce(Return(mock_app_));
- EXPECT_EQ(mock_app_, true);
-
- const uint32_t kCorrelationId = 0;
- EXPECT_CALL(mock_application_manager_, GetNextHMICorrelationID())
- .WillOnce(Return(kCorrelationId));
- smart_objects::SmartObjectSPtr test_notification;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&test_notification), Return(true)));
-
- MessageHelper::SendOnResumeAudioSourceToHMI(kAppId_,
- mock_application_manager_);
-
- EXPECT_EQ(
- hmi_apis::FunctionID::BasicCommunication_OnResumeAudioSource,
- (*test_notification)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(
- MessageType::kNotification,
- (*test_notification)[strings::params][strings::message_type].asInt());
- EXPECT_EQ(
- kCorrelationId,
- (*test_notification)[strings::params][strings::correlation_id].asUInt());
- EXPECT_EQ(kAppId_,
- (*test_notification)[strings::msg_params][strings::app_id].asInt());
-}
-
-TEST_F(MessageHelperTest, SendOnResumeAudioSourceToHMI_InvalidAppId) {
- MockApplicationSharedPtr mock_app;
- EXPECT_CALL(mock_application_manager_, application(kAppId_))
- .WillOnce(Return(MockApplicationSharedPtr()));
- EXPECT_EQ(mock_app, false);
- EXPECT_CALL(mock_application_manager_, GetNextHMICorrelationID()).Times(0);
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_)).Times(0);
-
- MessageHelper::SendOnResumeAudioSourceToHMI(kAppId_,
- mock_application_manager_);
-}
-
-TEST_F(MessageHelperTest, SendOnStatusUpdate) {
- const std::string& kStatus = "test_status";
-
- smart_objects::SmartObjectSPtr test_notification;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&test_notification), Return(true)));
-
- MessageHelper::SendOnStatusUpdate(kStatus, mock_application_manager_);
-
- EXPECT_EQ(
- hmi_apis::FunctionID::SDL_OnStatusUpdate,
- (*test_notification)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(
- MessageType::kNotification,
- (*test_notification)[strings::params][strings::message_type].asInt());
- EXPECT_EQ(kStatus,
- (*test_notification)[strings::msg_params]["status"].asString());
-}
-
-TEST_F(MessageHelperTest, SendPolicySnapshotNotification) {
- const std::vector<uint8_t> kPolicyData;
- const std::string& kUrl = "test_url";
-
- smart_objects::SmartObjectSPtr test_notification;
- EXPECT_CALL(mock_application_manager_,
- ManageMobileCommand(_, commands::Command::ORIGIN_SDL))
- .WillOnce(DoAll(SaveArg<0>(&test_notification), Return(true)));
-
- MessageHelper::SendPolicySnapshotNotification(
- kConnectionKey_, kPolicyData, kUrl, mock_application_manager_);
-
- EXPECT_EQ(
- mobile_apis::FunctionID::OnSystemRequestID,
- (*test_notification)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(
- mobile_apis::messageType::notification,
- (*test_notification)[strings::params][strings::message_type].asInt());
- EXPECT_EQ(
- commands::CommandImpl::mobile_protocol_type_,
- (*test_notification)[strings::params][strings::protocol_type].asInt());
- EXPECT_EQ(
- commands::CommandImpl::protocol_version_,
- (*test_notification)[strings::params][strings::protocol_version].asInt());
- EXPECT_EQ(
- kConnectionKey_,
- (*test_notification)[strings::params][strings::connection_key].asInt());
- EXPECT_EQ(
- kUrl,
- (*test_notification)[strings::msg_params][mobile_notification::syncp_url]
- .asString());
-}
-
-TEST_F(MessageHelperTest, SendUnsubscribedWayPoints) {
- const uint32_t kCorrelationId = 0;
- EXPECT_CALL(mock_application_manager_, GetNextHMICorrelationID())
- .WillOnce(Return(kCorrelationId));
-
- smart_objects::SmartObjectSPtr test_notification;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&test_notification), Return(true)));
-
- const bool kRes =
- MessageHelper::SendUnsubscribedWayPoints(mock_application_manager_);
- EXPECT_TRUE(kRes);
-
- EXPECT_EQ(
- hmi_apis::FunctionID::Navigation_UnsubscribeWayPoints,
- (*test_notification)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(
- hmi_apis::messageType::request,
- (*test_notification)[strings::params][strings::message_type].asInt());
- EXPECT_EQ(
- commands::CommandImpl::protocol_version_,
- (*test_notification)[strings::params][strings::protocol_version].asInt());
- EXPECT_EQ(
- commands::CommandImpl::hmi_protocol_type_,
- (*test_notification)[strings::params][strings::protocol_type].asInt());
- EXPECT_EQ(
- kCorrelationId,
- (*test_notification)[strings::params][strings::correlation_id].asInt());
-}
-
-TEST_F(MessageHelperTest, SendUpdateSDLResponse) {
- const std::string& kResult = "test_result";
- const uint32_t kCorrelationId = 1u;
-
- smart_objects::SmartObjectSPtr test_notification;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&test_notification), Return(true)));
-
- MessageHelper::SendUpdateSDLResponse(
- kResult, kCorrelationId, mock_application_manager_);
-
- EXPECT_EQ(
- hmi_apis::FunctionID::SDL_UpdateSDL,
- (*test_notification)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(
- MessageType::kResponse,
- (*test_notification)[strings::params][strings::message_type].asInt());
- EXPECT_EQ(
- kCorrelationId,
- (*test_notification)[strings::params][strings::correlation_id].asInt());
- EXPECT_EQ(0,
- (*test_notification)[strings::params][hmi_response::code].asInt());
- EXPECT_EQ(kResult,
- (*test_notification)[strings::msg_params]["result"].asString());
-}
-
-TEST_F(MessageHelperTest,
- SendUIChangeRegistrationRequestToHMI_AppNotValid_UNSUCCESS) {
- MockApplicationSharedPtr mock_app;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_)).Times(0);
-
- MessageHelper::SendUIChangeRegistrationRequestToHMI(
- mock_app, mock_application_manager_);
-}
-
-TEST_F(MessageHelperTest,
- SendUIChangeRegistrationRequestToHMI_NoAppTypes_UNSUCCESS) {
- EXPECT_CALL(*mock_app_, app_hmi_types())
- .WillOnce(Return(static_cast<smart_objects::SmartObject*>(NULL)));
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_)).Times(0);
- MessageHelper::SendUIChangeRegistrationRequestToHMI(
- mock_app_, mock_application_manager_);
-}
-
-TEST_F(MessageHelperTest, SendUIChangeRegistrationRequestToHMI_SUCCESS) {
- EXPECT_CALL(*mock_app_, app_id()).WillRepeatedly(Return(kAppId_));
-
- smart_objects::SmartObject dummy_app_types;
- EXPECT_CALL(*mock_app_, app_hmi_types())
- .WillRepeatedly(Return(&dummy_app_types));
-
- const mobile_api::Language::eType kDummyLanguage =
- mobile_api::Language::INVALID_ENUM;
- EXPECT_CALL(*mock_app_, ui_language())
- .WillRepeatedly(ReturnRef(kDummyLanguage));
-
- smart_objects::SmartObjectSPtr result;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
- EXPECT_CALL(mock_application_manager_, GetNextHMICorrelationID())
- .WillOnce(Return(kNextHMICorrelationID));
-
- MessageHelper::SendUIChangeRegistrationRequestToHMI(
- mock_app_, mock_application_manager_);
- ASSERT_TRUE(result.valid());
-
- EXPECT_EQ(hmi_apis::FunctionID::UI_ChangeRegistration,
- (*result)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(kAppId_, (*result)[strings::msg_params][strings::app_id].asInt());
-}
-
-TEST_F(MessageHelperTest, CreateDeviceListSO_EmptyDeviceList_SUCCESS) {
- connection_handler::DeviceMap devices;
-
- smart_objects::SmartObjectSPtr result(MessageHelper::CreateDeviceListSO(
- devices,
- *static_cast<policy::PolicyHandlerInterface*>(NULL),
- mock_application_manager_));
-
- ASSERT_TRUE(result.valid());
-
- EXPECT_EQ(smart_objects::SmartType_Array,
- (*result)[strings::device_list].getType());
- EXPECT_EQ(0u, (*result)[strings::device_list].length());
-}
-
-TEST_F(MessageHelperTest, CreateDeviceListSO_SUCCESS) {
- connection_handler::DeviceMap devices;
- policy_test::MockPolicyHandlerInterface policy_handler;
-
- const uint32_t kDeviceHandle = 0u;
- const std::string kDeviceName = "test_device";
- connection_handler::Device device(kDeviceHandle, kDeviceName);
-
- devices.insert(std::pair<uint32_t, connection_handler::Device>(0, device));
-
- EXPECT_CALL(policy_handler, GetUserConsentForDevice(_))
- .WillOnce(Return(policy::DeviceConsent::kDeviceAllowed));
- EXPECT_CALL(mock_application_manager_, GetDeviceTransportType(_))
- .WillOnce(Return(hmi_apis::Common_TransportType::INVALID_ENUM));
-
- smart_objects::SmartObjectSPtr result(MessageHelper::CreateDeviceListSO(
- devices, policy_handler, mock_application_manager_));
-
- ASSERT_TRUE(result.valid());
-
- EXPECT_EQ(smart_objects::SmartType_Array,
- (*result)[strings::device_list].getType());
- EXPECT_TRUE(0 < (*result)[strings::device_list].length());
-}
-
-TEST_F(MessageHelperTest, CreateGetVehicleDataRequest_NoParams_SUCCESS) {
- const uint32_t kCorrelationId = 1u;
- const std::vector<std::string> kDummyMsgParams;
-
- smart_objects::SmartObjectSPtr result;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
-
- MessageHelper::CreateGetVehicleDataRequest(
- kCorrelationId, kDummyMsgParams, mock_application_manager_);
-
- ASSERT_TRUE(result.valid());
-
- EXPECT_EQ(kCorrelationId,
- (*result)[strings::params][strings::correlation_id].asUInt());
-}
-
-TEST_F(MessageHelperTest, CreateGetVehicleDataRequest_SUCCESS) {
- const uint32_t kCorrelationId = 1u;
- const std::string kTestParam = "test_param";
- std::vector<std::string> msg_params;
- msg_params.push_back(kTestParam);
-
- smart_objects::SmartObjectSPtr result;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
-
- MessageHelper::CreateGetVehicleDataRequest(
- kCorrelationId, msg_params, mock_application_manager_);
-
- ASSERT_TRUE(result.valid());
-
- EXPECT_EQ(kCorrelationId,
- (*result)[strings::params][strings::correlation_id].asUInt());
- EXPECT_TRUE((*result)[strings::msg_params].keyExists(kTestParam));
-}
-
-TEST_F(MessageHelperTest, CreateHMIApplicationStruct_SUCCESS) {
- protocol_handler_test::MockSessionObserver session_observer;
- policy_test::MockPolicyHandlerInterface policy_handler;
-
- smart_objects::SmartObject dummy_so(smart_objects::SmartType_Map);
- dummy_so["dummy_param"] = 0;
- EXPECT_CALL(*mock_app_, tts_name()).WillRepeatedly(Return(&dummy_so));
- EXPECT_CALL(*mock_app_, vr_synonyms()).WillRepeatedly(Return(&dummy_so));
- EXPECT_CALL(*mock_app_, ngn_media_screen_name())
- .WillRepeatedly(Return(&dummy_so));
- EXPECT_CALL(*mock_app_, app_hmi_types()).WillRepeatedly(Return(&dummy_so));
- EXPECT_CALL(*mock_app_, is_media()).WillRepeatedly(Return(false));
- EXPECT_CALL(*mock_app_, hmi_app_id()).WillRepeatedly(Return(0u));
- EXPECT_CALL(*mock_app_, device()).WillRepeatedly(Return(0u));
- EXPECT_CALL(*mock_app_, policy_app_id())
- .WillRepeatedly(Return(std::string()));
- const mobile_api::Language::eType kUiLanguage =
- mobile_api::Language::INVALID_ENUM;
- EXPECT_CALL(*mock_app_, ui_language()).WillRepeatedly(ReturnRef(kUiLanguage));
-
- EXPECT_CALL(policy_handler, GetUserConsentForDevice(_))
- .WillRepeatedly(Return(policy::DeviceConsent::kDeviceAllowed));
- EXPECT_CALL(policy_handler, GetDeviceUSBTransportStatus(_))
- .WillRepeatedly(Return(hmi_apis::Common_UserSetting::DISABLED));
- EXPECT_CALL(session_observer, GetDataOnDeviceHandle(_, _, _, _, _))
- .WillRepeatedly(Return(kNextHMICorrelationID));
- EXPECT_CALL(mock_application_manager_, GetDeviceTransportType(_))
- .WillRepeatedly(Return(hmi_apis::Common_TransportType::INVALID_ENUM));
-
- const ::utils::custom_string::CustomString kAppName("app_name");
- EXPECT_CALL(*mock_app_, name()).WillRepeatedly(ReturnRef(kAppName));
- const std::string kAppIconPath("AppIconPath");
- EXPECT_CALL(*mock_app_, app_icon_path())
- .WillRepeatedly(ReturnRef(kAppIconPath));
-
- smart_objects::SmartObject result;
- EXPECT_TRUE(
- MessageHelper::CreateHMIApplicationStruct(mock_app_,
- session_observer,
- policy_handler,
- &result,
- mock_application_manager_));
-
- EXPECT_EQ(smart_objects::SmartType_Map, result.getType());
- EXPECT_NE(result.length(), 0u);
-}
-
-TEST_F(MessageHelperTest, SendStopAudioPathThru_SUCCESS) {
- smart_objects::SmartObjectSPtr result;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
- EXPECT_CALL(mock_application_manager_, GetNextHMICorrelationID())
- .WillOnce(Return(kNextHMICorrelationID));
-
- MessageHelper::SendStopAudioPathThru(mock_application_manager_);
-
- ASSERT_TRUE(result.valid());
-
- EXPECT_EQ(hmi_apis::FunctionID::UI_EndAudioPassThru,
- (*result)[strings::params][strings::function_id].asInt());
-}
-
-TEST_F(MessageHelperTest, SendSDLActivateAppResponse_SUCCESS) {
- const uint32_t kCorrelationId = 0u;
- const std::string kStrAppId("Application_ID");
- policy::AppPermissions permissions(kStrAppId);
- permissions.isSDLAllowed = true;
- permissions.isAppPermissionsRevoked = false;
- permissions.appRevoked = false;
-
- smart_objects::SmartObjectSPtr result;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
-
- MessageHelper::SendSDLActivateAppResponse(
- permissions, kCorrelationId, mock_application_manager_);
-
- ASSERT_TRUE(result.valid());
-
- EXPECT_EQ(hmi_apis::FunctionID::SDL_ActivateApp,
- (*result)[strings::params][strings::function_id].asInt());
-}
-
-TEST_F(MessageHelperTest, SendPolicyUpdate_SUCCESS) {
- const std::string kFilePath("file_path");
- const int kTimeout = 0u;
- std::vector<int> dummy_retries;
- dummy_retries.push_back(5);
-
- smart_objects::SmartObjectSPtr result;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
- EXPECT_CALL(mock_application_manager_, GetNextHMICorrelationID())
- .WillOnce(Return(kNextHMICorrelationID));
-
- MessageHelper::SendPolicyUpdate(
- kFilePath, kTimeout, dummy_retries, mock_application_manager_);
-
- ASSERT_TRUE(result.valid());
-
- EXPECT_EQ(hmi_apis::FunctionID::BasicCommunication_PolicyUpdate,
- (*result)[strings::params][strings::function_id].asInt());
-}
-
-TEST_F(MessageHelperTest, SendSystemRequestNotification_SUCCESS) {
- smart_objects::SmartObject result;
- EXPECT_CALL(mock_application_manager_, ManageMobileCommand(_, _))
- .WillOnce(Return(true));
-
- MessageHelper::SendSystemRequestNotification(
- kConnectionKey_, result, mock_application_manager_);
-
- EXPECT_EQ(mobile_apis::FunctionID::OnSystemRequestID,
- result[strings::params][strings::function_id].asInt());
-}
-
-TEST_F(MessageHelperTest, SendShowRequestToHMI_NoApp_UNSUCCESS) {
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_)).Times(0);
-
- ApplicationSharedPtr dummy_app;
- MessageHelper::SendShowRequestToHMI(dummy_app, mock_application_manager_);
-}
-
-TEST_F(MessageHelperTest, SendShowRequestToHMI_SUCCESS) {
- smart_objects::SmartObject dummy_show_command(smart_objects::SmartType_Map);
-
- EXPECT_CALL(*mock_app_, show_command())
- .WillRepeatedly(Return(&dummy_show_command));
-
- smart_objects::SmartObjectSPtr result;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
- EXPECT_CALL(mock_application_manager_, GetNextHMICorrelationID())
- .WillRepeatedly(Return(kNextHMICorrelationID));
-
- MessageHelper::SendShowRequestToHMI(mock_app_, mock_application_manager_);
-
- ASSERT_TRUE(result.valid());
-
- EXPECT_EQ(hmi_apis::FunctionID::UI_Show,
- (*result)[strings::params][strings::function_id].asInt());
-}
-
-TEST_F(MessageHelperTest, SendAddVRCommandToHMI_SUCCESS) {
- const uint32_t kCmdId = 0u;
- const smart_objects::SmartObject kDummyVrCommands;
-
- EXPECT_CALL(*mock_app_, app_id()).WillRepeatedly(Return(kAppId_));
- EXPECT_CALL(*mock_app_, get_grammar_id()).WillRepeatedly(Return(0u));
-
- EXPECT_CALL(mock_application_manager_, application(_))
- .WillRepeatedly(Return(mock_app_));
-
- smart_objects::SmartObjectSPtr result;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
- EXPECT_CALL(mock_application_manager_, GetNextHMICorrelationID())
- .WillRepeatedly(Return(kNextHMICorrelationID));
-
- MessageHelper::SendAddVRCommandToHMI(
- kCmdId, kDummyVrCommands, kAppId_, mock_application_manager_);
-
- ASSERT_TRUE(result.valid());
-
- EXPECT_EQ(hmi_apis::FunctionID::VR_AddCommand,
- (*result)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(kAppId_, (*result)[strings::msg_params][strings::app_id].asUInt());
-}
-
-TEST_F(MessageHelperTest, SendAudioStopStream_SUCCESS) {
- smart_objects::SmartObjectSPtr result;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
- EXPECT_CALL(mock_application_manager_, GetNextHMICorrelationID())
- .WillRepeatedly(Return(kNextHMICorrelationID));
-
- MessageHelper::SendAudioStopStream(kAppId_, mock_application_manager_);
-
- ASSERT_TRUE(result.valid());
-
- EXPECT_EQ(hmi_apis::FunctionID::Navigation_StopAudioStream,
- (*result)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(kAppId_, (*result)[strings::msg_params][strings::app_id].asUInt());
-}
-
-TEST_F(MessageHelperTest, SendGetStatusUpdateResponse_SUCCESS) {
- const uint32_t kCorrelationId = 0u;
- const std::string kStatus("test_status");
-
- smart_objects::SmartObjectSPtr result;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
-
- MessageHelper::SendGetStatusUpdateResponse(
- kStatus, kCorrelationId, mock_application_manager_);
-
- ASSERT_TRUE(result.valid());
-
- EXPECT_EQ(hmi_apis::FunctionID::SDL_GetStatusUpdate,
- (*result)[strings::params][strings::function_id].asInt());
-}
-
-TEST_F(MessageHelperTest,
- SendChangeRegistrationRequestToHMI_NotValidAppPtr_UNSUCCESS) {
- ApplicationSharedPtr app;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_)).Times(0);
-
- MessageHelper::SendChangeRegistrationRequestToHMI(app,
- mock_application_manager_);
-}
-
-TEST_F(MessageHelperTest, SendChangeRegistrationRequestToHMI_SUCCESS) {
- const mobile_api::Language::eType kAppLanguage = mobile_api::Language::RU_RU;
-
- EXPECT_CALL(*mock_app_, app_id()).WillRepeatedly(Return(kAppId_));
- EXPECT_CALL(*mock_app_, language()).WillRepeatedly(ReturnRef(kAppLanguage));
- EXPECT_CALL(*mock_app_, ui_language())
- .WillRepeatedly(ReturnRef(kAppLanguage));
-
- EXPECT_CALL(mock_application_manager_, GetNextHMICorrelationID())
- .WillRepeatedly(Return(kNextHMICorrelationID));
- smart_objects::SmartObjectSPtr vr_command_result;
- smart_objects::SmartObjectSPtr tts_command_result;
- smart_objects::SmartObjectSPtr ui_command_result;
- {
- ::testing::InSequence sequence;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&vr_command_result), Return(true)));
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&tts_command_result), Return(true)));
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&ui_command_result), Return(true)));
- }
- MessageHelper::SendChangeRegistrationRequestToHMI(mock_app_,
- mock_application_manager_);
-
- ASSERT_TRUE(vr_command_result.valid());
- ASSERT_TRUE(tts_command_result.valid());
- ASSERT_TRUE(ui_command_result.valid());
- EXPECT_EQ(
- hmi_apis::FunctionID::VR_ChangeRegistration,
- (*vr_command_result)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(
- hmi_apis::FunctionID::TTS_ChangeRegistration,
- (*tts_command_result)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(
- hmi_apis::FunctionID::UI_ChangeRegistration,
- (*ui_command_result)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(
- kAppId_,
- (*vr_command_result)[strings::msg_params][strings::app_id].asBool());
- EXPECT_EQ(
- kAppId_,
- (*tts_command_result)[strings::msg_params][strings::app_id].asBool());
- EXPECT_EQ(
- kAppId_,
- (*ui_command_result)[strings::msg_params][strings::app_id].asBool());
-}
-
-TEST_F(MessageHelperTest, SendAddSubMenuRequestToHMI_NoApp_UNSUCCESS) {
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_)).Times(0);
-
- ApplicationSharedPtr dummy_app;
- MessageHelper::SendAddSubMenuRequestToHMI(dummy_app,
- mock_application_manager_);
-}
-
-TEST_F(MessageHelperTest, SendAddSubMenuRequestToHMI_SUCCESS) {
- SubMenuMap commands_map;
- smart_objects::SmartObject command(smart_objects::SmartType_Map);
- commands_map.insert(SubMenuMap::value_type(0u, &command));
-
- EXPECT_CALL(*mock_app_, app_id()).WillRepeatedly(Return(kAppId_));
- EXPECT_CALL(*mock_app_, sub_menu_map())
- .WillRepeatedly(Return(DataAccessor<SubMenuMap>(commands_map, lock_)));
-
- smart_objects::SmartObjectSPtr result;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
- EXPECT_CALL(mock_application_manager_, GetNextHMICorrelationID())
- .WillOnce(Return(kNextHMICorrelationID));
-
- MessageHelper::SendAddSubMenuRequestToHMI(mock_app_,
- mock_application_manager_);
-
- ASSERT_TRUE(result.valid());
-
- EXPECT_EQ(hmi_apis::FunctionID::UI_AddSubMenu,
- (*result)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(kAppId_, (*result)[strings::msg_params][strings::app_id].asUInt());
-}
-
-TEST_F(MessageHelperTest,
- SendAllOnButtonSubscriptionNotificationsForApp_NoApp_UNSUCCESS) {
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_)).Times(0);
-
- ApplicationSharedPtr dummy_app;
- MessageHelper::SendAllOnButtonSubscriptionNotificationsForApp(
- dummy_app, mock_application_manager_);
-}
-
-TEST_F(MessageHelperTest,
- SendAllOnButtonSubscriptionNotificationsForApp_SUCCESS) {
- EXPECT_CALL(*mock_app_, hmi_app_id()).WillRepeatedly(Return(kAppId_));
-
- ButtonSubscriptions subscribed_buttons;
- subscribed_buttons.insert(mobile_apis::ButtonName::CUSTOM_BUTTON);
-
- EXPECT_CALL(*mock_app_, SubscribedButtons())
- .WillRepeatedly(
- Return(DataAccessor<ButtonSubscriptions>(subscribed_buttons, lock_)));
-
- smart_objects::SmartObjectSPtr result;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
-
- MessageHelper::SendAllOnButtonSubscriptionNotificationsForApp(
- mock_app_, mock_application_manager_);
-
- ASSERT_TRUE(result.valid());
-
- EXPECT_EQ(hmi_apis::FunctionID::Buttons_OnButtonSubscription,
- (*result)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(kAppId_, (*result)[strings::msg_params][strings::app_id].asUInt());
-}
-
-TEST_F(MessageHelperTest, SendAudioStartStream_SUCCESS) {
- MockApplicationManagerSettings app_mngr_settings;
-
- EXPECT_CALL(mock_application_manager_, get_settings())
- .WillRepeatedly(ReturnRef(app_mngr_settings));
-
- const std::string kAudioServerType("test_audio_server_type");
- EXPECT_CALL(app_mngr_settings, audio_server_type())
- .WillRepeatedly(ReturnRef(kAudioServerType));
-
- const std::string kAudioStreamFile("test_audio_stream_file");
- EXPECT_CALL(app_mngr_settings, audio_stream_file())
- .WillRepeatedly(ReturnRef(kAudioStreamFile));
-
- smart_objects::SmartObjectSPtr result;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
- EXPECT_CALL(mock_application_manager_, GetNextHMICorrelationID())
- .WillOnce(Return(kNextHMICorrelationID));
-
- MessageHelper::SendAudioStartStream(kAppId_, mock_application_manager_);
-
- ASSERT_TRUE(result.valid());
-
- EXPECT_EQ(hmi_apis::FunctionID::Navigation_StartAudioStream,
- (*result)[strings::params][strings::function_id].asInt());
- EXPECT_EQ(kAppId_, (*result)[strings::msg_params][strings::app_id].asUInt());
-}
-
-TEST_F(MessageHelperTest, SendGetListOfPermissionsResponse_SUCCESS) {
- std::vector<policy::FunctionalGroupPermission> permissions;
- policy::CCSStatus ccs_status;
- policy::FunctionalGroupPermission permission;
- permission.state = policy::GroupConsent::kGroupAllowed;
- permissions.push_back(permission);
-
- smart_objects::SmartObjectSPtr result;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
-
- const uint32_t kCorrelationId = 0u;
- MessageHelper::SendGetListOfPermissionsResponse(
- permissions, ccs_status, kCorrelationId, mock_application_manager_);
-
- ASSERT_TRUE(result.valid());
-
- EXPECT_EQ(hmi_apis::FunctionID::SDL_GetListOfPermissions,
- (*result)[strings::params][strings::function_id].asInt());
-
- smart_objects::SmartObject& msg_params = (*result)[strings::msg_params];
- const std::string ccs_status_key = "ccsStatus";
- EXPECT_TRUE(msg_params.keyExists(ccs_status_key));
- EXPECT_TRUE(msg_params[ccs_status_key].empty());
+ message_params, appSharedPtr, function_id);
}
TEST_F(MessageHelperTest,
- SendGetListOfPermissionsResponse_CCSStatusNonEmpty_SUCCESS) {
- using namespace policy;
- using namespace smart_objects;
-
+ SendGetListOfPermissionsResponse_ExternalConsentStatusNonEmpty_SUCCESS) {
std::vector<policy::FunctionalGroupPermission> permissions;
- CCSStatus ccs_status;
+ policy::ExternalConsentStatus external_consent_status;
const int32_t entity_type_1 = 1;
const int32_t entity_id_1 = 2;
- const EntityStatus entity_status_1 = kStatusOn;
+ const policy::EntityStatus entity_status_1 = policy::kStatusOn;
+ const policy::EntityStatus entity_status_2 = policy::kStatusOff;
const int32_t entity_type_2 = 3;
const int32_t entity_id_2 = 4;
- const EntityStatus entity_status_2 = kStatusOff;
- ccs_status.insert(CCSStatusItem(entity_type_1, entity_id_1, entity_status_1));
- ccs_status.insert(CCSStatusItem(entity_type_2, entity_id_2, entity_status_2));
+ external_consent_status.insert(policy::ExternalConsentStatusItem(
+ entity_type_1, entity_id_1, entity_status_1));
+ external_consent_status.insert(policy::ExternalConsentStatusItem(
+ entity_type_2, entity_id_2, entity_status_2));
- SmartObjectSPtr result;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
+ smart_objects::SmartObjectSPtr result;
+ EXPECT_CALL(mock_application_manager, ManageHMICommand(_))
.WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
const uint32_t correlation_id = 0u;
- MessageHelper::SendGetListOfPermissionsResponse(
- permissions, ccs_status, correlation_id, mock_application_manager_);
+ MessageHelper::SendGetListOfPermissionsResponse(permissions,
+ external_consent_status,
+ correlation_id,
+ mock_application_manager);
- ASSERT_TRUE(result.valid());
+ ASSERT_TRUE(result);
- SmartObject& msg_params = (*result)[strings::msg_params];
- const std::string ccs_status_key = "ccsStatus";
- EXPECT_TRUE(msg_params.keyExists(ccs_status_key));
+ smart_objects::SmartObject& msg_params = (*result)[strings::msg_params];
+ const std::string external_consent_status_key = "externalConsentStatus";
+ EXPECT_TRUE(msg_params.keyExists(external_consent_status_key));
- SmartArray* status_array = msg_params[ccs_status_key].asArray();
- EXPECT_TRUE(ccs_status.size() == status_array->size());
+ smart_objects::SmartArray* status_array =
+ msg_params[external_consent_status_key].asArray();
+ EXPECT_TRUE(external_consent_status.size() == status_array->size());
const std::string entityType = "entityType";
const std::string entityID = "entityID";
const std::string status = "status";
- SmartObject item_1_so = SmartObject(SmartType_Map);
+
+ smart_objects::SmartObject item_1_so =
+ smart_objects::SmartObject(smart_objects::SmartType_Map);
item_1_so[entityType] = entity_type_1;
item_1_so[entityID] = entity_id_1;
item_1_so[status] = hmi_apis::Common_EntityStatus::ON;
- SmartObject item_2_so = SmartObject(SmartType_Map);
+ smart_objects::SmartObject item_2_so =
+ smart_objects::SmartObject(smart_objects::SmartType_Map);
item_2_so[entityType] = entity_type_2;
item_2_so[entityID] = entity_id_2;
item_2_so[status] = hmi_apis::Common_EntityStatus::OFF;
@@ -1853,310 +967,7 @@ TEST_F(MessageHelperTest,
EXPECT_TRUE(status_array->end() !=
std::find(status_array->begin(), status_array->end(), item_2_so));
}
-
-TEST_F(MessageHelperTest,
- SendGetSystemInfoRequest_ExpectSendCorrectMessageToHMI) {
- EXPECT_CALL(mock_application_manager_, GetNextHMICorrelationID())
- .WillOnce(Return(kCorrelationId));
- smart_objects::SmartObjectSPtr result;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
-
- MessageHelper::SendGetSystemInfoRequest(mock_application_manager_);
-
- ASSERT_TRUE(result.valid());
- EXPECT_EQ(hmi_apis::FunctionID::BasicCommunication_GetSystemInfo,
- (*result)[strings::params][strings::function_id].asInt());
- CheckParamsOfMessage(result, false, true);
-}
-
-TEST_F(
- MessageHelperTest,
- SendGetUserFriendlyMessageResponseWithEmptyMessages_ExpectSendCorrectMessageToHMI) {
- std::vector<policy::UserFriendlyMessage> msg;
- CheckSendingGetUserFriendlyMessage(msg);
-}
-
-TEST_F(
- MessageHelperTest,
- SendGetUserFriendlyMessageResponseWithMessages_ExpectSendCorrectMessageToHMI) {
- policy::UserFriendlyMessage arr[] = {
- {"first_code"}, {"second_code"}, {"third_code"}};
- std::vector<policy::UserFriendlyMessage> msg(arr, arr + 3);
- CheckSendingGetUserFriendlyMessage(msg);
-}
-
-TEST_F(MessageHelperTest,
- SendGlobalPropertiesToHMIApplicationIsNotValid_ExpectReturnFromMethod) {
- MockApplicationSharedPtr mock_app;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_)).Times(0);
- MessageHelper::SendGlobalPropertiesToHMI(mock_app, mock_application_manager_);
-}
-
-TEST_F(
- MessageHelperTest,
- SendGlobalPropertiesToHMIWithUIGlobalProperties_ExpectSendCorrectMessageToHMI) {
- const uint8_t number_msg_params = 6;
- EXPECT_CALL(mock_application_manager_, GetNextHMICorrelationID())
- .WillOnce(Return(kCorrelationId));
- smart_objects::SmartObject dummy_so(smart_objects::SmartType_Map);
- dummy_so["dummy_param"] = "dummy_param";
- EXPECT_CALL(*mock_app_, vr_help_title())
- .Times(3)
- .WillRepeatedly(Return(&dummy_so));
- EXPECT_CALL(*mock_app_, vr_help()).Times(2).WillRepeatedly(Return(&dummy_so));
- EXPECT_CALL(*mock_app_, keyboard_props())
- .Times(2)
- .WillRepeatedly(Return(&dummy_so));
- EXPECT_CALL(*mock_app_, menu_title())
- .Times(2)
- .WillRepeatedly(Return(&dummy_so));
- EXPECT_CALL(*mock_app_, menu_icon())
- .Times(2)
- .WillRepeatedly(Return(&dummy_so));
- EXPECT_CALL(*mock_app_, app_id()).WillOnce(Return(kAppId));
- EXPECT_CALL(*mock_app_, help_prompt())
- .WillOnce(Return(static_cast<smart_objects::SmartObject*>(NULL)));
- EXPECT_CALL(*mock_app_, timeout_prompt())
- .WillOnce(Return(static_cast<smart_objects::SmartObject*>(NULL)));
-
- smart_objects::SmartObjectSPtr result;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
- MessageHelper::SendGlobalPropertiesToHMI(mock_app_,
- mock_application_manager_);
-
- ASSERT_TRUE(result.valid());
- smart_objects::SmartObject& global_properties_msg_params =
- (*result)[strings::msg_params];
-
- EXPECT_EQ((*result)[strings::params][strings::function_id].asInt(),
- hmi_apis::FunctionID::UI_SetGlobalProperties);
- CheckParamsOfMessage(result, true, true);
-
- EXPECT_EQ(global_properties_msg_params.length(), number_msg_params);
- EXPECT_TRUE(global_properties_msg_params.keyExists(strings::vr_help_title));
- EXPECT_TRUE(global_properties_msg_params.keyExists(strings::vr_help));
- EXPECT_TRUE(
- global_properties_msg_params.keyExists(strings::keyboard_properties));
- EXPECT_TRUE(global_properties_msg_params.keyExists(strings::menu_title));
- EXPECT_TRUE(global_properties_msg_params.keyExists(strings::menu_icon));
- std::set<std::string> keys = global_properties_msg_params.enumerate();
- keys.erase(strings::app_id);
- for (std::set<std::string>::iterator it = keys.begin(); it != keys.end();
- ++it) {
- EXPECT_TRUE(global_properties_msg_params[(*it)] == dummy_so);
- }
-}
-
-TEST_F(
- MessageHelperTest,
- SendGlobalPropertiesToHMIWithTTSGlobalProperties_ExpectSendCorrectMessageToHMI) {
- const uint8_t number_msg_params = 3;
- EXPECT_CALL(mock_application_manager_, GetNextHMICorrelationID())
- .WillOnce(Return(kCorrelationId));
- smart_objects::SmartObject dummy_so(smart_objects::SmartType_Map);
- dummy_so["dummy_param"] = "dummy_param";
- EXPECT_CALL(*mock_app_, vr_help_title())
- .WillOnce(Return(static_cast<smart_objects::SmartObject*>(NULL)));
- EXPECT_CALL(*mock_app_, vr_help())
- .WillOnce(Return(static_cast<smart_objects::SmartObject*>(NULL)));
- EXPECT_CALL(*mock_app_, help_prompt())
- .Times(3)
- .WillRepeatedly(Return(&dummy_so));
- EXPECT_CALL(*mock_app_, timeout_prompt())
- .Times(2)
- .WillRepeatedly(Return(&dummy_so));
- EXPECT_CALL(*mock_app_, app_id()).WillOnce(Return(kAppId));
-
- smart_objects::SmartObjectSPtr result;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
- MessageHelper::SendGlobalPropertiesToHMI(mock_app_,
- mock_application_manager_);
-
- ASSERT_TRUE(result.valid());
- smart_objects::SmartObject& global_properties_msg_params =
- (*result)[strings::msg_params];
-
- EXPECT_EQ((*result)[strings::params][strings::function_id].asInt(),
- hmi_apis::FunctionID::TTS_SetGlobalProperties);
- CheckParamsOfMessage(result, true, true);
- EXPECT_EQ(global_properties_msg_params.length(), number_msg_params);
- EXPECT_TRUE(global_properties_msg_params.keyExists(strings::help_prompt));
- EXPECT_TRUE(global_properties_msg_params.keyExists(strings::timeout_prompt));
- std::set<std::string> keys = global_properties_msg_params.enumerate();
- keys.erase(strings::app_id);
- for (std::set<std::string>::iterator it = keys.begin(); it != keys.end();
- ++it) {
- EXPECT_TRUE(global_properties_msg_params[(*it)] == dummy_so);
- }
-}
-
-TEST_F(MessageHelperTest,
- SendHashUpdateNotificationApplicationIsNotValid_ExpectReturnFromMethod) {
- MockApplicationSharedPtr mock_app;
- EXPECT_CALL(mock_application_manager_, application(_))
- .WillOnce(Return(mock_app));
- EXPECT_CALL(mock_application_manager_, ManageMobileCommand(_, _)).Times(0);
- MessageHelper::SendHashUpdateNotification(kAppId, mock_application_manager_);
-}
-
-TEST_F(MessageHelperTest,
- SendHashUpdateNotification_ExpectSendCorrectMessageToMobile) {
- resumption::MockResumeCtrl mock_resume_ctrl;
- EXPECT_CALL(mock_application_manager_, application(_))
- .WillOnce(Return(mock_app_));
- smart_objects::SmartObjectSPtr result;
- EXPECT_CALL(mock_application_manager_, ManageMobileCommand(_, _))
- .WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
- EXPECT_CALL(mock_application_manager_, resume_controller())
- .WillOnce(ReturnRef(mock_resume_ctrl));
- EXPECT_CALL(mock_resume_ctrl, ApplicationsDataUpdated()).Times(1);
- MessageHelper::SendHashUpdateNotification(kAppId, mock_application_manager_);
- ASSERT_TRUE(result.valid());
- EXPECT_EQ((*result)[strings::params][strings::function_id].asInt(),
- mobile_apis::FunctionID::OnHashChangeID);
- EXPECT_EQ((*result)[strings::params][strings::connection_key].asInt(),
- kAppId);
-}
-
-TEST_F(MessageHelperTest, SendNaviStartStream_ExpectSendCorrectMessageToHMI) {
- uint16_t video_streaming_port = 8080;
- CheckParametersNaviStartStreamMessage(
- "http://127.0.0.1:8080", "socket", "127.0.0.1", video_streaming_port);
- CheckParametersNaviStartStreamMessage("pipe_name", "pipe", "pipe_name");
- CheckParametersNaviStartStreamMessage("file_name", "file", "file_name");
-}
-
-TEST_F(MessageHelperTest, SendNaviStopStream_ExpectSendCorrectMessageToHMI) {
- smart_objects::SmartObjectSPtr result;
- EXPECT_CALL(mock_application_manager_, GetNextHMICorrelationID())
- .WillOnce(Return(kCorrelationId));
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
- MessageHelper::SendNaviStopStream(kAppId, mock_application_manager_);
-
- ASSERT_TRUE(result.valid());
- EXPECT_TRUE((*result)[strings::params].keyExists(strings::function_id));
- EXPECT_EQ((*result)[strings::params][strings::function_id].asInt(),
- hmi_apis::FunctionID::Navigation_StopStream);
- CheckParamsOfMessage(result, true, true);
-}
-
-TEST_F(MessageHelperTest,
- SendOnAppPermissionsChangedNotification_ExpectSendCorrectMessageToHMI) {
- std::string policy_app_id("policyappid");
- policy::AppPermissions dummy_permissions(policy_app_id);
- dummy_permissions.appRevoked = true;
- dummy_permissions.isAppPermissionsRevoked = true;
- std::vector<policy::FunctionalGroupPermission> functional_group_permissions;
- policy::FunctionalGroupPermission obj;
- FillFunctionalGroupPermissionObj(obj,
- "group_alias1",
- "group_name1",
- 1,
- policy::GroupConsent::kGroupAllowed);
- functional_group_permissions.push_back(obj);
- FillFunctionalGroupPermissionObj(obj,
- "group_alias2",
- "group_name2",
- 2,
- policy::GroupConsent::kGroupDisallowed);
- functional_group_permissions.push_back(obj);
- FillFunctionalGroupPermissionObj(obj,
- "group_alias3",
- "group_name3",
- 3,
- policy::GroupConsent::kGroupUndefined);
- dummy_permissions.appRevokedPermissions = functional_group_permissions;
- dummy_permissions.appPermissionsConsentNeeded = true;
- dummy_permissions.appUnauthorized = true;
- dummy_permissions.priority = "NORMAL";
- dummy_permissions.requestTypeChanged = true;
- std::vector<std::string> request_type(3, "dummy");
- dummy_permissions.requestType = request_type;
- smart_objects::SmartObjectSPtr result;
- EXPECT_CALL(mock_application_manager_, ManageHMICommand(_))
- .WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
- MessageHelper::SendOnAppPermissionsChangedNotification(
- kAppId, dummy_permissions, mock_application_manager_);
- ASSERT_TRUE(result.valid());
- EXPECT_TRUE((*result)[strings::params].keyExists(strings::function_id));
- EXPECT_EQ((*result)[strings::params][strings::function_id].asInt(),
- hmi_apis::FunctionID::SDL_OnAppPermissionChanged);
- CheckParamsOfMessage(result, true, false);
- uint16_t number_msg_params = 8;
- std::string app_revoked("appRevoked");
- std::string is_app_permissions_revoked("isAppPermissionsRevoked");
- std::string app_revoked_permissions("appRevokedPermissions");
- std::string allowed("allowed");
- std::string name("name");
- std::string id("id");
-
- EXPECT_EQ((*result)[strings::msg_params].length(), number_msg_params);
- EXPECT_TRUE((*result)[strings::msg_params].keyExists(app_revoked));
- EXPECT_TRUE((*result)[strings::msg_params][app_revoked].asBool());
- EXPECT_TRUE(
- (*result)[strings::msg_params].keyExists(is_app_permissions_revoked));
- EXPECT_TRUE(
- (*result)[strings::msg_params][is_app_permissions_revoked].asBool());
- EXPECT_TRUE(
- (*result)[strings::msg_params].keyExists(app_revoked_permissions));
- EXPECT_TRUE(
- ((*result)[strings::msg_params][app_revoked_permissions].length() ==
- functional_group_permissions.size()));
- uint16_t number_revoked_params = 3;
- uint16_t number_revoked_params_without_allowed = 2;
- smart_objects::SmartObject& revoked_items =
- (*result)[strings::msg_params][app_revoked_permissions];
- for (uint16_t i = 0; i < revoked_items.length(); ++i) {
- if (policy::GroupConsent::kGroupUndefined ==
- functional_group_permissions[i].state) {
- EXPECT_TRUE(revoked_items[i].length() ==
- number_revoked_params_without_allowed);
- EXPECT_FALSE(revoked_items[i].keyExists(allowed));
- } else {
- EXPECT_TRUE(revoked_items[i].length() == number_revoked_params);
- EXPECT_TRUE(revoked_items[i].keyExists(allowed));
- if (policy::kGroupAllowed == functional_group_permissions[i].state) {
- EXPECT_TRUE(revoked_items[i][allowed].asBool());
- } else {
- EXPECT_FALSE(revoked_items[i][allowed].asBool());
- }
- }
- EXPECT_TRUE(revoked_items[i].keyExists(name));
- EXPECT_TRUE(revoked_items[i][name].asString() ==
- functional_group_permissions[i].group_alias);
- EXPECT_TRUE(revoked_items[i].keyExists(id));
- EXPECT_TRUE(revoked_items[i][id].asInt() ==
- functional_group_permissions[i].group_id);
- }
-
- std::string app_permissions_consent_needed("appPermissionsConsentNeeded");
- std::string app_unauthorized("appUnauthorized");
- std::string priority("priority");
- EXPECT_TRUE(
- (*result)[strings::msg_params].keyExists(app_permissions_consent_needed));
- EXPECT_TRUE(
- (*result)[strings::msg_params][app_permissions_consent_needed].asBool());
- EXPECT_TRUE((*result)[strings::msg_params].keyExists(app_unauthorized));
- EXPECT_TRUE((*result)[strings::msg_params][app_unauthorized].asBool());
- EXPECT_TRUE((*result)[strings::msg_params].keyExists(priority));
- EXPECT_EQ((*result)[strings::msg_params][priority].asInt(),
- hmi_apis::Common_AppPriority::NORMAL);
- EXPECT_TRUE((*result)[strings::msg_params].keyExists(strings::request_type));
- smart_objects::SmartObject& request_types_array =
- (*result)[strings::msg_params][strings::request_type];
- EXPECT_TRUE(request_types_array.length() ==
- dummy_permissions.requestType.size());
- for (uint16_t i = 0; i < request_types_array.length(); ++i) {
- EXPECT_TRUE(request_types_array[i].asString() ==
- dummy_permissions.requestType[i]);
- }
->>>>>>> d63b94c... Changes CCS item implementation in order to support status as boolean
-}
-
+#endif
} // namespace application_manager_test
} // namespace components
} // namespace test
diff --git a/src/components/application_manager/test/mock_message_helper.cc b/src/components/application_manager/test/mock_message_helper.cc
index 84b672e1a5..01ce9cb066 100644
--- a/src/components/application_manager/test/mock_message_helper.cc
+++ b/src/components/application_manager/test/mock_message_helper.cc
@@ -173,10 +173,18 @@ void MessageHelper::CreateGetVehicleDataRequest(
void MessageHelper::SendGetListOfPermissionsResponse(
const std::vector<policy::FunctionalGroupPermission>& permissions,
+#ifdef EXTERNAL_PROPRIETARY_MODE
+ const policy::ExternalConsentStatus& external_consent_status,
+#endif // EXTERNAL_PROPRIETARY_MODE
uint32_t correlation_id,
ApplicationManager& app_mngr) {
MockMessageHelper::message_helper_mock()->SendGetListOfPermissionsResponse(
- permissions, correlation_id, app_mngr);
+ permissions,
+#ifdef EXTERNAL_PROPRIETARY_MODE
+ external_consent_status,
+#endif // EXTERNAL_PROPRIETARY_MODE
+ correlation_id,
+ app_mngr);
}
void MessageHelper::SendOnPermissionsChangeNotification(
@@ -459,4 +467,10 @@ std::string MessageHelper::StringifiedHMILevel(
hmi_level);
}
+std::string MessageHelper::GetDeviceMacAddressForHandle(
+ const uint32_t device_handle, const ApplicationManager& app_mngr) {
+ return MockMessageHelper::message_helper_mock()->GetDeviceMacAddressForHandle(
+ device_handle, app_mngr);
+}
+
} // namespace application_manager
diff --git a/src/components/application_manager/test/policy_handler_test.cc b/src/components/application_manager/test/policy_handler_test.cc
index 70c2f77dfb..a4f3354b79 100644
--- a/src/components/application_manager/test/policy_handler_test.cc
+++ b/src/components/application_manager/test/policy_handler_test.cc
@@ -36,7 +36,7 @@
#include "gmock/gmock.h"
#include "application_manager/policies/policy_handler.h"
-#include "policy/mock_policy_manager.h"
+#include "application_manager/policies/delegates/app_permission_delegate.h"
#include "connection_handler/connection_handler_impl.h"
#include "application_manager/application_manager_impl.h"
#include "application_manager/application_impl.h"
@@ -67,6 +67,8 @@
#include "application_manager/mock_event_dispatcher.h"
#include "application_manager/mock_state_controller.h"
#include "application_manager/mock_hmi_capabilities.h"
+#include "policy/mock_policy_manager.h"
+#include "policy/usage_statistics/mock_statistics_manager.h"
namespace test {
namespace components {
@@ -76,6 +78,7 @@ using namespace application_manager;
using namespace policy;
using namespace utils::custom_string;
using testing::_;
+using ::testing::Mock;
using ::testing::Return;
using ::testing::ReturnRef;
using ::testing::NiceMock;
@@ -91,7 +94,6 @@ class PolicyHandlerTest : public ::testing::Test {
public:
PolicyHandlerTest()
: policy_handler_(policy_settings_, app_manager_)
- , mock_message_helper_(*MockMessageHelper::message_helper_mock())
, kPolicyAppId_("fake_app_id")
, kMacAddr_("kMacAddr_ess")
, kDeviceId_("fake_device_id")
@@ -102,9 +104,19 @@ class PolicyHandlerTest : public ::testing::Test {
, kPreloadPTFile_("sdl_preloaded_pt.json")
, kAppStorageFolder_("storage")
, app_set(test_app, app_lock)
- , kAppId_(10u)
+ , kAppId1_(10u)
+ , kAppId2_(11u)
+ , kConnectionKey_(1u)
+ , kCorrelationKey_(2u)
, kSnapshotFile_("snapshot")
- , kSnapshotStorage_("snapshot_storage") {
+ , kSnapshotStorage_("snapshot_storage")
+ , kGroupAliasAllowed_("allowed")
+ , kGroupAliasDisallowed_("disallowed")
+ , kGroupNameAllowed_("name_allowed")
+ , kGroupNameDisallowed_("name_disallowed")
+ , kCallsCount_(1u)
+ , kTimeout_(1000u)
+ , mock_message_helper_(*MockMessageHelper::message_helper_mock()) {
Mock::VerifyAndClearExpectations(&mock_message_helper_);
}
@@ -120,11 +132,11 @@ class PolicyHandlerTest : public ::testing::Test {
connection_handler_test::MockConnectionHandler conn_handler;
protocol_handler_test::MockSessionObserver mock_session_observer;
application_manager_test::MockStateController mock_state_controller;
+ components::usage_statistics_test::MockStatisticsManager
+ mock_statistics_manager_;
PolicyHandler policy_handler_;
utils::SharedPtr<policy_manager_test::MockPolicyManager> mock_policy_manager_;
application_manager_test::MockApplicationManager app_manager_;
- MockMessageHelper& mock_message_helper_;
- application_manager_test::MockHMICapabilities mock_hmi_capabilities_;
const std::string kPolicyAppId_;
const std::string kMacAddr_;
const std::string kDeviceId_;
@@ -137,9 +149,19 @@ class PolicyHandlerTest : public ::testing::Test {
ApplicationSet test_app;
sync_primitives::Lock app_lock;
DataAccessor<ApplicationSet> app_set;
- const uint32_t kAppId_;
+ const uint32_t kAppId1_;
+ const uint32_t kAppId2_;
+ const uint32_t kConnectionKey_;
+ const uint32_t kCorrelationKey_;
const std::string kSnapshotFile_;
const std::string kSnapshotStorage_;
+ const std::string kGroupAliasAllowed_;
+ const std::string kGroupAliasDisallowed_;
+ const std::string kGroupNameAllowed_;
+ const std::string kGroupNameDisallowed_;
+ const uint32_t kCallsCount_;
+ const uint32_t kTimeout_;
+ application_manager::MockMessageHelper& mock_message_helper_;
virtual void SetUp() OVERRIDE {
Mock::VerifyAndClearExpectations(&mock_message_helper_);
@@ -162,6 +184,7 @@ class PolicyHandlerTest : public ::testing::Test {
}
virtual void TearDown() OVERRIDE {
+ Mock::VerifyAndClearExpectations(&mock_message_helper_);
ON_CALL(mock_event_dispatcher_, remove_observer(_, _));
}
@@ -203,8 +226,77 @@ class PolicyHandlerTest : public ::testing::Test {
#endif // PROPRIETARY_MODE
EXPECT_CALL(mock_message_helper_, SendPolicyUpdate(_, _, _, _));
}
+
+ void TestOnPermissionsUpdated(const std::string& default_hmi_level,
+ const mobile_apis::HMILevel::eType hmi_level) {
+ EXPECT_CALL(app_manager_, application_by_policy_id(kPolicyAppId_))
+ .WillRepeatedly(Return(mock_app_));
+ EXPECT_CALL(*mock_app_, app_id()).WillRepeatedly(Return(kAppId1_));
+ EXPECT_CALL(*mock_app_, hmi_level())
+ .WillOnce(Return(mobile_apis::HMILevel::HMI_NONE));
+
+ EXPECT_CALL(mock_message_helper_, StringToHMILevel(default_hmi_level))
+ .WillOnce(Return(hmi_level));
+ EXPECT_CALL(mock_message_helper_,
+ SendOnPermissionsChangeNotification(kAppId1_, _, _));
+ EXPECT_CALL(app_manager_, state_controller()).Times(0);
+
+ Permissions permissions;
+ policy_handler_.OnPermissionsUpdated(
+ kPolicyAppId_, permissions, default_hmi_level);
+ }
+
+ void CreateFunctionalGroupPermission(
+ const GroupConsent state,
+ const std::string& group_alias,
+ const std::string& group_name,
+ policy::FunctionalGroupPermission& group_permission) {
+ group_permission.state = state;
+ group_permission.group_alias = group_alias;
+ group_permission.group_name = group_name;
+ }
+
+ policy_table::AppHmiTypes HmiTypes(const policy_table::AppHMIType hmi_type) {
+ policy_table::AppHmiTypes hmi_types;
+ hmi_types.push_back(hmi_type);
+ return hmi_types;
+ }
};
+namespace {
+/**
+ * @brief The WaitAsync class
+ * can wait for a certain amount of function calls from different
+ * threads, or a timeout expires.
+ */
+class WaitAsync {
+ public:
+ WaitAsync(const uint32_t count, const uint32_t timeout)
+ : count_(count), timeout_(timeout) {}
+
+ void Notify() {
+ count_--;
+ cond_var_.NotifyOne();
+ }
+
+ bool Wait(sync_primitives::AutoLock& auto_lock) {
+ while (count_ > 0) {
+ sync_primitives::ConditionalVariable::WaitStatus wait_status =
+ cond_var_.WaitFor(auto_lock, timeout_);
+ if (wait_status == sync_primitives::ConditionalVariable::kTimeout) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private:
+ int count_;
+ const uint32_t timeout_;
+ sync_primitives::ConditionalVariable cond_var_;
+};
+}
+
TEST_F(PolicyHandlerTest, LoadPolicyLibrary_Method_ExpectLibraryLoaded) {
// Check before policy enabled from ini file
EXPECT_CALL(policy_settings_, enable_policy()).WillRepeatedly(Return(false));
@@ -335,33 +427,66 @@ TEST_F(PolicyHandlerTest, UnloadPolicyLibrary_method_ExpectLibraryUnloaded) {
TEST_F(PolicyHandlerTest, OnPermissionsUpdated_method_With2Parameters) {
// Check expectations
- EXPECT_CALL(app_manager_, application_by_policy_id(_))
+ EXPECT_CALL(app_manager_, application_by_policy_id(kPolicyAppId_))
.WillOnce(Return(mock_app_));
- EXPECT_CALL(*mock_app_, app_id()).WillOnce(Return(kAppId_));
+ EXPECT_CALL(*mock_app_, app_id()).WillOnce(Return(kAppId1_));
EXPECT_CALL(mock_message_helper_,
- SendOnPermissionsChangeNotification(kAppId_, _, _));
+ SendOnPermissionsChangeNotification(kAppId1_, _, _));
// Act
Permissions perms;
policy_handler_.OnPermissionsUpdated(kPolicyAppId_, perms);
}
+TEST_F(PolicyHandlerTest, OnPermissionsUpdated_TwoParams_InvalidApp_UNSUCCESS) {
+ utils::SharedPtr<application_manager_test::MockApplication> invalid_app;
+ EXPECT_CALL(app_manager_, application_by_policy_id(kPolicyAppId_))
+ .WillOnce(Return(invalid_app));
+ EXPECT_CALL(mock_message_helper_,
+ SendOnPermissionsChangeNotification(_, _, _)).Times(0);
+
+ Permissions permissions;
+ policy_handler_.OnPermissionsUpdated(kPolicyAppId_, permissions);
+}
+
+TEST_F(PolicyHandlerTest, OnPermissionsUpdated_InvalidApp_UNSUCCESS) {
+ utils::SharedPtr<application_manager_test::MockApplication> invalid_app;
+ EXPECT_CALL(app_manager_, application_by_policy_id(kPolicyAppId_))
+ .WillOnce(Return(mock_app_))
+ .WillOnce(Return(invalid_app));
+ EXPECT_CALL(*mock_app_, app_id()).WillOnce(Return(kAppId1_));
+ EXPECT_CALL(mock_message_helper_,
+ SendOnPermissionsChangeNotification(kAppId1_, _, _));
+
+ Permissions permissions;
+ policy_handler_.OnPermissionsUpdated(kPolicyAppId_, permissions, "HMI_FULL");
+}
+
+TEST_F(PolicyHandlerTest, OnPermissionsUpdated_HmiLevelInvalidEnum_UNSUCCESS) {
+ TestOnPermissionsUpdated("INVALID_ENUM", mobile_apis::HMILevel::INVALID_ENUM);
+}
+
+TEST_F(PolicyHandlerTest,
+ OnPermissionsUpdated_HmiLevelEqualsToCurrentHmiLevel_UNSUCCESS) {
+ TestOnPermissionsUpdated("HMI_NONE", mobile_apis::HMILevel::HMI_NONE);
+}
+
TEST_F(PolicyHandlerTest,
OnPermissionsUpdated_MethodWith3Parameters_FromNONE_ToFULL) {
// Set hmi level from NONE to FULL
const std::string new_kHmiLevel_string = "HMI_FULL";
mobile_apis::HMILevel::eType new_hmi_level = mobile_apis::HMILevel::HMI_FULL;
// Check expectations
- EXPECT_CALL(app_manager_, application_by_policy_id(_))
+ EXPECT_CALL(app_manager_, application_by_policy_id(kPolicyAppId_))
.Times(2)
.WillRepeatedly(Return(mock_app_));
- EXPECT_CALL(*mock_app_, app_id()).WillOnce(Return(kAppId_));
+ EXPECT_CALL(*mock_app_, app_id()).WillOnce(Return(kAppId1_));
EXPECT_CALL(mock_message_helper_, StringToHMILevel(new_kHmiLevel_string))
.WillOnce(Return(new_hmi_level));
EXPECT_CALL(*mock_app_, hmi_level())
.WillOnce(Return(mobile_apis::HMILevel::HMI_NONE));
EXPECT_CALL(mock_message_helper_,
- SendOnPermissionsChangeNotification(kAppId_, _, _));
+ SendOnPermissionsChangeNotification(kAppId1_, _, _));
EXPECT_CALL(app_manager_, state_controller())
.WillRepeatedly(ReturnRef(mock_state_controller));
@@ -379,17 +504,17 @@ TEST_F(PolicyHandlerTest,
mobile_apis::HMILevel::eType new_hmi_level =
mobile_apis::HMILevel::HMI_LIMITED;
// Check expectations
- EXPECT_CALL(app_manager_, application_by_policy_id(_))
+ EXPECT_CALL(app_manager_, application_by_policy_id(kPolicyAppId_))
.Times(2)
.WillRepeatedly(Return(mock_app_));
- EXPECT_CALL(*mock_app_, app_id()).WillOnce(Return(kAppId_));
+ EXPECT_CALL(*mock_app_, app_id()).WillOnce(Return(kAppId1_));
EXPECT_CALL(mock_message_helper_, StringToHMILevel(new_kHmiLevel_string))
.WillOnce(Return(new_hmi_level));
EXPECT_CALL(*mock_app_, hmi_level())
.WillOnce(Return(mobile_apis::HMILevel::HMI_NONE));
EXPECT_CALL(mock_message_helper_,
- SendOnPermissionsChangeNotification(kAppId_, _, _));
+ SendOnPermissionsChangeNotification(kAppId1_, _, _));
EXPECT_CALL(app_manager_, state_controller())
.WillRepeatedly(ReturnRef(mock_state_controller));
@@ -406,17 +531,17 @@ TEST_F(PolicyHandlerTest,
std::string new_kHmiLevel_string = "HMI_FULL";
mobile_apis::HMILevel::eType new_hmi_level = mobile_apis::HMILevel::HMI_FULL;
// Check expectations
- EXPECT_CALL(app_manager_, application_by_policy_id(_))
+ EXPECT_CALL(app_manager_, application_by_policy_id(kPolicyAppId_))
.Times(2)
.WillRepeatedly(Return(mock_app_));
- EXPECT_CALL(*mock_app_, app_id()).WillOnce(Return(kAppId_));
+ EXPECT_CALL(*mock_app_, app_id()).WillOnce(Return(kAppId1_));
EXPECT_CALL(mock_message_helper_, StringToHMILevel(new_kHmiLevel_string))
.WillOnce(Return(new_hmi_level));
EXPECT_CALL(*mock_app_, hmi_level())
.WillOnce(Return(mobile_apis::HMILevel::HMI_LIMITED));
EXPECT_CALL(mock_message_helper_,
- SendOnPermissionsChangeNotification(kAppId_, _, _));
+ SendOnPermissionsChangeNotification(kAppId1_, _, _));
EXPECT_CALL(app_manager_, state_controller()).Times(0);
// Act
@@ -440,12 +565,28 @@ TEST_F(PolicyHandlerTest, CheckPermissions) {
CheckPermissionResult result;
RPCParams kRpc_params;
// Check expectations
+ const uint32_t device = 3;
+ const mobile_apis::HMILevel::eType hmi_level =
+ mobile_apis::HMILevel::HMI_NONE;
+ EXPECT_CALL(*mock_app_, hmi_level()).WillOnce(Return(hmi_level));
+ EXPECT_CALL(*mock_app_, device()).WillOnce(Return(device));
+ EXPECT_CALL(*mock_app_, policy_app_id()).WillOnce(Return(kPolicyAppId_));
+#ifdef EXTERNAL_PROPRIETARY_MODE
EXPECT_CALL(
*mock_policy_manager_,
CheckPermissions(kPolicyAppId_, kHmiLevel_, kRpc_, kRpc_params, _));
+
+#else // EXTERNAL_PROPRIETARY_MODE
+ EXPECT_CALL(*mock_policy_manager_,
+ CheckPermissions(
+ kDeviceId, kPolicyAppId_, kHmiLevel_, kRpc_, kRpc_params, _));
+#endif // EXTERNAL_PROPRIETARY_MODE
+ EXPECT_CALL(mock_message_helper_, StringifiedHMILevel(hmi_level))
+ .WillOnce(Return(kHmiLevel_));
+ EXPECT_CALL(mock_message_helper_, GetDeviceMacAddressForHandle(device, _))
+ .WillOnce(Return(kDeviceId));
// Act
- policy_handler_.CheckPermissions(
- kPolicyAppId_, kHmiLevel_, kRpc_, kRpc_params, result);
+ policy_handler_.CheckPermissions(mock_app_, kRpc_, kRpc_params, result);
}
TEST_F(PolicyHandlerTest, GetNotificationsNumber) {
@@ -661,7 +802,7 @@ void PolicyHandlerTest::TestActivateApp(const uint32_t connection_key,
EXPECT_CALL(*application1, device()).WillRepeatedly(Return(device_handle));
EXPECT_CALL(*application1, is_audio()).WillRepeatedly(Return(false));
EXPECT_CALL(mock_message_helper_,
- SendOnAppPermissionsChangedNotification(kAppId_, _, _));
+ SendOnAppPermissionsChangedNotification(kAppId1_, _, _));
EXPECT_CALL(mock_session_observer,
GetDataOnDeviceID(device_handle, _, _, _, _));
#endif // EXTERNAL_PROPRIETARY_MODE
@@ -672,7 +813,7 @@ void PolicyHandlerTest::TestActivateApp(const uint32_t connection_key,
ON_CALL(*mock_policy_manager_, Increment(_, _)).WillByDefault(Return());
EXPECT_CALL(*mock_policy_manager_, RemovePendingPermissionChanges(_));
EXPECT_CALL(mock_message_helper_, SendSDLActivateAppResponse(_, _, _));
- ON_CALL(*application1, app_id()).WillByDefault(Return(kAppId_));
+ ON_CALL(*application1, app_id()).WillByDefault(Return(kAppId1_));
// Act
policy_handler_.OnActivateApp(connection_key, correlation_id);
}
@@ -680,9 +821,55 @@ void PolicyHandlerTest::TestActivateApp(const uint32_t connection_key,
TEST_F(PolicyHandlerTest, OnActivateApp) {
// Arrange
EnablePolicyAndPolicyManagerMock();
- const uint32_t connection_key = 1u;
- const uint32_t correlation_id = 2u;
- TestActivateApp(connection_key, correlation_id);
+ TestActivateApp(kConnectionKey_, kCorrelationKey_);
+}
+
+TEST_F(PolicyHandlerTest, OnActivateApp_InvalidApp_UNSUCCESS) {
+ // Arrange
+ EnablePolicyAndPolicyManagerMock();
+ utils::SharedPtr<application_manager_test::MockApplication> invalid_app;
+ EXPECT_CALL(app_manager_, application(kConnectionKey_))
+ .WillOnce(Return(invalid_app));
+
+ EXPECT_CALL(mock_message_helper_, SendSDLActivateAppResponse(_, _, _))
+ .Times(0);
+ policy_handler_.OnActivateApp(kConnectionKey_, kCorrelationKey_);
+}
+
+TEST_F(PolicyHandlerTest, OnActivateApp_AppIsRevoked_AppNotActivated) {
+ // Arrange
+ EnablePolicyAndPolicyManagerMock();
+ EXPECT_CALL(app_manager_, ActivateApplication(_)).Times(0);
+ EXPECT_CALL(app_manager_, application(kConnectionKey_))
+ .WillOnce(Return(mock_app_));
+
+ AppPermissions permissions(kPolicyAppId_);
+ permissions.appRevoked = true;
+
+#ifdef EXTERNAL_PROPRIETARY_MODE
+ utils::SharedPtr<usage_statistics_test::MockStatisticsManager>
+ mock_statistics_manager =
+ utils::MakeShared<usage_statistics_test::MockStatisticsManager>();
+ UsageStatistics usage_stats(
+ "0",
+ utils::SharedPtr<usage_statistics::StatisticsManager>(
+ mock_statistics_manager));
+ EXPECT_CALL(*mock_app_, usage_report()).WillOnce(ReturnRef(usage_stats));
+ const std::string default_mac = "00:00:00:00:00:00";
+ EXPECT_CALL(*mock_policy_manager_, GetUserConsentForDevice(default_mac))
+ .WillOnce(Return(DeviceConsent::kDeviceAllowed));
+#endif // EXTERNAL_PROPRIETARY_MODE
+
+ // Check expectations
+ EXPECT_CALL(*mock_app_, policy_app_id()).WillOnce(Return(kPolicyAppId_));
+ EXPECT_CALL(*mock_policy_manager_, GetAppPermissionsChanges(_))
+ .WillOnce(Return(permissions));
+ ON_CALL(*mock_policy_manager_, Increment(_, _)).WillByDefault(Return());
+ EXPECT_CALL(*mock_policy_manager_, RemovePendingPermissionChanges(_));
+ EXPECT_CALL(mock_message_helper_, SendSDLActivateAppResponse(_, _, _));
+ ON_CALL(*mock_app_, app_id()).WillByDefault(Return(kAppId1_));
+ // Act
+ policy_handler_.OnActivateApp(kConnectionKey_, kCorrelationKey_);
}
TEST_F(PolicyHandlerTest, OnIgnitionCycleOver) {
@@ -704,7 +891,7 @@ void PolicyHandlerTest::OnPendingPermissionChangePrecondition(
EXPECT_CALL(app_manager_, application_by_policy_id(kPolicyAppId_))
.WillOnce(Return(application));
- EXPECT_CALL(*application, app_id()).WillRepeatedly(Return(kAppId_));
+ EXPECT_CALL(*application, app_id()).WillRepeatedly(Return(kAppId1_));
EXPECT_CALL(*application, hmi_level()).WillRepeatedly(Return(hmi_level));
}
@@ -717,7 +904,7 @@ TEST_F(PolicyHandlerTest,
AppPermissions permissions(kPolicyAppId_);
permissions.appPermissionsConsentNeeded = false;
EXPECT_CALL(mock_message_helper_,
- SendOnAppPermissionsChangedNotification(kAppId_, _, _)).Times(0);
+ SendOnAppPermissionsChangedNotification(kAppId1_, _, _)).Times(0);
EXPECT_CALL(*mock_policy_manager_, GetAppPermissionsChanges(_))
.WillOnce(Return(permissions));
@@ -735,7 +922,7 @@ TEST_F(PolicyHandlerTest, OnPendingPermissionChange_AppInLimitedConsentNeeded) {
permissions.appPermissionsConsentNeeded = true;
// Check expectations
EXPECT_CALL(mock_message_helper_,
- SendOnAppPermissionsChangedNotification(kAppId_, _, _));
+ SendOnAppPermissionsChangedNotification(kAppId1_, _, _));
EXPECT_CALL(*mock_policy_manager_, GetAppPermissionsChanges(_))
.WillOnce(Return(permissions));
EXPECT_CALL(*mock_policy_manager_,
@@ -755,7 +942,7 @@ TEST_F(PolicyHandlerTest, OnPendingPermissionChange_AppLimitedAndRevoked) {
EXPECT_CALL(app_manager_, state_controller())
.WillRepeatedly(ReturnRef(mock_state_controller));
EXPECT_CALL(mock_message_helper_,
- SendOnAppPermissionsChangedNotification(kAppId_, _, _));
+ SendOnAppPermissionsChangedNotification(kAppId1_, _, _));
EXPECT_CALL(mock_state_controller,
SetRegularState(_,
mobile_apis::HMILevel::HMI_NONE,
@@ -779,7 +966,7 @@ TEST_F(PolicyHandlerTest, OnPendingPermissionChange_AppInBackgroundAndRevoked) {
// Check expectations
EXPECT_CALL(mock_message_helper_,
- SendOnAppPermissionsChangedNotification(kAppId_, _, _));
+ SendOnAppPermissionsChangedNotification(kAppId1_, _, _));
EXPECT_CALL(*mock_policy_manager_, GetAppPermissionsChanges(_))
.WillOnce(Return(permissions));
@@ -801,14 +988,14 @@ TEST_F(PolicyHandlerTest,
utils::MakeShared<NsSmartDeviceLink::NsSmartObjects::SmartObject>();
// Check expectations
EXPECT_CALL(mock_message_helper_,
- SendOnAppPermissionsChangedNotification(kAppId_, _, _));
+ SendOnAppPermissionsChangedNotification(kAppId1_, _, _));
EXPECT_CALL(*mock_policy_manager_, GetAppPermissionsChanges(_))
.WillOnce(Return(permissions));
EXPECT_CALL(mock_message_helper_,
GetOnAppInterfaceUnregisteredNotificationToMobile(
- kAppId_,
+ kAppId1_,
mobile_api::AppInterfaceUnregisteredReason::APP_UNAUTHORIZED))
.WillOnce(Return(message));
EXPECT_CALL(app_manager_,
@@ -822,6 +1009,25 @@ TEST_F(PolicyHandlerTest,
}
TEST_F(PolicyHandlerTest,
+ OnPendingPermissionChange_AppInLIMITEDAndRequestTypeChanged_SUCCESS) {
+ OnPendingPermissionChangePrecondition(
+ mobile_apis::HMILevel::eType::HMI_LIMITED);
+ AppPermissions permissions(kPolicyAppId_);
+ permissions.requestTypeChanged = true;
+
+ EXPECT_CALL(mock_message_helper_,
+ SendOnAppPermissionsChangedNotification(kAppId1_, _, _));
+
+ EXPECT_CALL(*mock_policy_manager_, GetAppPermissionsChanges(_))
+ .WillOnce(Return(permissions));
+
+ EXPECT_CALL(*mock_policy_manager_,
+ RemovePendingPermissionChanges(kPolicyAppId_));
+
+ policy_handler_.OnPendingPermissionChange(kPolicyAppId_);
+}
+
+TEST_F(PolicyHandlerTest,
OnPendingPermissionChange_AppInBackgroundAndUnauthorized) {
// Arrange
OnPendingPermissionChangePrecondition(
@@ -834,14 +1040,14 @@ TEST_F(PolicyHandlerTest,
// Check expectations
// Notification won't be sent
EXPECT_CALL(mock_message_helper_,
- SendOnAppPermissionsChangedNotification(kAppId_, _, _)).Times(0);
+ SendOnAppPermissionsChangedNotification(kAppId1_, _, _)).Times(0);
EXPECT_CALL(*mock_policy_manager_, GetAppPermissionsChanges(_))
.WillOnce(Return(permissions));
EXPECT_CALL(mock_message_helper_,
GetOnAppInterfaceUnregisteredNotificationToMobile(
- kAppId_,
+ kAppId1_,
mobile_api::AppInterfaceUnregisteredReason::APP_UNAUTHORIZED))
.WillOnce(Return(message));
EXPECT_CALL(app_manager_,
@@ -897,11 +1103,12 @@ TEST_F(PolicyHandlerTest, OnGetUserFriendlyMessage) {
const hmi_apis::Common_Language::eType default_language =
hmi_apis::Common_Language::EN_US;
const std::string default_language_string = "EN_US";
+ application_manager_test::MockHMICapabilities mock_hmi_capabilities;
EXPECT_CALL(app_manager_, hmi_capabilities())
- .WillOnce(ReturnRef(mock_hmi_capabilities_));
+ .WillOnce(ReturnRef(mock_hmi_capabilities));
EXPECT_CALL(mock_message_helper_, CommonLanguageToString(default_language))
.WillOnce(Return(default_language_string));
- EXPECT_CALL(mock_hmi_capabilities_, active_ui_language())
+ EXPECT_CALL(mock_hmi_capabilities, active_ui_language())
.WillOnce(Return(default_language));
EXPECT_CALL(
*mock_policy_manager_,
@@ -1094,7 +1301,6 @@ TEST_F(PolicyHandlerTest, OnPTExchangeNeeded) {
EnablePolicyAndPolicyManagerMock();
// Check expectations
EXPECT_CALL(*mock_policy_manager_, ForcePTExchange());
- EXPECT_CALL(mock_message_helper_, SendOnStatusUpdate(_, _));
// Act
policy_handler_.OnPTExchangeNeeded();
}
@@ -1103,10 +1309,13 @@ TEST_F(PolicyHandlerTest, AddApplication) {
// Arrange
EnablePolicyAndPolicyManagerMock();
// Check expectations
- EXPECT_CALL(*mock_policy_manager_, AddApplication(kPolicyAppId_))
+ EXPECT_CALL(
+ *mock_policy_manager_,
+ AddApplication(kPolicyAppId_, HmiTypes(policy_table::AHT_DEFAULT)))
.WillOnce(Return(utils::MakeShared<utils::CallNothing>()));
// Act
- policy_handler_.AddApplication(kPolicyAppId_);
+ policy_handler_.AddApplication(kPolicyAppId_,
+ HmiTypes(policy_table::AHT_DEFAULT));
}
TEST_F(PolicyHandlerTest, HeartBeatTimeout) {
@@ -1238,37 +1447,138 @@ TEST_F(PolicyHandlerTest, OnGetListOfPermissions) {
// Arrange
EnablePolicyAndPolicyManagerMock();
- const uint32_t kAppId_ = 10u;
- const uint32_t kCorId = 1u;
+ const uint32_t app_id = 10u;
+ const uint32_t corr_id = 1u;
const std::string default_mac = "00:00:00:00:00:00";
test_app.insert(mock_app_);
// Expectations
EXPECT_CALL(*mock_policy_manager_, GetUserConsentForApp(default_mac, _, _));
- EXPECT_CALL(mock_message_helper_,
- SendGetListOfPermissionsResponse(_, kCorId, _));
-
- EXPECT_CALL(app_manager_, application(kAppId_))
+ EXPECT_CALL(app_manager_, connection_handler())
+ .WillOnce(ReturnRef(conn_handler));
+ EXPECT_CALL(conn_handler, get_session_observer())
+ .WillOnce(ReturnRef(mock_session_observer));
+ EXPECT_CALL(*mock_app_, device()).WillOnce(Return(0));
+ EXPECT_CALL(app_manager_, application(app_id))
.WillRepeatedly(Return(mock_app_));
+ EXPECT_CALL(*mock_app_, policy_app_id()).WillOnce(Return(std::string()));
+ EXPECT_CALL(mock_session_observer, GetDataOnDeviceID(_, _, _, _, _));
- policy_handler_.OnGetListOfPermissions(kAppId_, kCorId);
+ policy_handler_.OnGetListOfPermissions(app_id, corr_id);
}
TEST_F(PolicyHandlerTest, OnGetListOfPermissions_WithoutConnectionKey) {
// Arrange
EnablePolicyAndPolicyManagerMock();
- const uint32_t kAppId_ = 0u;
- const uint32_t kCorId = 1u;
+ const uint32_t app_id = 0u;
+ const uint32_t corr_id = 1u;
+ const std::string default_mac = "00:00:00:00:00:00";
test_app.insert(mock_app_);
// Expectations
+ EXPECT_CALL(*mock_policy_manager_, GetUserConsentForApp(default_mac, _, _));
+
+ EXPECT_CALL(app_manager_, application(app_id))
+ .WillRepeatedly(Return(mock_app_));
+ EXPECT_CALL(app_manager_, connection_handler())
+ .WillOnce(ReturnRef(conn_handler));
+ EXPECT_CALL(conn_handler, get_session_observer())
+ .WillOnce(ReturnRef(mock_session_observer));
EXPECT_CALL(app_manager_, applications()).WillRepeatedly(Return(app_set));
+ EXPECT_CALL(*mock_app_, device()).WillOnce(Return(0));
+ EXPECT_CALL(*mock_app_, policy_app_id()).WillOnce(Return(std::string()));
+ EXPECT_CALL(mock_session_observer, GetDataOnDeviceID(_, _, _, _, _));
+
+#ifdef EXTERNAL_PROPRIETARY_MODE
+ policy::ExternalConsentStatus external_consent_status =
+ policy::ExternalConsentStatus();
+ EXPECT_CALL(
+ mock_message_helper_,
+ SendGetListOfPermissionsResponse(_, external_consent_status, corr_id, _));
+ EXPECT_CALL(*mock_policy_manager_, GetExternalConsentStatus())
+ .WillOnce(Return(external_consent_status));
+#else
+ EXPECT_CALL(mock_message_helper_,
+ SendGetListOfPermissionsResponse(_, corr_id, _));
+#endif // #ifdef EXTERNAL_PROPRIETARY_MODE
+
+ policy_handler_.OnGetListOfPermissions(app_id, corr_id);
+}
+
+ACTION_P(SetGroupPermissions, permissions) {
+ arg2 = permissions;
+}
+
+TEST_F(PolicyHandlerTest, OnGetListOfPermissions_GroupPermissions_SUCCESS) {
+ // Arrange
+ EnablePolicyAndPolicyManagerMock();
+
+ policy::FunctionalGroupPermission group_permission_disallowed1;
+ CreateFunctionalGroupPermission(GroupConsent::kGroupDisallowed,
+ kGroupAliasDisallowed_,
+ kGroupNameDisallowed_,
+ group_permission_disallowed1);
+
+ policy::FunctionalGroupPermission group_permission_disallowed2;
+ CreateFunctionalGroupPermission(GroupConsent::kGroupDisallowed,
+ kGroupAliasDisallowed_,
+ kGroupNameDisallowed_,
+ group_permission_disallowed2);
+
+ policy::FunctionalGroupPermission group_permission_allowed1;
+ CreateFunctionalGroupPermission(GroupConsent::kGroupAllowed,
+ kGroupAliasAllowed_,
+ kGroupNameAllowed_,
+ group_permission_allowed1);
+
+ policy::FunctionalGroupPermission group_permission_allowed2;
+ CreateFunctionalGroupPermission(GroupConsent::kGroupAllowed,
+ kGroupAliasAllowed_,
+ kGroupNameAllowed_,
+ group_permission_allowed2);
+
+ std::vector<policy::FunctionalGroupPermission> group_permissions;
+ group_permissions.push_back(group_permission_allowed1);
+ group_permissions.push_back(group_permission_allowed2);
+ group_permissions.push_back(group_permission_disallowed1);
+ group_permissions.push_back(group_permission_disallowed2);
+
+ const uint32_t app_id = 0u;
+ const uint32_t corr_id = 1u;
+ const std::string default_mac = "00:00:00:00:00:00";
+ test_app.insert(mock_app_);
+
+ // Expectations
+ EXPECT_CALL(*mock_policy_manager_, GetUserConsentForApp(_, _, _))
+ .WillOnce(SetGroupPermissions(group_permissions));
+
+ EXPECT_CALL(app_manager_, application(app_id))
+ .WillRepeatedly(Return(mock_app_));
+ EXPECT_CALL(app_manager_, connection_handler())
+ .WillOnce(ReturnRef(conn_handler));
+ EXPECT_CALL(conn_handler, get_session_observer())
+ .WillOnce(ReturnRef(mock_session_observer));
+ EXPECT_CALL(app_manager_, applications()).WillRepeatedly(Return(app_set));
+ EXPECT_CALL(*mock_app_, device()).WillOnce(Return(0));
+ EXPECT_CALL(*mock_app_, policy_app_id()).WillOnce(Return(std::string()));
+ EXPECT_CALL(mock_session_observer, GetDataOnDeviceID(_, _, _, _, _));
+
+#ifdef EXTERNAL_PROPRIETARY_MODE
+ policy::ExternalConsentStatus external_consent_status =
+ policy::ExternalConsentStatus();
+ EXPECT_CALL(
+ mock_message_helper_,
+ SendGetListOfPermissionsResponse(_, external_consent_status, corr_id, _));
+ EXPECT_CALL(*mock_policy_manager_, GetExternalConsentStatus())
+ .WillOnce(Return(external_consent_status));
+#else
EXPECT_CALL(mock_message_helper_,
- SendGetListOfPermissionsResponse(_, kCorId, _));
+ SendGetListOfPermissionsResponse(_, corr_id, _));
+#endif // #ifdef EXTERNAL_PROPRIETARY_MODE
- policy_handler_.OnGetListOfPermissions(kAppId_, kCorId);
+ policy_handler_.OnGetListOfPermissions(app_id, corr_id);
}
TEST_F(PolicyHandlerTest, RetrieveCertificate) {
@@ -1289,7 +1599,7 @@ TEST_F(PolicyHandlerTest, OnSnapshotCreated_UrlNotAdded) {
#endif // PROPRIETARY_MODE || EXTERNAL_PROPRIETARY_MODE
#ifdef EXTERNAL_PROPRIETARY_MODE
std::vector<int> retry_delay_seconds;
- const uint32_t timeout_exchange = 10;
+ const uint32_t timeout_exchange = 10u;
// TODO(AKutsan): Policy move issues
EXPECT_CALL(*mock_policy_manager_, GetUpdateUrls("0x07", _))
.WillRepeatedly(SetArgReferee<1>(test_data));
@@ -1327,18 +1637,19 @@ TEST_F(PolicyHandlerTest, OnSnapshotCreated_UrlAdded) {
EndpointUrls test_data;
EndpointData data("some_data");
std::vector<int> retry_delay_seconds;
- const uint32_t timeout_exchange = 10;
+ const uint32_t timeout_exchange = 10u;
test_data.push_back(data);
ExtendedPolicyExpectations();
- EXPECT_CALL(app_manager_, application(kAppId_))
+ EXPECT_CALL(app_manager_, application(kAppId1_))
.WillRepeatedly(Return(mock_app_));
policy_handler_.OnSnapshotCreated(msg, retry_delay_seconds, timeout_exchange);
}
#else // EXTERNAL_PROPRIETARY_MODE
-TEST_F(PolicyHandlerTest, OnSnapshotCreated_UrlAdded) {
+// TODO(LevchenkoS): Find out what is wrong with this test on HTTP Policy
+TEST_F(PolicyHandlerTest, DISABLED_OnSnapshotCreated_UrlAdded) {
EnablePolicyAndPolicyManagerMock();
BinaryMessage msg;
EndpointUrls test_data;
@@ -1366,7 +1677,7 @@ TEST_F(PolicyHandlerTest, OnSnapshotCreated_UrlAdded) {
// Check expectations for get app id
GetAppIDForSending();
// Expectations
- EXPECT_CALL(app_manager_, application(kAppId_))
+ EXPECT_CALL(app_manager_, application(kAppId1_))
.WillRepeatedly(Return(mock_app_));
EXPECT_CALL(*mock_app_, policy_app_id()).WillOnce(Return(kPolicyAppId_));
#endif // PROPRIETARY_MODE
@@ -1383,9 +1694,7 @@ TEST_F(PolicyHandlerTest,
std::vector<std::string> device_macs;
device_macs.push_back(kPolicyAppId_);
EnablePolicyAndPolicyManagerMock();
- const uint32_t connection_key = 1u;
- const uint32_t correlation_id = 2u;
- TestActivateApp(connection_key, correlation_id);
+ TestActivateApp(kConnectionKey_, kCorrelationKey_);
// Device ID is not setted by us
EXPECT_CALL(conn_handler, GetConnectedDevicesMAC(_))
@@ -1397,6 +1706,23 @@ TEST_F(PolicyHandlerTest,
policy_handler_.OnAllowSDLFunctionalityNotification(is_allowed, "");
}
+TEST_F(PolicyHandlerTest,
+ OnAllowSDLFunctionalityNotification_DefaultDeviceId_UNSUCCESS) {
+ const std::string default_mac_address("00:00:00:00:00:00");
+ std::vector<std::string> device_macs;
+ device_macs.push_back(default_mac_address);
+ EnablePolicyAndPolicyManagerMock();
+ TestActivateApp(kConnectionKey_, kCorrelationKey_);
+
+ EXPECT_CALL(conn_handler, GetConnectedDevicesMAC(_))
+ .WillOnce(SetArgReferee<0>(device_macs));
+
+ EXPECT_CALL(*mock_policy_manager_, SetUserConsentForDevice(_, _)).Times(0);
+
+ const bool is_allowed = true;
+ policy_handler_.OnAllowSDLFunctionalityNotification(is_allowed, "");
+}
+
TEST_F(PolicyHandlerTest, OnDeviceConsentChanged_ConsentAllowed) {
const bool is_allowed = true;
// Arrange
@@ -1526,9 +1852,9 @@ TEST_F(PolicyHandlerTest, GetAppIdForSending_GetDefaultMacAddress) {
// Check expectations
test_app.insert(mock_app_);
EXPECT_CALL(*mock_app_, IsRegistered()).WillOnce(Return(true));
- EXPECT_CALL(*mock_app_, app_id()).WillRepeatedly(Return(kAppId_));
+ EXPECT_CALL(*mock_app_, app_id()).WillRepeatedly(Return(kAppId1_));
EXPECT_CALL(*mock_app_, hmi_level())
- .WillOnce(Return(mobile_api::HMILevel::HMI_FULL));
+ .WillRepeatedly(Return(mobile_api::HMILevel::HMI_FULL));
EXPECT_CALL(app_manager_, connection_handler())
.WillOnce(ReturnRef(conn_handler));
@@ -1540,7 +1866,7 @@ TEST_F(PolicyHandlerTest, GetAppIdForSending_GetDefaultMacAddress) {
EXPECT_CALL(*mock_policy_manager_, GetUserConsentForDevice(_))
.WillRepeatedly(Return(kDeviceAllowed));
// Act
- EXPECT_EQ(kAppId_, policy_handler_.GetAppIdForSending());
+ EXPECT_EQ(kAppId1_, policy_handler_.GetAppIdForSending());
}
void PolicyHandlerTest::GetAppIDForSending() {
@@ -1548,7 +1874,7 @@ void PolicyHandlerTest::GetAppIDForSending() {
test_app.insert(mock_app_);
// Check expectations
- EXPECT_CALL(*mock_app_, app_id()).WillRepeatedly(Return(kAppId_));
+ EXPECT_CALL(*mock_app_, app_id()).WillRepeatedly(Return(kAppId1_));
EXPECT_CALL(*mock_app_, IsRegistered()).WillOnce(Return(true));
EXPECT_CALL(*mock_app_, hmi_level())
.WillRepeatedly(Return(mobile_api::HMILevel::HMI_FULL));
@@ -1563,7 +1889,7 @@ TEST_F(PolicyHandlerTest, GetAppIdForSending_SetMacAddress) {
// Arrange
GetAppIDForSending();
// Act
- EXPECT_EQ(kAppId_, policy_handler_.GetAppIdForSending());
+ EXPECT_EQ(kAppId1_, policy_handler_.GetAppIdForSending());
}
TEST_F(PolicyHandlerTest, GetAppIdForSending_ExpectReturnAnyIdButNone) {
@@ -1677,24 +2003,333 @@ TEST_F(PolicyHandlerTest, SendMessageToSDK) {
const std::string url = "test_url";
EnablePolicyAndPolicyManagerMock();
test_app.insert(mock_app_);
- // Check expectations for get app id
- GetAppIDForSending();
// Expectations
- EXPECT_CALL(app_manager_, application(kAppId_))
+ EXPECT_CALL(app_manager_, application(kAppId1_))
.WillRepeatedly(Return(mock_app_));
EXPECT_CALL(*mock_app_, policy_app_id()).WillOnce(Return(kPolicyAppId_));
- EXPECT_CALL(mock_message_helper_,
- SendPolicySnapshotNotification(kAppId_, msg, url, _));
// Act
+ policy_handler_.last_used_app_ids().push_back(kAppId1_);
+ EXPECT_CALL(mock_message_helper_,
+ SendPolicySnapshotNotification(kAppId1_, msg, url, _));
EXPECT_TRUE(policy_handler_.SendMessageToSDK(msg, url));
}
+TEST_F(PolicyHandlerTest, SendMessageToSDK_InavalidApp_UNSUCCESS) {
+ BinaryMessage msg;
+ const std::string url = "test_url";
+ EnablePolicyAndPolicyManagerMock();
+ utils::SharedPtr<application_manager_test::MockApplication> invalid_app;
+ policy_handler_.last_used_app_ids().push_back(kAppId1_);
+
+ EXPECT_CALL(app_manager_, application(kAppId1_))
+ .WillOnce(Return(invalid_app));
+ EXPECT_CALL(*mock_app_, policy_app_id()).Times(0);
+
+ EXPECT_FALSE(policy_handler_.SendMessageToSDK(msg, url));
+}
+
TEST_F(PolicyHandlerTest, CanUpdate) {
GetAppIDForSending();
EXPECT_TRUE(policy_handler_.CanUpdate());
}
+TEST_F(PolicyHandlerTest, CanUpdate_TwoApplicationForSending_SUCCESS) {
+ EnablePolicyAndPolicyManagerMock();
+ utils::SharedPtr<application_manager_test::MockApplication> second_mock_app =
+ utils::MakeShared<application_manager_test::MockApplication>();
+
+ EXPECT_CALL(*mock_app_, hmi_level())
+ .WillOnce(Return(mobile_apis::HMILevel::HMI_FULL));
+ EXPECT_CALL(*second_mock_app, hmi_level())
+ .WillRepeatedly(Return(mobile_apis::HMILevel::HMI_LIMITED));
+
+ EXPECT_CALL(*second_mock_app, app_id()).WillRepeatedly(Return(kAppId2_));
+ EXPECT_CALL(*mock_app_, app_id()).WillRepeatedly(Return(kAppId1_));
+
+ // Check expectations
+ EXPECT_CALL(*mock_app_, IsRegistered()).WillOnce(Return(true));
+ test_app.insert(mock_app_);
+ test_app.insert(second_mock_app);
+
+ EXPECT_CALL(mock_session_observer, GetDataOnDeviceID(_, _, _, _, _))
+ .WillOnce(DoAll(SetArgPointee<3>(kMacAddr_), Return(0)));
+
+ EXPECT_CALL(*mock_policy_manager_, GetUserConsentForDevice(kMacAddr_))
+ .WillRepeatedly(Return(kDeviceAllowed));
+
+ EXPECT_TRUE(policy_handler_.CanUpdate());
+}
+
+ACTION_P(NotifyAsync, waiter) {
+ waiter->Notify();
+}
+
+TEST_F(PolicyHandlerTest,
+ OnAppPermissionConsentInternal_ValidConnectionKey_SUCCESS) {
+ ChangePolicyManagerToMock();
+ const uint32_t device = 2u;
+
+ PermissionConsent permissions;
+ permissions.device_id = kDeviceId_;
+ permissions.consent_source = "consent_source";
+
+ policy::FunctionalGroupPermission group_permission_allowed;
+ CreateFunctionalGroupPermission(GroupConsent::kGroupAllowed,
+ kGroupAliasAllowed_,
+ kGroupNameAllowed_,
+ group_permission_allowed);
+
+ permissions.group_permissions.push_back(group_permission_allowed);
+
+ EXPECT_CALL(app_manager_, connection_handler())
+ .WillOnce(ReturnRef(conn_handler));
+ EXPECT_CALL(conn_handler, get_session_observer())
+ .WillOnce(ReturnRef(mock_session_observer));
+ EXPECT_CALL(mock_session_observer, GetDataOnDeviceID(device, _, NULL, _, _))
+ .WillOnce(Return(1u));
+
+ EXPECT_CALL(app_manager_, application(kConnectionKey_))
+ .WillOnce(Return(mock_app_));
+ EXPECT_CALL(*mock_app_, policy_app_id()).WillOnce(Return(kPolicyAppId_));
+ EXPECT_CALL(*mock_app_, device()).WillOnce(Return(device));
+
+ sync_primitives::Lock wait_hmi_lock_first;
+ sync_primitives::AutoLock auto_lock_first(wait_hmi_lock_first);
+ WaitAsync waiter_first(kCallsCount_, kTimeout_);
+
+ EXPECT_CALL(*mock_policy_manager_, SetUserConsentForApp(_))
+ .WillOnce(NotifyAsync(&waiter_first));
+
+ ExternalConsentStatusItem item(1u, 1u, kStatusOn);
+ ExternalConsentStatus external_consent_status;
+ external_consent_status.insert(item);
+
+#ifdef EXTERNAL_PROPRIETARY_MODE
+ sync_primitives::Lock wait_hmi_lock_second;
+ sync_primitives::AutoLock auto_lock_second(wait_hmi_lock_second);
+ WaitAsync waiter_second(kCallsCount_, kTimeout_);
+
+ EXPECT_CALL(*mock_policy_manager_,
+ SetExternalConsentStatus(external_consent_status))
+ .WillOnce(DoAll(NotifyAsync(&waiter_second), Return(true)));
+ policy_handler_.OnAppPermissionConsent(
+ kConnectionKey_, permissions, external_consent_status);
+#else
+ policy_handler_.OnAppPermissionConsent(kConnectionKey_, permissions);
+
+#endif
+ EXPECT_TRUE(waiter_first.Wait(auto_lock_first));
+#ifdef EXTERNAL_PROPRIETARY_MODE
+ EXPECT_TRUE(waiter_second.Wait(auto_lock_second));
+#endif
+}
+
+TEST_F(PolicyHandlerTest,
+ OnAppPermissionConsentInternal_NoAppsPreviouslyStored_UNUSUCCESS) {
+ EnablePolicyAndPolicyManagerMock();
+ const uint32_t invalid_connection_key = 0u;
+
+ PermissionConsent permissions;
+ permissions.device_id = kDeviceId_;
+ permissions.consent_source = "consent_source";
+
+ policy::FunctionalGroupPermission group_permission_allowed;
+ CreateFunctionalGroupPermission(GroupConsent::kGroupAllowed,
+ kGroupAliasAllowed_,
+ kGroupNameAllowed_,
+ group_permission_allowed);
+
+ permissions.group_permissions.push_back(group_permission_allowed);
+
+ sync_primitives::Lock wait_hmi_lock;
+ sync_primitives::AutoLock auto_lock(wait_hmi_lock);
+ WaitAsync waiter(kCallsCount_, kTimeout_);
+
+ EXPECT_CALL(app_manager_, application(_)).Times(0);
+
+ ExternalConsentStatusItem item = {1u, 1u, kStatusOn};
+ ExternalConsentStatus external_consent_status;
+ external_consent_status.insert(item);
+#ifdef EXTERNAL_PROPRIETARY_MODE
+ EXPECT_CALL(*mock_policy_manager_,
+ SetExternalConsentStatus(external_consent_status))
+ .WillOnce(Return(true));
+ policy_handler_.OnAppPermissionConsent(
+ invalid_connection_key, permissions, external_consent_status);
+#else
+ policy_handler_.OnAppPermissionConsent(invalid_connection_key, permissions);
+#endif
+
+ EXPECT_FALSE(waiter.Wait(auto_lock));
+}
+
+ACTION_P(SetDeviceParamsMacAdress, mac_adress) {
+ *arg3 = mac_adress;
+}
+
+TEST_F(PolicyHandlerTest,
+ OnAppPermissionConsentInternal_ExistAppsPreviouslyStored_SUCCESS) {
+ EnablePolicyAndPolicyManagerMock();
+
+ EXPECT_CALL(*mock_app_, app_id()).WillRepeatedly(Return(kAppId1_));
+
+ test_app.insert(mock_app_);
+
+ const uint32_t invalid_connection_key = 0u;
+ const uint32_t device = 2u;
+
+ PermissionConsent permissions;
+ permissions.device_id = kDeviceId_;
+ permissions.consent_source = "consent_source";
+
+ policy::FunctionalGroupPermission group_permission_allowed;
+ CreateFunctionalGroupPermission(GroupConsent::kGroupAllowed,
+ kGroupAliasAllowed_,
+ kGroupNameAllowed_,
+ group_permission_allowed);
+
+ permissions.group_permissions.push_back(group_permission_allowed);
+ EXPECT_CALL(app_manager_, applications()).WillRepeatedly(Return(app_set));
+
+ EXPECT_CALL(*mock_app_, device()).WillRepeatedly(Return(1u));
+ EXPECT_CALL(*mock_app_, policy_app_id())
+ .WillRepeatedly(Return(kPolicyAppId_));
+
+ EXPECT_CALL(mock_session_observer, GetDataOnDeviceID(_, _, NULL, _, _))
+ .WillRepeatedly(DoAll(SetDeviceParamsMacAdress(kMacAddr_), (Return(1u))));
+
+ EXPECT_CALL(app_manager_, connection_handler())
+ .WillRepeatedly(ReturnRef(conn_handler));
+ EXPECT_CALL(conn_handler, get_session_observer())
+ .WillRepeatedly(ReturnRef(mock_session_observer));
+
+ EXPECT_CALL(*mock_app_, device()).WillRepeatedly(Return(device));
+
+ ExternalConsentStatusItem item = {1u, 1u, kStatusOn};
+ ExternalConsentStatus external_consent_status;
+ external_consent_status.insert(item);
+#ifdef EXTERNAL_PROPRIETARY_MODE
+ sync_primitives::Lock wait_hmi_lock;
+ sync_primitives::AutoLock auto_lock(wait_hmi_lock);
+ WaitAsync waiter(kCallsCount_, kTimeout_);
+
+ EXPECT_CALL(*mock_policy_manager_,
+ SetExternalConsentStatus(external_consent_status))
+ .WillOnce(DoAll(NotifyAsync(&waiter), Return(true)));
+ policy_handler_.OnAppPermissionConsent(
+ invalid_connection_key, permissions, external_consent_status);
+#else
+ policy_handler_.OnAppPermissionConsent(invalid_connection_key, permissions);
+#endif
+
+ Mock::VerifyAndClearExpectations(mock_app_.get());
+#ifdef EXTERNAL_PROPRIETARY_MODE
+ EXPECT_TRUE(waiter.Wait(auto_lock));
+#endif
+}
+
+TEST_F(PolicyHandlerTest, GetLockScreenIconUrl_SUCCESS) {
+ EnablePolicyAndPolicyManagerMock();
+ EXPECT_CALL(*mock_policy_manager_, GetLockScreenIconUrl());
+
+ policy_handler_.GetLockScreenIconUrl();
+}
+
+TEST_F(PolicyHandlerTest, RemoveListener_SUCCESS) {
+ EnablePolicyAndPolicyManagerMock();
+ application_manager_test::MockPolicyHandlerObserver policy_handler_observer;
+ policy_handler_.add_listener(&policy_handler_observer);
+ std::map<std::string, StringArray> app_hmi_types;
+ StringArray arr;
+ arr.push_back("test_hmi_type");
+ app_hmi_types["app1"] = arr;
+
+ EXPECT_CALL(policy_handler_observer, OnUpdateHMIAppType(_));
+ policy_handler_.OnUpdateHMIAppType(app_hmi_types);
+
+ policy_handler_.remove_listener(&policy_handler_observer);
+
+ EXPECT_CALL(policy_handler_observer, OnUpdateHMIAppType(_)).Times(0);
+ policy_handler_.OnUpdateHMIAppType(app_hmi_types);
+}
+
+TEST_F(PolicyHandlerTest, AddStatisticsInfo_UnknownStatistics_UNSUCCESS) {
+ EnablePolicyAndPolicyManagerMock();
+ policy_handler_.AddStatisticsInfo(
+ hmi_apis::Common_StatisticsType::INVALID_ENUM);
+}
+
+TEST_F(PolicyHandlerTest, AddStatisticsInfo_SUCCESS) {
+ EnablePolicyAndPolicyManagerMock();
+
+ sync_primitives::Lock wait_hmi_lock;
+ sync_primitives::AutoLock auto_lock(wait_hmi_lock);
+ WaitAsync waiter(kCallsCount_, kTimeout_);
+
+ EXPECT_CALL(*mock_policy_manager_, Increment(_))
+ .WillOnce(NotifyAsync(&waiter));
+
+ policy_handler_.AddStatisticsInfo(
+ hmi_apis::Common_StatisticsType::iAPP_BUFFER_FULL);
+ EXPECT_TRUE(waiter.Wait(auto_lock));
+}
+
+TEST_F(PolicyHandlerTest, OnSystemError_SUCCESS) {
+ EnablePolicyAndPolicyManagerMock();
+
+ sync_primitives::Lock wait_hmi_lock;
+ sync_primitives::AutoLock auto_lock(wait_hmi_lock);
+ WaitAsync waiter(kCallsCount_, kTimeout_);
+ EXPECT_CALL(*mock_policy_manager_, Increment(_))
+ .WillOnce(NotifyAsync(&waiter));
+
+ policy_handler_.OnSystemError(hmi_apis::Common_SystemError::SYNC_REBOOTED);
+ EXPECT_TRUE(waiter.Wait(auto_lock));
+
+ WaitAsync waiter1(kCallsCount_, kTimeout_);
+ EXPECT_CALL(*mock_policy_manager_, Increment(_))
+ .WillOnce(NotifyAsync(&waiter1));
+
+ policy_handler_.OnSystemError(
+ hmi_apis::Common_SystemError::SYNC_OUT_OF_MEMMORY);
+ EXPECT_TRUE(waiter1.Wait(auto_lock));
+}
+
+ACTION_P(SetEndpoint, endpoint) {
+ arg1 = endpoint;
+}
+
+TEST_F(PolicyHandlerTest, RemoteAppsUrl_EndpointsEmpty_UNSUCCESS) {
+ EnablePolicyAndPolicyManagerMock();
+
+ const std::string service_type("queryAppsUrl");
+ EndpointUrls endpoints;
+
+ EXPECT_CALL(*mock_policy_manager_, GetUpdateUrls(service_type, _))
+ .WillOnce(SetEndpoint(endpoints));
+
+ const std::string default_url("");
+ EXPECT_EQ(default_url, policy_handler_.RemoteAppsUrl());
+}
+
+TEST_F(PolicyHandlerTest, RemoteAppsUrl_SUCCESS) {
+ EnablePolicyAndPolicyManagerMock();
+
+ const std::string url("url");
+ EndpointData endpoint_data;
+ endpoint_data.url.push_back(url);
+
+ EndpointUrls endpoints;
+ endpoints.push_back(endpoint_data);
+
+ const std::string service_type("queryAppsUrl");
+ EXPECT_CALL(*mock_policy_manager_, GetUpdateUrls(service_type, _))
+ .WillOnce(SetEndpoint(endpoints));
+
+ EXPECT_EQ(url, policy_handler_.RemoteAppsUrl());
+}
+
} // namespace policy_handler_test
} // namespace components
} // namespace test
diff --git a/src/components/application_manager/test/state_controller/state_controller_test.cc b/src/components/application_manager/test/state_controller/state_controller_test.cc
index 3cfbf604f4..eb718c8b8b 100644
--- a/src/components/application_manager/test/state_controller/state_controller_test.cc
+++ b/src/components/application_manager/test/state_controller/state_controller_test.cc
@@ -487,7 +487,7 @@ class StateControllerImplTest : public ::testing::Test {
ApplicationType AppType(uint32_t app_id) {
// TODO(AOleynik): Currently there is ongoing discussion regarding mixed
// application properties, i.e. is_media_application flag from RAI and
- // AppHMITypes (NAVIGATION, etc.). Most likely logic should be changed
+ // AppHmiTypes (NAVIGATION, etc.). Most likely logic should be changed
// after conclusion on APPLINK-20231
std::vector<am::ApplicationSharedPtr>::iterator app = std::find_if(
applications_list_.begin(),
diff --git a/src/components/include/application_manager/application_manager.h b/src/components/include/application_manager/application_manager.h
index 587bd4d98d..180be220cc 100644
--- a/src/components/include/application_manager/application_manager.h
+++ b/src/components/include/application_manager/application_manager.h
@@ -299,6 +299,7 @@ class ApplicationManager {
virtual connection_handler::ConnectionHandler& connection_handler() const = 0;
virtual protocol_handler::ProtocolHandler& protocol_handler() const = 0;
virtual policy::PolicyHandlerInterface& GetPolicyHandler() = 0;
+ virtual const policy::PolicyHandlerInterface& GetPolicyHandler() const = 0;
virtual uint32_t GetNextHMICorrelationID() = 0;
virtual uint32_t GenerateNewHMIAppID() = 0;
@@ -477,9 +478,8 @@ class ApplicationManager {
* @return SUCCESS, if allowed, otherwise result code of check
*/
virtual mobile_apis::Result::eType CheckPolicyPermissions(
- const std::string& policy_app_id,
- mobile_apis::HMILevel::eType hmi_level,
- mobile_apis::FunctionID::eType function_id,
+ const ApplicationSharedPtr app,
+ const std::string& function_id,
const RPCParams& rpc_params,
CommandParametersPermissions* params_permissions = NULL) = 0;
diff --git a/src/components/include/application_manager/policies/policy_handler_interface.h b/src/components/include/application_manager/policies/policy_handler_interface.h
index 80f67ef7cc..8f078cb04b 100644
--- a/src/components/include/application_manager/policies/policy_handler_interface.h
+++ b/src/components/include/application_manager/policies/policy_handler_interface.h
@@ -39,14 +39,17 @@
#include <vector>
#include <queue>
#include "interfaces/MOBILE_API.h"
-#include "policy/policy_types.h"
#include "application_manager/policies/policy_handler_observer.h"
+#include "application_manager/application.h"
#include "policy/usage_statistics/statistics_manager.h"
#include "utils/custom_string.h"
+#include "utils/callable.h"
#include "policy/policy_settings.h"
#include "smart_objects/smart_object.h"
-#include "utils/callable.h"
+#include "policy/policy_types.h"
+#include "policy/policy_table/types.h"
+using namespace ::rpc::policy_table_interface_base;
namespace policy {
typedef utils::SharedPtr<utils::Callable> StatusNotifier;
@@ -81,11 +84,12 @@ class PolicyHandlerInterface {
virtual bool GetPriority(const std::string& policy_app_id,
std::string* priority) const = 0;
- virtual void CheckPermissions(const PTString& app_id,
- const PTString& hmi_level,
- const PTString& rpc,
- const RPCParams& rpc_params,
- CheckPermissionResult& result) = 0;
+ virtual void CheckPermissions(
+ const application_manager::ApplicationSharedPtr app,
+ const PTString& rpc,
+ const RPCParams& rpc_params,
+ CheckPermissionResult& result) = 0;
+
virtual uint32_t GetNotificationsNumber(
const std::string& priority) const = 0;
virtual DeviceConsent GetUserConsentForDevice(
@@ -177,16 +181,23 @@ class PolicyHandlerInterface {
virtual void SetDeviceInfo(const std::string& device_id,
const DeviceInfo& device_info) = 0;
- /**
- * @brief Processes data from OnAppPermissionConsent notification with
- * permissions changes and CCS status changes done by user
- * @param connection_key Connection key of application, 0 if no key has been
- * provided
- * @param permissions Groups permissions changes
- * @param ccs_status Customer connectivity settings status changes
- */
+/**
+*@brief Processes data from OnAppPermissionConsent notification with
+*permissions changes and ExternalConsent status changes done by user
+*@param connection_key Connection key of application, 0 if no key has been
+*provided
+*@param permissions Groups permissions changes
+*@param external_consent_status Customer connectivity settings status changes
+*/
+#ifdef EXTERNAL_PROPRIETARY_MODE
+ virtual void OnAppPermissionConsent(
+ const uint32_t connection_key,
+ const PermissionConsent& permissions,
+ const ExternalConsentStatus& external_consent_status) = 0;
+#else
virtual void OnAppPermissionConsent(const uint32_t connection_key,
const PermissionConsent& permissions) = 0;
+#endif
/**
* @brief Get appropriate message parameters and send them with response
@@ -312,7 +323,9 @@ class PolicyHandlerInterface {
* @param application_id The policy aplication id.
* @return function that will notify update manager about new application
*/
- virtual StatusNotifier AddApplication(const std::string& application_id) = 0;
+ virtual StatusNotifier AddApplication(
+ const std::string& application_id,
+ const rpc::policy_table_interface_base::AppHmiTypes& hmi_types) = 0;
/**
* Checks whether application is revoked
@@ -401,21 +414,28 @@ class PolicyHandlerInterface {
virtual const std::string RemoteAppsUrl() const = 0;
private:
- /**
- * @brief Processes data received via OnAppPermissionChanged notification
- * from. Being started asyncronously from AppPermissionDelegate class.
- * Sets updated permissions and CCS for registered applications and
- * applications which already have appropriate group assigned which related to
- * devices already known by policy
- * @param connection_key Connection key of application, 0 if no key has been
- * provided within notification
- * @param ccs_status Customer connectivity settings changes to process
- * @param permissions Permissions changes to process
- */
+/**
+ * @brief Processes data received via OnAppPermissionChanged notification
+ * from. Being started asyncronously from AppPermissionDelegate class.
+ * Sets updated permissions and ExternalConsent for registered applications
+*and
+ * applications which already have appropriate group assigned which related to
+ * devices already known by policy
+ * @param connection_key Connection key of application, 0 if no key has been
+ * provided within notification
+ * @param external_consent_status Customer connectivity settings changes to
+*process
+*@param permissions Permissions changes to process
+ */
+#ifdef EXTERNAL_PROPRIETARY_MODE
virtual void OnAppPermissionConsentInternal(
const uint32_t connection_key,
- const CCSStatus& ccs_status,
+ const ExternalConsentStatus& external_consent_status,
PermissionConsent& out_permissions) = 0;
+#else
+ virtual void OnAppPermissionConsentInternal(
+ const uint32_t connection_key, PermissionConsent& out_permissions) = 0;
+#endif
friend class AppPermissionDelegate;
};
diff --git a/src/components/include/policy/policy_external/policy/policy_listener.h b/src/components/include/policy/policy_external/policy/policy_listener.h
index b97e819d5f..82dd26a6f7 100644
--- a/src/components/include/policy/policy_external/policy/policy_listener.h
+++ b/src/components/include/policy/policy_external/policy/policy_listener.h
@@ -30,8 +30,8 @@
POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef SRC_COMPONENTS_INCLUDE_POLICY_POLICY_LISTENER_H_
-#define SRC_COMPONENTS_INCLUDE_POLICY_POLICY_LISTENER_H_
+#ifndef SRC_COMPONENTS_POLICY_POLICY_EXTERNAL_INCLUDE_POLICY_POLICY_LISTENER_H_
+#define SRC_COMPONENTS_POLICY_POLICY_EXTERNAL_INCLUDE_POLICY_POLICY_LISTENER_H_
#include <queue>
@@ -115,35 +115,12 @@ class PolicyListener {
virtual void OnCertificateUpdated(const std::string& certificate_data) = 0;
/**
- * Notifies about changing HMI status
- * @param device_id unique identifier of device
- * @param policy_app_id unique identifier of application in policy
- * @param hmi_level default HMI level for this application
- */
- virtual void OnUpdateHMIStatus(const std::string& device_id,
- const std::string& policy_app_id,
- const std::string& hmi_level) = 0;
-
- /**
- * Notifies about changing HMI status
- * @param device_id unique identifier of device
- * @param policy_app_id unique identifier of application in policy
- * @param hmi_level default HMI level for this application
- * @param device_rank device rank
- */
- virtual void OnUpdateHMIStatus(const std::string& device_id,
- const std::string& policy_app_id,
- const std::string& hmi_level,
- const std::string& device_rank) = 0;
-#endif // SDL_REMOTE_CONTROL
-
- virtual KnownConsentsIds GetRegisteredApps() const = 0;
- /**
- * @brief Collects currently registered applications ids linked to their
- * device id
- * @return Collection of device_id-to-app_id links
- */
- virtual ApplicationsLinks GetRegisteredLinks() const = 0;
+ * @brief Collects currently registered applications ids linked to their
+ * device id
+ * @return Collection of device_id-to-app_id links
+ */
+ virtual void GetRegisteredLinks(
+ std::map<std::string, std::string>& out_links) const = 0;
};
} // namespace policy
-#endif // SRC_COMPONENTS_INCLUDE_POLICY_POLICY_LISTENER_H_
+#endif // SRC_COMPONENTS_POLICY_POLICY_EXTERNAL_INCLUDE_POLICY_POLICY_LISTENER_H_
diff --git a/src/components/include/policy/policy_external/policy/policy_manager.h b/src/components/include/policy/policy_external/policy/policy_manager.h
index 86f3124ca7..f6e650b4a5 100644
--- a/src/components/include/policy/policy_external/policy/policy_manager.h
+++ b/src/components/include/policy/policy_external/policy/policy_manager.h
@@ -38,6 +38,7 @@
#include "utils/callable.h"
#include "policy/policy_types.h"
+#include "policy/policy_table/types.h"
#include "policy/policy_listener.h"
#include "usage_statistics/statistics_manager.h"
@@ -77,11 +78,13 @@ class PolicyManager : public usage_statistics::StatisticsManager {
*/
virtual bool ResetPT(const std::string& file_name) = 0;
+ virtual std::string GetUpdateUrl(int service_type) = 0;
+
/**
- * @brief Gets all URLs for sending PTS to from PT itself.
- * @param service_type Service specifies user of URL
- * @return vector of urls
- */
+ * @brief Gets all URLs for sending PTS to from PT itself.
+ * @param service_type Service specifies user of URL
+ * @return vector of urls
+ */
virtual void GetUpdateUrls(const uint32_t service_type,
EndpointUrls& out_end_points) = 0;
@@ -364,7 +367,9 @@ class PolicyManager : public usage_statistics::StatisticsManager {
* @param Application id assigned by Ford to the application
* @return function that will notify update manager about new application
*/
- virtual StatusNotifier AddApplication(const std::string& application_id) = 0;
+ virtual StatusNotifier AddApplication(
+ const std::string& application_id,
+ const rpc::policy_table_interface_base::AppHmiTypes& hmi_types) = 0;
/**
* @brief Removes unpaired device records and related records from DB
@@ -485,6 +490,26 @@ class PolicyManager : public usage_statistics::StatisticsManager {
virtual void SetDecryptedCertificate(const std::string& certificate) = 0;
virtual const PolicySettings& get_settings() const = 0;
+
+ /**
+ * @brief Finds the next URL that must be sent on OnSystemRequest retry
+ * @param urls vector of vectors that contain urls for each application
+ * @return Pair of policy application id and application url id from the
+ * urls vector
+ */
+ virtual AppIdURL GetNextUpdateUrl(const EndpointUrls& urls) = 0;
+
+ /**
+ * @brief Checks if there is existing URL in the EndpointUrls vector with
+ * index saved in the policy manager and if not, it moves to the next
+ * application index
+ * @param rs contains the application index and url index from the
+ * urls vector that are to be sent on the next OnSystemRequest
+ * @param urls vector of vectors that contain urls for each application
+ * @return Pair of application index and url index
+ */
+ virtual AppIdURL RetrySequenceUrl(const struct RetrySequenceURL& rs,
+ const EndpointUrls& urls) const = 0;
/**
* @brief Saves customer connectivity settings status
* @param status ExternalConsent status
diff --git a/src/components/include/policy/policy_regular/policy/policy_manager.h b/src/components/include/policy/policy_regular/policy/policy_manager.h
index cd5879ef73..48d0fe209f 100644
--- a/src/components/include/policy/policy_regular/policy/policy_manager.h
+++ b/src/components/include/policy/policy_regular/policy/policy_manager.h
@@ -110,7 +110,8 @@ class PolicyManager : public usage_statistics::StatisticsManager {
* @param CheckPermissionResult containing flag if HMI Level is allowed
* and list of allowed params.
*/
- virtual void CheckPermissions(const PTString& app_id,
+ virtual void CheckPermissions(const PTString& device_id,
+ const PTString& app_id,
const PTString& hmi_level,
const PTString& rpc,
const RPCParams& rpc_params,
diff --git a/src/components/include/test/application_manager/mock_application_manager.h b/src/components/include/test/application_manager/mock_application_manager.h
index 9d51f60c4d..fc9b213d04 100644
--- a/src/components/include/test/application_manager/mock_application_manager.h
+++ b/src/components/include/test/application_manager/mock_application_manager.h
@@ -132,6 +132,7 @@ class MockApplicationManager : public application_manager::ApplicationManager {
connection_handler::ConnectionHandler&());
MOCK_CONST_METHOD0(protocol_handler, protocol_handler::ProtocolHandler&());
MOCK_METHOD0(GetPolicyHandler, policy::PolicyHandlerInterface&());
+ MOCK_CONST_METHOD0(GetPolicyHandler, const policy::PolicyHandlerInterface&());
MOCK_METHOD0(GetNextHMICorrelationID, uint32_t());
MOCK_METHOD0(GenerateNewHMIAppID, uint32_t());
MOCK_METHOD1(EndNaviServices, void(uint32_t app_id));
@@ -191,13 +192,13 @@ class MockApplicationManager : public application_manager::ApplicationManager {
MOCK_CONST_METHOD2(HMILevelAllowsStreaming,
bool(uint32_t app_id,
protocol_handler::ServiceType service_type));
- MOCK_METHOD5(CheckPolicyPermissions,
+ MOCK_METHOD4(CheckPolicyPermissions,
mobile_apis::Result::eType(
- const std::string&,
- mobile_apis::HMILevel::eType,
- mobile_apis::FunctionID::eType,
- const application_manager::RPCParams&,
- application_manager::CommandParametersPermissions*));
+ const application_manager::ApplicationSharedPtr app,
+ const std::string& function_id,
+ const application_manager::RPCParams& rpc_params,
+ application_manager::CommandParametersPermissions*
+ params_permissions));
MOCK_CONST_METHOD2(IsApplicationForbidden,
bool(uint32_t connection_key,
const std::string& policy_app_id));
@@ -246,6 +247,16 @@ class MockApplicationManager : public application_manager::ApplicationManager {
MOCK_CONST_METHOD0(
AppsWaitingForRegistration,
DataAccessor<application_manager::AppsWaitRegistrationSet>());
+
+ MOCK_METHOD1(ReplaceMobileByHMIAppId,
+ void(smart_objects::SmartObject& message));
+ MOCK_METHOD1(ReplaceHMIByMobileAppId,
+ void(smart_objects::SmartObject& message));
+ MOCK_METHOD1(GetAvailableSpaceForApp,
+ uint32_t(const std::string& folder_name));
+ MOCK_METHOD0(OnTimerSendTTSGlobalProperties, void());
+ MOCK_METHOD0(OnLowVoltage, void());
+ MOCK_METHOD0(OnWakeUp, void());
};
} // namespace application_manager_test
diff --git a/src/components/include/test/application_manager/policies/mock_policy_handler_interface.h b/src/components/include/test/application_manager/policies/mock_policy_handler_interface.h
index 2b14f2226d..f848b8a9cc 100644
--- a/src/components/include/test/application_manager/policies/mock_policy_handler_interface.h
+++ b/src/components/include/test/application_manager/policies/mock_policy_handler_interface.h
@@ -34,6 +34,7 @@
#define SRC_COMPONENTS_INCLUDE_TEST_APPLICATION_MANAGER_POLICIES_MOCK_POLICY_HANDLER_INTERFACE_H_
#include "application_manager/policies/policy_handler_interface.h"
+#include "application_manager/application_manager.h"
#include "gmock/gmock.h"
#include "policy/policy_types.h"
#include "smart_objects/smart_object.h"
@@ -76,11 +77,10 @@ class MockPolicyHandlerInterface : public policy::PolicyHandlerInterface {
MOCK_CONST_METHOD2(GetPriority,
bool(const std::string& policy_app_id,
std::string* priority));
- MOCK_METHOD5(CheckPermissions,
- void(const policy::PTString& app_id,
- const policy::PTString& hmi_level,
+ MOCK_METHOD4(CheckPermissions,
+ void(const application_manager::ApplicationSharedPtr app,
const policy::PTString& rpc,
- const policy::RPCParams& rpc_params,
+ const application_manager::RPCParams& rpc_params,
policy::CheckPermissionResult& result));
MOCK_CONST_METHOD1(GetNotificationsNumber,
uint32_t(const std::string& priority));
@@ -131,9 +131,17 @@ class MockPolicyHandlerInterface : public policy::PolicyHandlerInterface {
MOCK_METHOD2(SetDeviceInfo,
void(const std::string& device_id,
const policy::DeviceInfo& device_info));
+#ifdef EXTERNAL_PROPRIETARY_MODE
+ MOCK_METHOD3(
+ OnAppPermissionConsent,
+ void(const uint32_t connection_key,
+ const policy::PermissionConsent& permissions,
+ const policy::ExternalConsentStatus& external_consent_status));
+#else
MOCK_METHOD2(OnAppPermissionConsent,
void(const uint32_t connection_key,
const policy::PermissionConsent& permissions));
+#endif
MOCK_METHOD3(OnGetUserFriendlyMessage,
void(const std::vector<std::string>& message_codes,
const std::string& language,
@@ -173,8 +181,11 @@ class MockPolicyHandlerInterface : public policy::PolicyHandlerInterface {
const std::string& policy_app_id));
MOCK_METHOD0(OnPTExchangeNeeded, void());
MOCK_METHOD1(GetAvailableApps, void(std::queue<std::string>& apps));
- MOCK_METHOD1(AddApplication,
- policy::StatusNotifier(const std::string& application_id));
+ MOCK_METHOD2(
+ AddApplication,
+ policy::StatusNotifier(
+ const std::string& application_id,
+ const rpc::policy_table_interface_base::AppHmiTypes& hmi_types));
MOCK_METHOD1(IsApplicationRevoked, bool(const std::string& app_id));
MOCK_METHOD0(OnUpdateRequestSentToMobile, void());
MOCK_CONST_METHOD1(HeartBeatTimeout, uint32_t(const std::string& app_id));
@@ -216,10 +227,15 @@ class MockPolicyHandlerInterface : public policy::PolicyHandlerInterface {
policy::EndpointUrls& end_points));
private:
+#ifdef EXTERNAL_PROPRIETARY_MODE
MOCK_METHOD3(OnAppPermissionConsentInternal,
void(const uint32_t,
- const policy::CCSStatus&,
+ const policy::ExternalConsentStatus&,
policy::PermissionConsent&));
+#else
+ MOCK_METHOD2(OnAppPermissionConsentInternal,
+ void(const uint32_t, policy::PermissionConsent&));
+#endif
};
} // namespace policy_test
diff --git a/src/components/include/test/policy/policy_external/policy/mock_policy_listener.h b/src/components/include/test/policy/policy_external/policy/mock_policy_listener.h
index bc7be64aaa..74f333ba11 100644
--- a/src/components/include/test/policy/policy_external/policy/mock_policy_listener.h
+++ b/src/components/include/test/policy/policy_external/policy/mock_policy_listener.h
@@ -89,8 +89,8 @@ class MockPolicyListener : public ::policy::PolicyListener {
void(const std::string& device_id,
const std::string& policy_app_id,
const std::string& hmi_level));
- MOCK_CONST_METHOD0(GetRegisteredApps, policy::KnownConsentsIds());
- MOCK_CONST_METHOD0(GetRegisteredLinks, policy::ApplicationsLinks());
+ MOCK_CONST_METHOD1(GetRegisteredLinks,
+ void(std::map<std::string, std::string>&));
};
} // namespace policy_test
diff --git a/src/components/include/test/policy/policy_external/policy/mock_policy_manager.h b/src/components/include/test/policy/policy_external/policy/mock_policy_manager.h
index a40ab8e1e3..1136c8391d 100644
--- a/src/components/include/test/policy/policy_external/policy/mock_policy_manager.h
+++ b/src/components/include/test/policy/policy_external/policy/mock_policy_manager.h
@@ -61,6 +61,7 @@ class MockPolicyManager : public PolicyManager {
MOCK_METHOD2(LoadPT,
bool(const std::string& file, const BinaryMessage& pt_content));
MOCK_METHOD1(ResetPT, bool(const std::string& file_name));
+ MOCK_METHOD1(GetUpdateUrl, std::string(int service_type));
MOCK_METHOD2(GetUpdateUrls,
void(const uint32_t service_type, EndpointUrls& out_end_points));
MOCK_METHOD2(GetUpdateUrls,
@@ -141,8 +142,11 @@ class MockPolicyManager : public PolicyManager {
MOCK_METHOD1(SendNotificationOnPermissionsUpdated,
void(const std::string& application_id));
MOCK_METHOD1(MarkUnpairedDevice, void(const std::string& device_id));
- MOCK_METHOD1(AddApplication,
- StatusNotifier(const std::string& application_id));
+ MOCK_METHOD2(
+ AddApplication,
+ StatusNotifier(
+ const std::string& application_id,
+ const rpc::policy_table_interface_base::AppHmiTypes& hmi_types));
MOCK_METHOD0(CleanupUnpairedDevices, bool());
MOCK_CONST_METHOD1(CanAppKeepContext, bool(const std::string& app_id));
MOCK_CONST_METHOD1(CanAppStealFocus, bool(const std::string& app_id));
diff --git a/src/components/include/test/policy/policy_regular/policy/mock_policy_manager.h b/src/components/include/test/policy/policy_regular/policy/mock_policy_manager.h
index 9d940191fd..b2ab2b92a5 100644
--- a/src/components/include/test/policy/policy_regular/policy/mock_policy_manager.h
+++ b/src/components/include/test/policy/policy_regular/policy/mock_policy_manager.h
@@ -142,8 +142,11 @@ class MockPolicyManager : public PolicyManager {
MOCK_METHOD1(SendNotificationOnPermissionsUpdated,
void(const std::string& application_id));
MOCK_METHOD1(MarkUnpairedDevice, void(const std::string& device_id));
- MOCK_METHOD1(AddApplication,
- StatusNotifier(const std::string& application_id));
+ MOCK_METHOD2(
+ AddApplication,
+ StatusNotifier(
+ const std::string& application_id,
+ const rpc::policy_table_interface_base::AppHmiTypes& hmi_types));
MOCK_METHOD0(CleanupUnpairedDevices, bool());
MOCK_CONST_METHOD1(CanAppKeepContext, bool(const std::string& app_id));
MOCK_CONST_METHOD1(CanAppStealFocus, bool(const std::string& app_id));
@@ -164,6 +167,7 @@ class MockPolicyManager : public PolicyManager {
MOCK_CONST_METHOD0(GetVehicleInfo, const policy::VehicleInfo());
MOCK_CONST_METHOD0(GetMetaInfo, const policy::MetaInfo());
MOCK_CONST_METHOD0(RetrieveCertificate, std::string());
+ MOCK_CONST_METHOD0(HasCertificate, bool());
MOCK_METHOD1(SetDecryptedCertificate, void(const std::string&));
MOCK_METHOD0(ExceededIgnitionCycles, bool());
MOCK_METHOD0(ExceededDays, bool());
@@ -189,6 +193,13 @@ class MockPolicyManager : public PolicyManager {
MOCK_CONST_METHOD2(RetrySequenceUrl,
AppIdURL(const struct RetrySequenceURL&,
const EndpointUrls& urls));
+ MOCK_METHOD6(CheckPermissions,
+ void(const PTString& device_id,
+ const PTString& app_id,
+ const PTString& hmi_level,
+ const PTString& rpc,
+ const RPCParams& rpc_params,
+ CheckPermissionResult& result));
};
} // namespace policy_manager_test
diff --git a/src/components/interfaces/HMI_API.xml b/src/components/interfaces/HMI_API.xml
index c64bb5829b..c2fda232dd 100644
--- a/src/components/interfaces/HMI_API.xml
+++ b/src/components/interfaces/HMI_API.xml
@@ -1254,6 +1254,25 @@
<description>ID of application that requested this RPC.</description>
</param>
</struct>
+
+ <enum name="EntityStatus">
+ <element name="ON"/>
+ <element name="OFF"/>
+ </enum>
+
+ <struct name="ExternalConsentStatus">
+ <param name="entityType" type="Integer" minvalue="0" maxvalue="128" mandatory="true">
+ <description>The entityType which status is informed by "status" param.</description>
+ </param>
+
+ <param name="entityID" type="Integer" minvalue="0" maxvalue="128" mandatory="true">
+ <description>The corresponding ID of entityType which status is informed by "status" param</description>
+ </param>
+
+ <param name="status" type="Common.EntityStatus" mandatory="true">
+ <description>Status of the ExternalConsentStatus entity: "ON" or "OFF". </description>
+ </param>
+ </struct>
<!-- End of Policies -->
<struct name="TextField">
@@ -4152,8 +4171,8 @@
<param name="appID" type="Integer" mandatory="false">
<description>Information about the application. See HMIApplication. If omitted - allow/disallow all applications </description>
</param>
- <param name="consentedFunctions" type="Common.PermissionItem" mandatory="true" array="true" minsize="1" maxsize="100">
- </param>
+ <param name="consentedFunctions" type="Common.PermissionItem" mandatory="false" array="true" minsize="1" maxsize="100"/>
+ <param name="externalConsentStatus" type="Common.ExternalConsentStatus" mandatory="false" array="true" minsize="1" maxsize="100"/>
<param name="source" type="Common.ConsentSource" mandatory="true"/>
</function>
diff --git a/src/components/media_manager/CMakeLists.txt b/src/components/media_manager/CMakeLists.txt
index b6af26fba3..c5b94ea7e1 100644
--- a/src/components/media_manager/CMakeLists.txt
+++ b/src/components/media_manager/CMakeLists.txt
@@ -42,6 +42,7 @@ include_directories(
${COMPONENTS_DIR}/smart_objects/include/
${COMPONENTS_DIR}/hmi_message_handler/include/
${COMPONENTS_DIR}/formatters/include/
+ ${COMPONENTS_DIR}/rpc_base/include/
${COMPONENTS_DIR}/config_profile/include/
${JSONCPP_INCLUDE_DIRECTORY}
${CMAKE_BINARY_DIR}/src/components/
diff --git a/src/components/policy/policy_external/include/policy/policy_manager_impl.h b/src/components/policy/policy_external/include/policy/policy_manager_impl.h
index 239d46388c..e84b57c366 100644
--- a/src/components/policy/policy_external/include/policy/policy_manager_impl.h
+++ b/src/components/policy/policy_external/include/policy/policy_manager_impl.h
@@ -60,6 +60,8 @@ class PolicyManagerImpl : public PolicyManager {
const PolicySettings* settings);
virtual bool LoadPT(const std::string& file, const BinaryMessage& pt_content);
virtual bool ResetPT(const std::string& file_name);
+
+ virtual std::string GetUpdateUrl(int service_type);
virtual void GetUpdateUrls(const uint32_t service_type,
EndpointUrls& out_end_points);
virtual void GetUpdateUrls(const std::string& service_type,
@@ -167,7 +169,9 @@ class PolicyManagerImpl : public PolicyManager {
bool CanAppStealFocus(const std::string& app_id) const;
void MarkUnpairedDevice(const std::string& device_id);
- StatusNotifier AddApplication(const std::string& application_id);
+ StatusNotifier AddApplication(
+ const std::string& application_id,
+ const rpc::policy_table_interface_base::AppHmiTypes& hmi_types);
virtual void RemoveAppConsentForGroup(const std::string& app_id,
const std::string& group_name);
@@ -211,6 +215,10 @@ class PolicyManagerImpl : public PolicyManager {
AppIdURL RetrySequenceUrl(const struct RetrySequenceURL& rs,
const EndpointUrls& urls) const OVERRIDE;
+ /**
+ * @brief Gets customer connectivity settings status
+ * @return ExternalConsent status
+ */
bool SetExternalConsentStatus(const ExternalConsentStatus& status) OVERRIDE;
ExternalConsentStatus GetExternalConsentStatus() OVERRIDE;
@@ -413,83 +421,6 @@ class PolicyManagerImpl : public PolicyManager {
GroupsNames& out_allowed_groups,
GroupsNames& out_disallowed_groups) const;
- /**
- * @brief Notify application about its permissions changes by preparing and
- * sending OnPermissionsChanged notification
- * @param policy_app_id Application id to send notification to
- * @param app_group_permissons Current permissions for groups assigned to
- * application
- */
- void NotifyPermissionsChanges(
- const std::string& policy_app_id,
- const std::vector<FunctionalGroupPermission>& app_group_permissions);
-
- /**
- * @brief Processes updated CCS status received via OnAppPermissionConsent
- * notification by updating user consents and CCS consents for registered and
- * known before by policy table (must have any user consent records)
- * @param groups_by_status Collection of CCS entities with their statuses
- */
- void ProcessCCSStatusUpdate(const GroupsByCCSStatus& groups_by_status);
-
- /**
- * @brief Processes CCS status for application registered afterward, so its
- * user consents (if any) and CCS consents (if any) will be updated
- * appropiately to current CCS status stored by policy table
- * @param application_id Application id
- */
- void ProcessCCSStatusForApp(const std::string& application_id);
- /**
- * @brief Directly updates user consent and CCS consents (if any) for
- * application if it has assigned any of group from allowed or disallowed
- * lists
- * @param device_id Device id which is linked to application id
- * @param application_id Application id
- * @param allowed_groups List of group names allowed by current CCS status
- * @param disallowed_groups List of group names disallwed by current CCS
- * status
- */
- void UpdateAppConsentWithCCS(const std::string& device_id,
- const std::string& application_id,
- const GroupsNames& allowed_groups,
- const GroupsNames& disallowed_groups);
-
- typedef policy_table::ApplicationPolicies::value_type AppPoliciesValueType;
-
- /**
- * @brief Notifies system by sending OnAppPermissionChanged notification
- * @param app_policy Reference to application policy
- */
- void NotifySystem(const AppPoliciesValueType& app_policy) const;
-
- /**
- * @brief Sends OnPermissionChange notification to application if its
- * currently registered
- * @param app_policy Reference to application policy
- */
- void SendPermissionsToApp(const AppPoliciesValueType& app_policy);
-
- /**
- * @brief Gets groups names from collection of groups permissions
- * @param app_group_permissions Collection of groups permissions
- * @return Collection of group names
- */
- policy_table::Strings GetGroupsNames(
- const std::vector<FunctionalGroupPermission>& app_group_permissions)
- const;
-
- /**
- * @brief Calculates consents for groups based on mapped CCS entities statuses
- * and groups containers where entities have been found
- * @param groups_by_ccs CCS entities mapped to functional groups names and
- * their containters where this entity has been found
- * @param out_allowed_groups List of groups allowed by CCS status
- * @param out_disallowed_groups List of groups disallowed by CCS status
- */
- void CalculateGroupsConsentFromCCS(const GroupsByCCSStatus& groups_by_ccs,
- GroupsNames& out_allowed_groups,
- GroupsNames& out_disallowed_groups) const;
-
PolicyListener* listener_;
UpdateStatusManager update_status_manager_;
diff --git a/src/components/policy/policy_external/include/policy/policy_table/types.h b/src/components/policy/policy_external/include/policy/policy_table/types.h
index b0a0e3a5f5..020ad82880 100644
--- a/src/components/policy/policy_external/include/policy/policy_table/types.h
+++ b/src/components/policy/policy_external/include/policy/policy_table/types.h
@@ -68,7 +68,7 @@ typedef Array<Enum<HmiLevel>, 0, 4> HmiLevels;
typedef Array<Enum<Parameter>, 0, 100> Parameters;
-typedef Map<RpcParameters, 0, 50> Rpc;
+typedef Map<RpcParameters, 0, 65535> Rpc;
typedef Array<String<10, 65535>, 1, 3> URL;
@@ -80,7 +80,7 @@ typedef uint8_t NumberOfNotificationsType;
typedef Map<Integer<NumberOfNotificationsType, 0, 255>, 0, 6>
NumberOfNotificationsPerMinute;
-typedef Array<Integer<uint16_t, 1, 1000>, 0, 10> SecondsBetweenRetries;
+typedef Array<Integer<uint16_t, 1, 1000>, 0, 5> SecondsBetweenRetries;
typedef Map<MessageString, 0, 600> Languages;
@@ -101,6 +101,9 @@ typedef Map<DeviceParams, 0, 255> DeviceData;
typedef Array<Enum<RequestType>, 0, 255> RequestsTypeArray;
+typedef AppHMIType AppHmiType;
+typedef std::vector<AppHMIType> AppHmiTypes;
+
struct RequestTypes : public RequestsTypeArray {
RequestTypes();
explicit RequestTypes(Json::Value* value);
diff --git a/src/components/policy/policy_external/include/policy/policy_types.h b/src/components/policy/policy_external/include/policy/policy_types.h
index 73bd76f0ac..7360fac726 100644
--- a/src/components/policy/policy_external/include/policy/policy_types.h
+++ b/src/components/policy/policy_external/include/policy/policy_types.h
@@ -57,6 +57,7 @@ const std::string kDefaultDeviceConnectionType = "UNKNOWN";
const std::string kPreDataConsentId = "pre_DataConsent";
const std::string kDefaultId = "default";
const std::string kDeviceId = "device";
+const std::string kPrimary = "rc_primaryDevice";
/*
*@brief Policy Services specifies Users of Updates
diff --git a/src/components/policy/policy_external/include/policy/sql_pt_ext_representation.h b/src/components/policy/policy_external/include/policy/sql_pt_ext_representation.h
index 8e38309db5..bd2097cfe3 100644
--- a/src/components/policy/policy_external/include/policy/sql_pt_ext_representation.h
+++ b/src/components/policy/policy_external/include/policy/sql_pt_ext_representation.h
@@ -135,6 +135,10 @@ class SQLPTExtRepresentation : public SQLPTRepresentation,
ExternalConsentStatus GetExternalConsentStatus() const;
private:
+ enum ExternalConsentEntitiesType {
+ kExternalConsentEntitiesTypeOn,
+ kExternalConsentEntitiesTypeOff
+ };
void GatherModuleMeta(policy_table::ModuleMeta* meta) const;
void GatherPreconsentedGroup(const std::string& app_id,
policy_table::Strings* groups) const;
@@ -202,6 +206,11 @@ class SQLPTExtRepresentation : public SQLPTRepresentation,
*/
bool IsMsgLanguagePresent(const std::string& message,
const std::string& language);
+
+ bool SaveExternalConsentEntities(
+ const int64_t group_id,
+ const policy_table::DisallowedByExternalConsentEntities& entities,
+ ExternalConsentEntitiesType type) const;
};
} // namespace policy
diff --git a/src/components/policy/policy_external/include/policy/sql_pt_queries.h b/src/components/policy/policy_external/include/policy/sql_pt_queries.h
index d515624b32..685c84742f 100644
--- a/src/components/policy/policy_external/include/policy/sql_pt_queries.h
+++ b/src/components/policy/policy_external/include/policy/sql_pt_queries.h
@@ -72,7 +72,6 @@ extern const std::string kSelectDays;
extern const std::string kSelectTimeoutResponse;
extern const std::string kInsertFunctionalGroup;
extern const std::string kInsertRpc;
-extern const std::string kInsertExternalConsentEntity;
extern const std::string kInsertRpcWithParameter;
extern const std::string kInsertApplication;
extern const std::string kInsertAppGroup;
@@ -116,6 +115,31 @@ extern const std::string kInsertApplicationFull;
extern const std::string kDeletePreconsentedGroupsByApplicationId;
extern const std::string kSelectApplicationFull;
extern const std::string kUpdatePreloaded;
+extern const std::string kUpdateRemoteControlDenied;
+extern const std::string kSelectRemoteControlDenied;
+extern const std::string kDeleteAppGroupPrimaryByApplicationId;
+extern const std::string kDeleteAppGroupNonPrimaryByApplicationId;
+extern const std::string kCollectFriendlyMsg;
+extern const std::string kSelectAppGroupsPrimary;
+extern const std::string kSelectAppGroupsNonPrimary;
+extern const std::string kSelectModuleTypes;
+extern const std::string kInsertAppGroupPrimary;
+extern const std::string kInsertAppGroupNonPrimary;
+extern const std::string kInsertModuleType;
+extern const std::string kInsertInteriorZone;
+extern const std::string kCountInteriorZones;
+extern const std::string kSelectInteriorZones;
+extern const std::string kDeleteInteriorZones;
+extern const std::string kInsertAccessModule;
+extern const std::string kSelectAccessModules;
+extern const std::string kDeleteAccessModules;
+extern const std::string kInsertRemoteRpc;
+extern const std::string kSelectRemoteRpcs;
+extern const std::string kDeleteRemoteRpc;
+extern const std::string kDeleteAppGroupPrimary;
+extern const std::string kDeleteAppGroupNonPrimary;
+extern const std::string kDeleteModuleTypes;
+extern const std::string kDeleteAllDevices;
extern const std::string kSelectDBVersion;
extern const std::string kUpdateDBVersion;
} // namespace sql_pt
diff --git a/src/components/policy/policy_external/include/policy/sql_pt_representation.h b/src/components/policy/policy_external/include/policy/sql_pt_representation.h
index 0a2aab78e7..b3ce0a69be 100644
--- a/src/components/policy/policy_external/include/policy/sql_pt_representation.h
+++ b/src/components/policy/policy_external/include/policy/sql_pt_representation.h
@@ -182,22 +182,16 @@ class SQLPTRepresentation : public virtual PTRepresentation {
#ifdef BUILD_TESTS
uint32_t open_counter_;
#endif // BUILD_TESTS
-
enum ExternalConsentEntitiesType {
kExternalConsentEntitiesTypeOn,
kExternalConsentEntitiesTypeOff
};
-
/**
* @brief Calculates DB version from current schema
* @return version
*/
const int32_t GetDBVersion() const;
bool SaveRpcs(int64_t group_id, const policy_table::Rpc& rpcs);
- bool SaveExternalConsentEntities(
- const int64_t group_id,
- const policy_table::DisallowedByExternalConsentEntities& entities,
- ExternalConsentEntitiesType type) const;
bool SaveServiceEndpoints(const policy_table::ServiceEndpoints& endpoints);
bool SaveSecondsBetweenRetries(
const policy_table::SecondsBetweenRetries& seconds);
@@ -207,6 +201,10 @@ class SQLPTRepresentation : public virtual PTRepresentation {
bool SaveLanguage(const std::string& code);
bool is_in_memory;
+ bool SaveExternalConsentEntities(
+ const int64_t group_id,
+ const policy_table::DisallowedByExternalConsentEntities& entities,
+ ExternalConsentEntitiesType type) const;
};
} // namespace policy
diff --git a/src/components/policy/policy_external/include/policy/status.h b/src/components/policy/policy_external/include/policy/status.h
index 6318c5fade..53925c599a 100644
--- a/src/components/policy/policy_external/include/policy/status.h
+++ b/src/components/policy/policy_external/include/policy/status.h
@@ -132,7 +132,7 @@ class UpToDateStatus : public Status {
* @param manager Status manager pointer
* @param event Event which needs to be processed
*/
- void ProcessEvent(UpdateStatusManager* manager, UpdateEvent event) FINAL;
+ void ProcessEvent(UpdateStatusManager* manager, UpdateEvent event) OVERRIDE;
};
/**
@@ -151,13 +151,13 @@ class UpdateNeededStatus : public Status {
* @param manager Status manager pointer
* @param event Event which needs to be processed
*/
- void ProcessEvent(UpdateStatusManager* manager, UpdateEvent event) FINAL;
+ void ProcessEvent(UpdateStatusManager* manager, UpdateEvent event) OVERRIDE;
/**
* @brief Check whether update is required in terms of status
* @return True if update is required, otherwise - false
*/
- bool IsUpdateRequired() const FINAL;
+ bool IsUpdateRequired() const OVERRIDE;
};
/**
@@ -176,19 +176,19 @@ class UpdatingStatus : public Status {
* @param manager Status manager pointer
* @param event Event which needs to be processed
*/
- void ProcessEvent(UpdateStatusManager* manager, UpdateEvent event) FINAL;
+ void ProcessEvent(UpdateStatusManager* manager, UpdateEvent event) OVERRIDE;
/**
* @brief Check whether update is required in terms of status
* @return True if update is required, otherwise - false
*/
- bool IsUpdateRequired() const FINAL;
+ bool IsUpdateRequired() const OVERRIDE;
/**
* @brief Check whether update is pending in terms of status
* @return True if update is pending, otherwise - false
*/
- bool IsUpdatePending() const FINAL;
+ bool IsUpdatePending() const OVERRIDE;
};
}
diff --git a/src/components/policy/policy_external/src/cache_manager.cc b/src/components/policy/policy_external/src/cache_manager.cc
index b7f4f553d7..e3b14668a8 100644
--- a/src/components/policy/policy_external/src/cache_manager.cc
+++ b/src/components/policy/policy_external/src/cache_manager.cc
@@ -74,19 +74,6 @@ bool IsEntityExists(
}
/**
- * @brief Returns group consent record constructed from input group permissions
- */
-struct ExternalConsentConsentGroupAppender
- : public std::unary_function<policy_table::ConsentGroups,
- const policy::FunctionalGroupPermission&> {
- policy_table::ConsentGroups::value_type operator()(
- const policy::FunctionalGroupPermission& value) const {
- return std::make_pair(value.group_name,
- rpc::Boolean(value.state == policy::kGroupAllowed));
- }
-};
-
-/**
* @brief Looks for ExternalConsent entity in
* disallowed_by_external_consent_entities_on/off sections
* of each functional group
@@ -205,6 +192,20 @@ struct LinkCollector
std::string device_id_;
std::map<std::string, std::string>& links_;
};
+
+/**
+ * @brief Returns group consent record constructed from input group permissions
+ */
+struct ExternalConsentConsentGroupAppender
+ : public std::unary_function<policy_table::ConsentGroups,
+ const policy::FunctionalGroupPermission&> {
+ policy_table::ConsentGroups::value_type operator()(
+ const policy::FunctionalGroupPermission& value) const {
+ return std::make_pair(value.group_name,
+ rpc::Boolean(value.state == policy::kGroupAllowed));
+ }
+};
+
} // namespace
namespace policy {
diff --git a/src/components/policy/policy_external/src/policy_manager_impl.cc b/src/components/policy/policy_external/src/policy_manager_impl.cc
index 6e0ccb2fb6..a350a5d12a 100644
--- a/src/components/policy/policy_external/src/policy_manager_impl.cc
+++ b/src/components/policy/policy_external/src/policy_manager_impl.cc
@@ -83,128 +83,6 @@ struct GroupNamesAppender
*/
struct ConsentsUpdater
: public std::unary_function<void, policy::FunctionalGroupPermission&> {
- ConsentsUpdater(
- const policy::GroupsNames& allowed,
- const policy::GroupsNames& disallowed,
- std::vector<policy::FunctionalGroupPermission>& out_ccs_matches)
- : allowed_(allowed)
- , disallowed_(disallowed)
- , out_ccs_matches_(out_ccs_matches) {}
-
- void operator()(policy::FunctionalGroupPermission& value) {
- using namespace policy;
-
- GroupsNames::iterator it_disallowed =
- std::find(disallowed_.begin(), disallowed_.end(), value.group_name);
-
- if (disallowed_.end() != it_disallowed) {
- value.state = kGroupDisallowed;
- out_ccs_matches_.push_back(value);
- return;
- }
-
- GroupsNames::iterator it_allowed =
- std::find(allowed_.begin(), allowed_.end(), value.group_name);
-
- if (allowed_.end() != it_allowed) {
- value.state = kGroupAllowed;
- out_ccs_matches_.push_back(value);
- }
- }
-
- private:
- const policy::GroupsNames& allowed_;
- const policy::GroupsNames& disallowed_;
- std::vector<policy::FunctionalGroupPermission>& out_ccs_matches_;
-};
-
-/**
- * @brief Checks whether CCS entity status is the same as name of group
- * container where entity has been found in. In case of match group is added to
- * 'disallowed' list, otherwise - to 'allowed' one.
- * E.g. if entity has "ON" status and is found in
- * 'disallowed_by_ccs_entities_on' it will be added to 'disallowed'. If it has
- * been found in 'disallowed_by_ccs_entities_off' than group is added to
- * 'allowed' list.
- */
-struct GroupChecker
- : std::unary_function<void,
- policy::GroupsByCCSStatus::mapped_type::value_type> {
- GroupChecker(const policy::EntityStatus entity_status,
- policy::GroupsNames& out_allowed,
- policy::GroupsNames& out_disallowed)
- : entity_status_(entity_status)
- , out_allowed_(out_allowed)
- , out_disallowed_(out_disallowed) {}
-
- void operator()(
- const policy::GroupsByCCSStatus::mapped_type::value_type value) {
- using namespace policy;
-
- const std::string group_name = value.first;
-
- if ((value.second && (kStatusOn == entity_status_)) ||
- (!value.second && (kStatusOff == entity_status_))) {
- out_disallowed_.insert(group_name);
- } else {
- out_allowed_.insert(group_name);
- }
- }
-
- private:
- const policy::EntityStatus entity_status_;
- policy::GroupsNames& out_allowed_;
- policy::GroupsNames& out_disallowed_;
-};
-
-/**
- * @brief Sorts groups for 'allowed' and 'disallowed' by CCS entities statuses.
- * Wraps GroupChecker logic.
- */
-struct GroupSorter
- : std::unary_function<void, const policy::GroupsByCCSStatus::value_type&> {
- GroupSorter(policy::GroupsNames& out_allowed,
- policy::GroupsNames& out_disallowed)
- : out_allowed_(out_allowed), out_disallowed_(out_disallowed) {}
-
- void operator()(const policy::GroupsByCCSStatus::value_type& value) {
- GroupChecker checker(value.first.status_, out_allowed_, out_disallowed_);
- std::for_each(value.second.begin(), value.second.end(), checker);
- }
-
- private:
- policy::GroupsNames& out_allowed_;
- policy::GroupsNames& out_disallowed_;
-};
-
-} // namespace
-
-namespace {
-
-/**
- * @brief Extracts group name from group permission structure
- */
-struct GroupNamesAppender
- : public std::unary_function<void,
- const policy::FunctionalGroupPermission&> {
- GroupNamesAppender(policy_table::Strings& names) : names_(names) {}
-
- void operator()(const policy::FunctionalGroupPermission& value) {
- names_.push_back(value.group_name);
- }
-
- private:
- policy_table::Strings& names_;
-};
-
-/**
- * @brief Updates permission state of input group permission value in case
- * group name is found within allowed or disallowed groups lists
- * Also collects matched groups names to separate collection for futher
- * processing
- */
-struct ConsentsUpdater
- : public std::unary_function<void, policy::FunctionalGroupPermission&> {
ConsentsUpdater(const policy::GroupsNames& allowed,
const policy::GroupsNames& disallowed,
std::vector<policy::FunctionalGroupPermission>&
@@ -357,6 +235,10 @@ void PolicyManagerImpl::CheckTriggers() {
}
}
+std::string PolicyManagerImpl::GetLockScreenIconUrl() const {
+ return cache_->GetLockScreenIconUrl();
+}
+
bool PolicyManagerImpl::LoadPT(const std::string& file,
const BinaryMessage& pt_content) {
LOG4CXX_INFO(logger_, "LoadPT of size " << pt_content.size());
@@ -404,11 +286,11 @@ bool PolicyManagerImpl::LoadPT(const std::string& file,
return false;
}
- CCSStatus status = cache_->GetCCSStatus();
- GroupsByCCSStatus groups_by_status =
+ ExternalConsentStatus status = cache_->GetExternalConsentStatus();
+ GroupsByExternalConsentStatus groups_by_status =
cache_->GetGroupsWithSameEntities(status);
- ProcessCCSStatusUpdate(groups_by_status);
+ ProcessExternalConsentStatusUpdate(groups_by_status);
ProcessAppPolicyCheckResults(
results, pt_update->policy_table.app_policies_section.apps);
@@ -482,7 +364,7 @@ void PolicyManagerImpl::ProcessAppPolicyCheckResults(
continue;
case RESULT_CONSENT_NEEDED:
case RESULT_PERMISSIONS_REVOKED_AND_CONSENT_NEEDED: {
- // Post-check after CCS consent changes
+ // Post-check after ExternalConsent consent changes
const std::string policy_app_id = app_policy->first;
if (!IsConsentNeeded(policy_app_id)) {
sync_primitives::AutoLock lock(app_permissions_diff_lock_);
@@ -517,6 +399,27 @@ void PolicyManagerImpl::PrepareNotificationData(
std::for_each(group_names.begin(), group_names.end(), processor);
}
+std::string PolicyManagerImpl::GetUpdateUrl(int service_type) {
+ LOG4CXX_AUTO_TRACE(logger_);
+ EndpointUrls urls;
+ GetUpdateUrls(service_type, urls);
+
+ std::string url;
+ if (!urls.empty()) {
+ static uint32_t index = 0;
+
+ if (index >= urls.size()) {
+ index = 0;
+ }
+ url = urls[index].url.empty() ? "" : urls[index].url[0];
+
+ ++index;
+ } else {
+ LOG4CXX_ERROR(logger_, "The endpoint entry is empty");
+ }
+ return url;
+}
+
void PolicyManagerImpl::GetUpdateUrls(const std::string& service_type,
EndpointUrls& out_end_points) {
LOG4CXX_AUTO_TRACE(logger_);
@@ -1320,17 +1223,110 @@ const PolicySettings& PolicyManagerImpl::get_settings() const {
return *settings_;
}
-bool PolicyManagerImpl::SetExternalConsentStatus(
- const ExternalConsentStatus& status) {
- LOG4CXX_AUTO_TRACE(logger_);
+void PolicyManagerImpl::UpdateAppConsentWithExternalConsent(
+ const std::string& device_id,
+ const std::string& application_id,
+ const GroupsNames& allowed_groups,
+ const GroupsNames& disallowed_groups) {
+ std::vector<FunctionalGroupPermission> current_permissions;
+ GetUserConsentForApp(device_id, application_id, current_permissions);
+
+ std::vector<FunctionalGroupPermission> external_consent_groups_matches;
+ ConsentsUpdater updater(
+ allowed_groups, disallowed_groups, external_consent_groups_matches);
+ std::for_each(
+ current_permissions.begin(), current_permissions.end(), updater);
- if (status.empty()) {
- LOG4CXX_INFO(logger_, "External consent status is empty, skipping update.");
- return false;
+ const std::string source = "GUI";
+
+ PermissionConsent updated_user_permissions;
+ updated_user_permissions.group_permissions = current_permissions;
+ updated_user_permissions.device_id = device_id;
+ updated_user_permissions.policy_app_id = application_id;
+ updated_user_permissions.consent_source = source;
+
+ // Need to check to which app to send notification since maybe app registered
+ // from different device
+ SetUserConsentForApp(updated_user_permissions);
+
+ PermissionConsent updated_external_consent_permissions;
+ updated_external_consent_permissions.group_permissions =
+ external_consent_groups_matches;
+ updated_external_consent_permissions.device_id = device_id;
+ updated_external_consent_permissions.policy_app_id = application_id;
+ updated_user_permissions.consent_source = source;
+
+ cache_->SetExternalConsentForApp(updated_external_consent_permissions);
+}
+
+void PolicyManagerImpl::NotifySystem(
+ const PolicyManagerImpl::AppPoliciesValueType& app_policy) const {
+ listener()->OnPendingPermissionChange(app_policy.first);
+}
+
+void PolicyManagerImpl::SendPermissionsToApp(
+ const PolicyManagerImpl::AppPoliciesValueType& app_policy) {
+ const std::string app_id = app_policy.first;
+
+ const std::string device_id = GetCurrentDeviceId(app_id);
+ if (device_id.empty()) {
+ LOG4CXX_WARN(logger_,
+ "Couldn't find device info for application id: " << app_id);
+ return;
+ }
+ std::vector<FunctionalGroupPermission> group_permissons;
+ GetPermissionsForApp(device_id, app_id, group_permissons);
+
+ Permissions notification_data;
+
+ // Need to get rid of this call
+ utils::SharedPtr<policy_table::Table> policy_table_snapshot =
+ cache_->GenerateSnapshot();
+
+ PrepareNotificationData(
+ policy_table_snapshot->policy_table.functional_groupings,
+ app_policy.second.groups,
+ group_permissons,
+ notification_data);
+
+ LOG4CXX_INFO(logger_, "Send notification for application_id: " << app_id);
+ listener()->OnPermissionsUpdated(
+ app_id,
+ notification_data,
+ policy_table::EnumToJsonString(app_policy.second.default_hmi));
+}
+
+void PolicyManagerImpl::ProcessExternalConsentStatusUpdate(
+ const GroupsByExternalConsentStatus& groups_by_status) {
+ GroupsNames allowed_groups;
+ GroupsNames disallowed_groups;
+ CalculateGroupsConsentFromExternalConsent(
+ groups_by_status, allowed_groups, disallowed_groups);
+
+ std::map<std::string, std::string> known_links =
+ cache_->GetKnownLinksFromPT();
+ std::map<std::string, std::string> registered_links;
+ listener_->GetRegisteredLinks(registered_links);
+
+ std::map<std::string, std::string> all_known;
+ std::merge(known_links.begin(),
+ known_links.end(),
+ registered_links.begin(),
+ registered_links.end(),
+ std::inserter(all_known, all_known.begin()));
+
+ std::map<std::string, std::string>::const_iterator it_links =
+ all_known.begin();
+ for (; all_known.end() != it_links; ++it_links) {
+ UpdateAppConsentWithExternalConsent(
+ it_links->first, it_links->second, allowed_groups, disallowed_groups);
}
+}
+bool PolicyManagerImpl::SetExternalConsentStatus(
+ const ExternalConsentStatus& status) {
+ LOG4CXX_AUTO_TRACE(logger_);
if (!cache_->SetExternalConsentStatus(status)) {
- LOG4CXX_WARN(logger_, "Can't set external user consent status.");
return false;
}
@@ -1606,8 +1602,9 @@ AppIdURL PolicyManagerImpl::RetrySequenceUrl(const struct RetrySequenceURL& rs,
app_idx = 0;
}
}
+ const AppIdURL next_app_url = std::make_pair(app_idx, url_idx);
- return std::make_pair(app_idx, url_idx);
+ return next_app_url;
}
/**
@@ -1630,18 +1627,23 @@ class CallStatusChange : public utils::Callable {
};
StatusNotifier PolicyManagerImpl::AddApplication(
- const std::string& application_id) {
+ const std::string& application_id,
+ const rpc::policy_table_interface_base::AppHmiTypes& hmi_types) {
LOG4CXX_AUTO_TRACE(logger_);
const std::string device_id = GetCurrentDeviceId(application_id);
DeviceConsent device_consent = GetUserConsentForDevice(device_id);
sync_primitives::AutoLock lock(apps_registration_lock_);
-
if (IsNewApplication(application_id)) {
AddNewApplication(application_id, device_consent);
return utils::MakeShared<CallStatusChange>(update_status_manager_,
device_consent);
} else {
PromoteExistedApplication(application_id, device_consent);
+ if (helpers::in_range(hmi_types, policy_table::AHT_NAVIGATION) &&
+ !HasCertificate()) {
+ LOG4CXX_DEBUG(logger_, "Certificate does not exist, scheduling update.");
+ update_status_manager_.ScheduleUpdate();
+ }
return utils::MakeShared<utils::CallNothing>();
}
}
@@ -1657,19 +1659,19 @@ bool PolicyManagerImpl::IsPredataPolicy(
return cache_->IsPredataPolicy(policy_app_id);
}
-void PolicyManagerImpl::ProcessCCSStatusForApp(
+void PolicyManagerImpl::ProcessExternalConsentStatusForApp(
const std::string& application_id) {
- CCSStatus status = cache_->GetCCSStatus();
- GroupsByCCSStatus groups_by_status =
+ ExternalConsentStatus status = cache_->GetExternalConsentStatus();
+ GroupsByExternalConsentStatus groups_by_status =
cache_->GetGroupsWithSameEntities(status);
GroupsNames allowed_groups;
GroupsNames disallowed_groups;
- CalculateGroupsConsentFromCCS(
+ CalculateGroupsConsentFromExternalConsent(
groups_by_status, allowed_groups, disallowed_groups);
const std::string device_id = GetCurrentDeviceId(application_id);
- UpdateAppConsentWithCCS(
+ UpdateAppConsentWithExternalConsent(
device_id, application_id, allowed_groups, disallowed_groups);
}
@@ -1692,7 +1694,7 @@ void PolicyManagerImpl::AddNewApplication(const std::string& application_id,
cache_->SetDefaultPolicy(application_id);
}
- ProcessCCSStatusForApp(application_id);
+ ProcessExternalConsentStatusForApp(application_id);
}
void PolicyManagerImpl::PromoteExistedApplication(
@@ -1703,8 +1705,7 @@ void PolicyManagerImpl::PromoteExistedApplication(
cache_->IsPredataPolicy(application_id)) {
cache_->SetDefaultPolicy(application_id);
}
-
- ProcessCCSStatusForApp(application_id);
+ ProcessExternalConsentStatusForApp(application_id);
}
bool PolicyManagerImpl::IsNewApplication(
diff --git a/src/components/policy/policy_external/src/policy_table/types.cc b/src/components/policy/policy_external/src/policy_table/types.cc
index 4d7d63ce51..74e43e4cc6 100644
--- a/src/components/policy/policy_external/src/policy_table/types.cc
+++ b/src/components/policy/policy_external/src/policy_table/types.cc
@@ -1608,7 +1608,7 @@ Json::Value ConsentRecords::ToJsonValue() const {
bool ConsentRecords::is_valid() const {
if (struct_empty()) {
- return initialization_state__ == kInitialized && Validate();
+ return initialization_state__ == kUninitialized && Validate();
}
if (!consent_groups.is_valid()) {
return false;
@@ -2079,7 +2079,7 @@ ExternalConsentEntity::ExternalConsentEntity(const Json::Value* value__)
ExternalConsentEntity::ExternalConsentEntity(const int32_t type,
const int32_t id)
- : CompositeType(kUninitialized), entity_type(type), entity_id(id) {}
+ : CompositeType(kInitialized), entity_type(type), entity_id(id) {}
Json::Value ExternalConsentEntity::ToJsonValue() const {
Json::Value result__(Json::objectValue);
diff --git a/src/components/policy/policy_external/src/sql_pt_ext_representation.cc b/src/components/policy/policy_external/src/sql_pt_ext_representation.cc
index fd49464528..4588076801 100644
--- a/src/components/policy/policy_external/src/sql_pt_ext_representation.cc
+++ b/src/components/policy/policy_external/src/sql_pt_ext_representation.cc
@@ -1010,6 +1010,31 @@ void SQLPTExtRepresentation::GatherConsentGroup(
*app_consent_records->input = input;
*app_consent_records->time_stamp = query.GetString(5);
}
+ if (!query.Reset()) {
+ return;
+ }
+
+ // Fill data for ExternalConsent consents
+ if (!query.Prepare(sql_pt_ext::kSelectExternalConsentStatusGroup)) {
+ LOG4CXX_WARN(
+ logger_,
+ "Incorrect select statement for ExternalConsent consented groups.");
+ return;
+ }
+
+ query.Bind(0, device_id);
+
+ // Fill device_data -> user_consent_records -> <app_id> ->
+ // external_consent_status_groups
+ while (query.Next()) {
+ policy_table::ConsentRecords* app_consent_records =
+ &(*records)[query.GetString(1)];
+ policy_table::ConsentGroups& external_consent_status_groups =
+ *app_consent_records->external_consent_status_groups;
+ external_consent_status_groups[query.GetString(2)] = query.GetBoolean(3);
+ policy_table::Input input;
+ policy_table::EnumFromJsonString(query.GetString(4), &input);
+ }
}
bool SQLPTExtRepresentation::SaveDeviceData(
@@ -1129,6 +1154,37 @@ bool SQLPTExtRepresentation::SaveConsentGroup(
return false;
}
}
+
+ policy_table::ConsentGroups::const_iterator it_external_consent_consent =
+ it->second.external_consent_status_groups->begin();
+ policy_table::ConsentGroups::const_iterator end_external_consent_consent =
+ it->second.external_consent_status_groups->end();
+
+ for (; end_external_consent_consent != it_external_consent_consent;
+ ++it_external_consent_consent) {
+ if (!query.Prepare(sql_pt_ext::kInsertExternalConsentStatusGroups)) {
+ LOG4CXX_WARN(logger_,
+ "Incorrect insert statement for external consent group.");
+ return false;
+ }
+ query.Bind(0, device_id);
+ query.Bind(1, it->first);
+ query.Bind(2, it_external_consent_consent->first);
+ query.Bind(3, it_external_consent_consent->second);
+ query.Bind(
+ 4, std::string(policy_table::EnumToJsonString(*(it->second.input))));
+ query.Bind(5, std::string(*(it->second.time_stamp)));
+ LOG4CXX_INFO(logger_,
+ "Device:"
+ << "time stamp " << std::string(*(it->second.time_stamp))
+ << " group " << it_external_consent_consent->first
+ << " consent " << it_external_consent_consent->second);
+
+ if (!query.Exec() || !query.Reset()) {
+ LOG4CXX_WARN(logger_, "Incorrect insert into external consent group.");
+ return false;
+ }
+ } // external_consent_consent_group
}
return true;
@@ -1768,8 +1824,7 @@ bool SQLPTExtRepresentation::SetVINValue(const std::string& value) {
return result;
}
-
-bool SQLPTExtRepresentation::SetExternalConsentStatus(
+bool SQLPTExtRepresentation::SaveExternalConsentStatus(
const ExternalConsentStatus& status) const {
LOG4CXX_AUTO_TRACE(logger_);
utils::dbms::SQLQuery query(db());
@@ -1821,4 +1876,39 @@ ExternalConsentStatus SQLPTExtRepresentation::GetExternalConsentStatus() const {
return status;
}
+bool SQLPTExtRepresentation::RemoveAppConsentForGroup(
+ const std::string& policy_app_id,
+ const std::string& functional_group_name) const {
+ utils::dbms::SQLQuery query_group_id(db());
+ if (!query_group_id.Prepare(sql_pt_ext::kSelectGroupId)) {
+ LOG4CXX_WARN(logger_, "Incorect statement for select group name.");
+ return false;
+ }
+
+ query_group_id.Bind(0, functional_group_name);
+
+ if (!query_group_id.Exec()) {
+ LOG4CXX_WARN(logger_, "Failed to select group id.");
+ return false;
+ }
+
+ const int id = query_group_id.GetInteger(0);
+
+ utils::dbms::SQLQuery query(db());
+ if (!query.Prepare(sql_pt_ext::kDeleteAppGroupConsent)) {
+ LOG4CXX_WARN(logger_, "Incorect statement for remove app consent.");
+ return false;
+ }
+
+ query.Bind(0, policy_app_id);
+ query.Bind(1, id);
+
+ if (!query.Exec()) {
+ LOG4CXX_WARN(logger_, "Failed to remove app consent.");
+ return false;
+ }
+
+ return true;
+}
+
} // namespace policy
diff --git a/src/components/policy/policy_external/src/sql_pt_queries.cc b/src/components/policy/policy_external/src/sql_pt_queries.cc
index 1b514dff52..54648f7ea2 100644
--- a/src/components/policy/policy_external/src/sql_pt_queries.cc
+++ b/src/components/policy/policy_external/src/sql_pt_queries.cc
@@ -76,7 +76,9 @@ const std::string kCreateSchema =
" `vehicle_model` VARCHAR(45), "
" `vehicle_year` VARCHAR(4), "
" `preloaded_date` VARCHAR (10), "
- " `certificate` VARCHAR (45) "
+ " `certificate` VARCHAR (45), "
+ " `user_consent_passengersRC` BOOL,"
+ " `country_consent_passengersRC` BOOL "
"); "
"CREATE TABLE IF NOT EXISTS `functional_group`( "
" `id` INTEGER PRIMARY KEY NOT NULL, "
@@ -147,6 +149,7 @@ const std::string kCreateSchema =
" `is_predata` BOOLEAN, "
" `memory_kb` INTEGER NOT NULL, "
" `heart_beat_timeout_ms` INTEGER NOT NULL, "
+ " `remote_control_denied` BOOLEAN NOT NULL DEFAULT 0, "
" CONSTRAINT `fk_application_hmi_level1` "
" FOREIGN KEY(`default_hmi`) "
" REFERENCES `hmi_level`(`value`), "
@@ -347,6 +350,97 @@ const std::string kCreateSchema =
" FOREIGN KEY(`message_type_name`) "
" REFERENCES `message_type`(`name`) "
"); "
+
+ "CREATE TABLE IF NOT EXISTS `app_group_primary`( "
+ " `application_id` VARCHAR(45) NOT NULL, "
+ " `functional_group_id` INTEGER NOT NULL, "
+ " PRIMARY KEY(`application_id`,`functional_group_id`), "
+ " CONSTRAINT `fk_application_has_functional_group_application1` "
+ " FOREIGN KEY(`application_id`) "
+ " REFERENCES `application`(`id`), "
+ " CONSTRAINT `fk_application_has_functional_group_functional_group1` "
+ " FOREIGN KEY(`functional_group_id`) "
+ " REFERENCES `functional_group`(`id`) "
+ "); "
+ "CREATE INDEX IF NOT EXISTS "
+ "`app_group_primary.fk_application_has_functional_group_functional_group1_"
+ "idx` "
+ " ON `app_group_primary`(`functional_group_id`); "
+ "CREATE INDEX IF NOT EXISTS "
+ "`app_group_primary.fk_application_has_functional_group_application1_idx` "
+ " ON `app_group_primary`(`application_id`); "
+
+ "CREATE TABLE IF NOT EXISTS `app_group_non_primary`( "
+ " `application_id` VARCHAR(45) NOT NULL, "
+ " `functional_group_id` INTEGER NOT NULL, "
+ " PRIMARY KEY(`application_id`,`functional_group_id`), "
+ " CONSTRAINT `fk_application_has_functional_group_application1` "
+ " FOREIGN KEY(`application_id`) "
+ " REFERENCES `application`(`id`), "
+ " CONSTRAINT `fk_application_has_functional_group_functional_group1` "
+ " FOREIGN KEY(`functional_group_id`) "
+ " REFERENCES `functional_group`(`id`) "
+ "); "
+ "CREATE INDEX IF NOT EXISTS "
+ "`app_group_non_primary.fk_application_has_functional_group_functional_"
+ "group1_idx` "
+ " ON `app_group_non_primary`(`functional_group_id`); "
+ "CREATE INDEX IF NOT EXISTS "
+ "`app_group_non_primary.fk_application_has_functional_group_application1_"
+ "idx` "
+ " ON `app_group_non_primary`(`application_id`); "
+
+ /* interior_zone */
+ "CREATE TABLE `interior_zone`( "
+ " `id` INTEGER PRIMARY KEY NOT NULL, "
+ " `name` VARCHAR(100) NOT NULL, "
+ " `col` INTEGER NOT NULL, "
+ " `row` INTEGER NOT NULL, "
+ " `level` INTEGER NOT NULL "
+ "); "
+ "CREATE UNIQUE INDEX `interior_zone.room` ON "
+ "`interior_zone`(`col`,`row`,`level`); "
+
+ /* access_module */
+ "CREATE TABLE `access_module`( "
+ " `id` INTEGER PRIMARY KEY NOT NULL, "
+ " `name` VARCHAR(45) NOT NULL, "
+ " `zone_id` INTEGER NOT NULL, "
+ " `user_consent_needed` INTEGER NOT NULL, "
+ "CONSTRAINT `fk_module_1` "
+ " FOREIGN KEY(`zone_id`) "
+ " REFERENCES `interior_zone`(`id`) "
+ "); "
+ "CREATE INDEX `access_module.zone_module` ON "
+ "`access_module`(`name`,`zone_id`); "
+ "CREATE INDEX `access_module.fk_module_1_idx` ON "
+ "`access_module`(`zone_id`); "
+
+ /* remote_rpc */
+ "CREATE TABLE `remote_rpc`( "
+ " `id` INTEGER PRIMARY KEY NOT NULL, "
+ " `name` VARCHAR(255) NOT NULL, "
+ " `parameter` VARCHAR(45), "
+ " `module_id` INTEGER NOT NULL, "
+ "CONSTRAINT `fk_remote_rpc_1` "
+ " FOREIGN KEY(`module_id`) "
+ " REFERENCES `access_module`(`id`) "
+ "); "
+ "CREATE INDEX `remote_rpc.fk_remote_rpc_1_idx` ON "
+ "`remote_rpc`(`module_id`); "
+
+ /* module type */
+ "CREATE TABLE IF NOT EXISTS `module_type`( "
+ " `name` VARCHAR(50) NOT NULL, "
+ " `application_id` VARCHAR(45) NOT NULL, "
+ " PRIMARY KEY(`name`,`application_id`), "
+ " CONSTRAINT `fk_module_type_application1` "
+ " FOREIGN KEY(`application_id`) "
+ " REFERENCES `application`(`id`) "
+ "); "
+ "CREATE INDEX IF NOT EXISTS `module_type.fk_module_type_application1_idx` "
+ " ON `module_type`(`application_id`); "
+
"CREATE INDEX IF NOT EXISTS `message.fk_messages_languages1_idx` "
" ON `message`(`language_code`);"
"CREATE INDEX IF NOT EXISTS "
@@ -355,6 +449,12 @@ const std::string kCreateSchema =
"CREATE TABLE IF NOT EXISTS `_internal_data`( "
" `db_version_hash` INTEGER "
" ); "
+ "CREATE TABLE IF NOT EXISTS `_internal_external_consent_status`( "
+ " `id` INTEGER PRIMARY KEY AUTOINCREMENT, "
+ " `entity_type` INTEGER NOT NULL, "
+ " `entity_id` INTEGER NOT NULL, "
+ " `on_off` TEXT NOT NULL "
+ " ); "
"COMMIT;";
const std::string kInsertInitData =
@@ -384,8 +484,91 @@ const std::string kInsertInitData =
"INSERT OR IGNORE INTO `_internal_data` (`db_version_hash`) VALUES(0); "
"";
+const std::string kDeleteAppGroupPrimary = "DELETE FROM `app_group_primary`";
+
+const std::string kDeleteAppGroupNonPrimary =
+ "DELETE FROM `app_group_non_primary`";
+
+const std::string kDeleteModuleTypes = "DELETE FROM `module_type`";
+
+const std::string kDeleteAllDevices = "DELETE FROM `device`;";
+
+const std::string kSelectAppGroupsPrimary =
+ "SELECT `f`.`name` FROM `app_group_primary` AS `a`"
+ " LEFT JOIN `functional_group` AS `f` "
+ " ON (`f`.`id` = `a`.`functional_group_id`)"
+ " WHERE `a`.`application_id` = ?";
+
+const std::string kSelectAppGroupsNonPrimary =
+ "SELECT `f`.`name` FROM `app_group_non_primary` AS `a`"
+ " LEFT JOIN `functional_group` AS `f` "
+ " ON (`f`.`id` = `a`.`functional_group_id`)"
+ " WHERE `a`.`application_id` = ?";
+
+const std::string kSelectRemoteControlDenied =
+ "SELECT `remote_control_denied` FROM `application` WHERE `id` = ? LIMIT 1";
+
+const std::string kInsertAppGroupPrimary =
+ "INSERT INTO `app_group_primary` (`application_id`, `functional_group_id`)"
+ " SELECT ?, `id` FROM `functional_group` WHERE `name` = ? LIMIT 1";
+
+const std::string kInsertAppGroupNonPrimary =
+ "INSERT INTO `app_group_non_primary` (`application_id`, "
+ "`functional_group_id`)"
+ " SELECT ?, `id` FROM `functional_group` WHERE `name` = ? LIMIT 1";
+
+const std::string kUpdateRemoteControlDenied =
+ "UPDATE `application` SET `remote_control_denied` = ? WHERE `id` = ?";
+
+const std::string kCountInteriorZones =
+ "SELECT COUNT(`id`) FROM `interior_zone`";
+
+const std::string kDeleteInteriorZones = "DELETE FROM `interior_zone`";
+
+const std::string kDeleteAccessModules = "DELETE FROM `access_module`";
+
+const std::string kDeleteRemoteRpc = "DELETE FROM `remote_rpc`";
+
+const std::string kInsertInteriorZone =
+ "INSERT INTO `interior_zone` (`name`, `col`, `row`, `level`) "
+ " VALUES(?, ?, ?, ?)";
+
+const std::string kSelectInteriorZones =
+ "SELECT `id`, `name`, `col`, `row`, `level` FROM `interior_zone`";
+
+const std::string kInsertAccessModule =
+ "INSERT INTO `access_module` (`name`, `zone_id`, `user_consent_needed`) "
+ " VALUES(?, ?, ?)";
+
+const std::string kDeleteAppGroupPrimaryByApplicationId =
+ "DELETE FROM `app_group_primary` WHERE `application_id` = ?";
+
+const std::string kDeleteAppGroupNonPrimaryByApplicationId =
+ "DELETE FROM `app_group_non_primary` WHERE `application_id` = ?";
+
+const std::string kSelectAccessModules =
+ "SELECT `id`, `name` FROM `access_module` "
+ " WHERE `zone_id` = ? AND `user_consent_needed` = ?";
+
+const std::string kInsertRemoteRpc =
+ "INSERT INTO `remote_rpc` (`module_id`, `name`, `parameter`) "
+ " VALUES(?, ?, ?)";
+
+const std::string kSelectRemoteRpcs =
+ "SELECT `name`, `parameter` FROM `remote_rpc` "
+ " WHERE `module_id` = ?";
+
+const std::string kInsertModuleType =
+ "INSERT OR IGNORE INTO `module_type` (`application_id`, `name`) VALUES (?, "
+ "?)";
+
+const std::string kSelectModuleTypes =
+ "SELECT DISTINCT `name` FROM `module_type` WHERE `application_id` = ?";
+
const std::string kDropSchema =
"BEGIN; "
+ "DROP INDEX IF EXISTS `module_type.fk_module_type_application1_idx`; "
+ "DROP TABLE IF EXISTS `module_type`; "
"DROP INDEX IF EXISTS `message.fk_messages_languages1_idx`; "
"DROP INDEX IF EXISTS "
"`message.fk_message_consumer_friendly_messages1_idx`; "
@@ -422,6 +605,23 @@ const std::string kDropSchema =
"idx`; "
"DROP TABLE IF EXISTS `preconsented_group`; "
"DROP INDEX IF EXISTS "
+ "`app_group_primary.fk_application_has_functional_group_application1_idx`; "
+ "DROP INDEX IF EXISTS "
+ "`app_group_primary.fk_application_has_functional_group_functional_group1_"
+ "idx`; "
+ "DROP TABLE IF EXISTS `app_group_primary`; "
+ "DROP INDEX IF EXISTS "
+ "`app_group_non_primary.fk_application_has_functional_group_application1_"
+ "idx`; "
+ "DROP INDEX IF EXISTS "
+ "`app_group_non_primary.fk_application_has_functional_group_functional_"
+ "group1_idx`; "
+ "DROP TABLE IF EXISTS `app_group_non_primary`; "
+ "DROP TABLE IF EXISTS `interior_zone`; "
+ "DROP TABLE IF EXISTS `access_module`; "
+ "DROP INDEX IF EXISTS `access_module.zone_module`; "
+ "DROP INDEX IF EXISTS `access_module.fk_module_1_idx`; "
+ "DROP INDEX IF EXISTS "
"`app_group.fk_application_has_functional_group_application1_idx`; "
"DROP INDEX IF EXISTS "
"`app_group.fk_application_has_functional_group_functional_group1_idx`; "
@@ -443,16 +643,20 @@ const std::string kDropSchema =
"DROP TABLE IF EXISTS `priority`; "
"DROP TABLE IF EXISTS `functional_group`; "
"DROP TABLE IF EXISTS `module_config`; "
+ "DROP TABLE IF EXISTS `remote_rpc`; "
+ "DROP INDEX IF EXISTS `remote_rpc.fk_remote_rpc_1_idx`; "
"DROP TABLE IF EXISTS `module_meta`; "
"DROP TABLE IF EXISTS `usage_and_error_count`; "
"DROP TABLE IF EXISTS `device`; "
"DROP TABLE IF EXISTS `_internal_data`; "
+ "DROP TABLE IF EXISTS `_internal_external_consent_status`; "
"COMMIT; "
"VACUUM;";
const std::string kDeleteData =
"BEGIN; "
"DELETE FROM `message`; "
+ "DELETE FROM `module_type`; "
"DELETE FROM `endpoint`; "
"DELETE FROM `consent_group`; "
"DELETE FROM `external_consent_status_group`; "
@@ -466,6 +670,10 @@ const std::string kDeleteData =
"DELETE FROM `app_group`; "
"DELETE FROM `application`; "
"DELETE FROM `rpc`; "
+ "DELETE FROM `app_group_primary`; "
+ "DELETE FROM `app_group_non_primary`; "
+ "DELETE FROM `interior_zone`; "
+ "DELETE FROM `access_module`; "
"DELETE FROM `version`; "
"DELETE FROM `message_type`; "
"DELETE FROM `language`; "
@@ -475,6 +683,7 @@ const std::string kDeleteData =
"DELETE FROM `functional_group`; "
"DELETE FROM `module_config`; "
"DELETE FROM `module_meta`; "
+ "DELETE FROM `remote_rpc`; "
"DELETE FROM `usage_and_error_count`; "
"DELETE FROM `device`; "
"DELETE FROM `request_type`; "
@@ -485,9 +694,6 @@ const std::string kCheckDBIntegrity = "PRAGMA integrity_check";
const std::string kCheckPgNumber = "PRAGMA page_count";
-const std::string kSelectLockScreenIcon =
- "SELECT `url` FROM `endpoint` WHERE `service` = ? AND `application_id` = ?";
-
const std::string kSelectRpc =
"SELECT DISTINCT `rpc`.`parameter` FROM `rpc` "
" JOIN `app_group` AS `g` ON (`g`.`functional_group_id` = "
@@ -510,6 +716,9 @@ const std::string kSetNotFirstRun =
const std::string kSelectEndpoint =
"SELECT `url`, `application_id` FROM `endpoint` WHERE `service` = ? ";
+const std::string kSelectLockScreenIcon =
+ "SELECT `url` FROM `endpoint` WHERE `service` = ? AND `application_id` = ?";
+
const std::string kInsertFunctionalGroup =
"INSERT INTO `functional_group` (`id`, `name`, `user_consent_prompt`) "
" VALUES (?, ?, ?)";
@@ -565,7 +774,8 @@ const std::string kUpdateModuleConfig =
" `exchange_after_x_kilometers` = ?, `exchange_after_x_days` = ?, "
" `timeout_after_x_seconds` = ?, `vehicle_make` = ?, "
" `vehicle_model` = ?, `vehicle_year` = ?, `preloaded_date` = ?, "
- "`certificate` = ?";
+ "`certificate` = ?, `user_consent_passengersRC` = ?, "
+ "`country_consent_passengersRC` = ?";
const std::string kInsertEndpoint =
"INSERT INTO `endpoint` (`service`, `url`, `application_id`) "
@@ -616,7 +826,8 @@ const std::string kSelectModuleConfig =
"SELECT `preloaded_pt`, `exchange_after_x_ignition_cycles`, "
" `exchange_after_x_kilometers`, `exchange_after_x_days`, "
" `timeout_after_x_seconds`, `vehicle_make`,"
- " `vehicle_model`, `vehicle_year`, `preloaded_date`, `certificate` "
+ " `vehicle_model`, `vehicle_year`, `preloaded_date`, `certificate`, "
+ " `user_consent_passengersRC` , `country_consent_passengersRC` "
" FROM `module_config`";
const std::string kSelectEndpoints =
@@ -651,6 +862,8 @@ const std::string kSelectAppPolicies =
"SELECT `id`, `priority_value`, `memory_kb`, "
" `heart_beat_timeout_ms` FROM `application`";
+const std::string kCollectFriendlyMsg = "SELECT * FROM `message`";
+
const std::string kSelectAppGroups =
"SELECT `f`.`name` FROM `app_group` AS `a`"
" LEFT JOIN `functional_group` AS `f` "
diff --git a/src/components/policy/policy_external/src/sql_pt_representation.cc b/src/components/policy/policy_external/src/sql_pt_representation.cc
index e91fafc43d..94e2e4af27 100644
--- a/src/components/policy/policy_external/src/sql_pt_representation.cc
+++ b/src/components/policy/policy_external/src/sql_pt_representation.cc
@@ -43,6 +43,7 @@
#include "utils/gen_hash.h"
#include "policy/sql_pt_representation.h"
#include "policy/sql_wrapper.h"
+#include "policy/sql_pt_ext_queries.h"
#include "policy/sql_pt_queries.h"
#include "policy/policy_helper.h"
#include "policy/cache_manager.h"
@@ -690,7 +691,7 @@ bool SQLPTRepresentation::GatherFunctionalGroupings(
external_consent_entities_container.push_back(external_consent_entity);
}
-
+ external_consent_entities.Reset();
(*groups)[func_group.GetString(1)] = rpcs_tbl;
}
return true;
@@ -930,40 +931,6 @@ bool SQLPTRepresentation::SaveRpcs(int64_t group_id,
return true;
}
-bool SQLPTRepresentation::SaveExternalConsentEntities(
- const int64_t group_id,
- const policy_table::DisallowedByExternalConsentEntities& entities,
- ExternalConsentEntitiesType type) const {
- utils::dbms::SQLQuery query(db());
- if (!query.Prepare(sql_pt::kInsertExternalConsentEntity)) {
- LOG4CXX_WARN(logger_,
- "Incorrect insert statement for external consent entities.");
- return false;
- }
-
- const std::string external_consent_entity_type =
- kExternalConsentEntitiesTypeOn == type
- ? kExternalConsentEntitiesTypeStringOn
- : kExternalConsentEntitiesTypeStringOff;
-
- policy_table::DisallowedByExternalConsentEntities::const_iterator it_entity =
- entities.begin();
- for (; entities.end() != it_entity; ++it_entity) {
- query.Bind(0, group_id);
- query.Bind(1, it_entity->entity_type);
- query.Bind(2, it_entity->entity_id);
- query.Bind(3, external_consent_entity_type);
- if (!query.Exec() || !query.Reset()) {
- LOG4CXX_ERROR(logger_,
- "Can't insert '" << external_consent_entity_type
- << "' external consent entity.");
- return false;
- }
- }
-
- return true;
-}
-
bool SQLPTRepresentation::SaveApplicationPoliciesSection(
const policy_table::ApplicationPoliciesSection& policies) {
utils::dbms::SQLQuery query_delete(db());
@@ -1835,4 +1802,38 @@ bool SQLPTRepresentation::SetVINValue(const std::string& value) {
return true;
}
+bool SQLPTRepresentation::SaveExternalConsentEntities(
+ const int64_t group_id,
+ const policy_table::DisallowedByExternalConsentEntities& entities,
+ ExternalConsentEntitiesType type) const {
+ utils::dbms::SQLQuery query(db());
+ if (!query.Prepare(sql_pt_ext::kInsertExternalConsentEntity)) {
+ LOG4CXX_WARN(logger_,
+ "Incorrect insert statement for external consent entities.");
+ return false;
+ }
+
+ const std::string external_consent_entity_type =
+ kExternalConsentEntitiesTypeOn == type
+ ? kExternalConsentEntitiesTypeStringOn
+ : kExternalConsentEntitiesTypeStringOff;
+
+ policy_table::DisallowedByExternalConsentEntities::const_iterator it_entity =
+ entities.begin();
+ for (; entities.end() != it_entity; ++it_entity) {
+ query.Bind(0, group_id);
+ query.Bind(1, it_entity->entity_type);
+ query.Bind(2, it_entity->entity_id);
+ query.Bind(3, external_consent_entity_type);
+ if (!query.Exec() || !query.Reset()) {
+ LOG4CXX_ERROR(logger_,
+ "Can't insert '" << external_consent_entity_type
+ << "' external consent entity.");
+ return false;
+ }
+ }
+
+ return true;
+}
+
} // namespace policy
diff --git a/src/components/policy/policy_external/test/generated_code_test.cc b/src/components/policy/policy_external/test/generated_code_test.cc
index f9bee95486..15d14e3e3b 100644
--- a/src/components/policy/policy_external/test/generated_code_test.cc
+++ b/src/components/policy/policy_external/test/generated_code_test.cc
@@ -193,10 +193,11 @@ TEST(PolicyGeneratedCodeTest,
EXPECT_TRUE(consent_records.is_valid());
}
-TEST(PolicyGeneratedCodeTest, CCSEntity_ConstructionValidationTest) {
+TEST(PolicyGeneratedCodeTest,
+ ExternalConsentEntity_ConstructionValidationTest) {
using namespace rpc::policy_table_interface_base;
- CCS_Entity empty_entity;
+ ExternalConsentEntity empty_entity;
EXPECT_FALSE(empty_entity.is_valid());
const std::string corrent_entity_type_field = "entityType";
@@ -206,7 +207,7 @@ TEST(PolicyGeneratedCodeTest, CCSEntity_ConstructionValidationTest) {
correct_json_entity[corrent_entity_type_field] = 1;
correct_json_entity[correct_entity_id_field] = 2;
- ExternalConsent_Entity entity_from_correct_json(&correct_json_entity);
+ ExternalConsentEntity entity_from_correct_json(&correct_json_entity);
EXPECT_TRUE(entity_from_correct_json.is_valid());
const std::string wrong_entity_id_field = "entityId";
@@ -215,14 +216,11 @@ TEST(PolicyGeneratedCodeTest, CCSEntity_ConstructionValidationTest) {
wrong_json_entity[corrent_entity_type_field] = 1;
wrong_json_entity[wrong_entity_id_field] = 2;
- ExternalConsent_Entity entity_from_wrong_json(&wrong_json_entity);
+ ExternalConsentEntity entity_from_wrong_json(&wrong_json_entity);
EXPECT_FALSE(entity_from_wrong_json.is_valid());
- ExternalConsent_Entity entity_from_valid_ints(1, 2);
+ ExternalConsentEntity entity_from_valid_ints(1, 2);
EXPECT_TRUE(entity_from_valid_ints.is_valid());
-
- CCS_Entity entity_from_wrong_ints(129, 129);
- EXPECT_FALSE(entity_from_wrong_ints.is_valid());
}
} // namespace policy_test
diff --git a/src/components/policy/policy_external/test/include/policy/policy_manager_impl_test_base.h b/src/components/policy/policy_external/test/include/policy/policy_manager_impl_test_base.h
index 09a4a0e391..e753751308 100644
--- a/src/components/policy/policy_external/test/include/policy/policy_manager_impl_test_base.h
+++ b/src/components/policy/policy_external/test/include/policy/policy_manager_impl_test_base.h
@@ -66,10 +66,12 @@ const std::string kHmiLevelBackground = "BACKGROUND";
const std::string kHmiLevelNone = "None";
const std::string kPtuJson = "json/PTU.json";
+const std::string kPtu2Json = "json/PTU2.json";
const std::string kPtu3Json = "json/PTU3.json";
const std::string kValidSdlPtUpdateJson = "json/valid_sdl_pt_update.json";
const std::string kPtuRequestTypeJson = "json/ptu_requestType.json";
const std::string kPtu2RequestTypeJson = "json/ptu2_requestType.json";
+const std::string kDummyUpdateFileName = "DummyName";
} // namespace
struct StringsForUpdate {
@@ -84,6 +86,7 @@ void CheckIsParamInList(const ::policy::RPCParams& list,
const std::string& parameter);
Json::Value createPTforLoad();
void InsertRpcParametersInList(::policy::RPCParams& input_params);
+policy_table::AppHmiTypes HmiTypes(const policy_table::AppHMIType hmi_type);
template <typename T>
void SortAndCheckEquality(std::vector<T> first, std::vector<T> second) {
@@ -132,7 +135,7 @@ class PolicyManagerImplTest2 : public ::testing::Test {
const std::string device_id_2_;
const std::string application_id_;
const std::string app_storage_folder_;
- const std::string preloadet_pt_filename_;
+ const std::string preloaded_pt_filename_;
const bool in_memory_;
PolicyManagerImpl* policy_manager_;
@@ -188,6 +191,10 @@ class PolicyManagerImplTest2 : public ::testing::Test {
void CheckRpcPermissions(const std::string& rpc_name,
const PermitResult& expected_permission);
+ void CheckRpcPermissions(const std::string& app_id,
+ const std::string& rpc_name,
+ const policy::PermitResult& out_expected_permission);
+
// To avoid duplicate arrange of test
void AddSetDeviceData();
@@ -196,12 +203,6 @@ class PolicyManagerImplTest2 : public ::testing::Test {
void EmulatePTAppRevoked(const std::string& ptu_name);
- void TestSetDeviceUSBConnection(
- const policy_table::UserSetting usb_transport_status);
-
- void TestUpdateUSBConnectionStatus(
- const policy_table::UserSetting usb_transport_status);
-
utils::SharedPtr<policy_table::Table> PreconditionForBasicValidateSnapshot();
template <typename ParentType, typename Value>
@@ -233,7 +234,7 @@ class PolicyManagerImplTest_RequestTypes : public ::testing::Test {
const std::string kAppId;
const std::string kDefaultAppId;
const std::string app_storage_folder_;
- const std::string preloadet_pt_filename_;
+ const std::string preloaded_pt_filename_;
utils::SharedPtr<PolicyManagerImpl> policy_manager_impl_sptr_;
NiceMock<MockPolicyListener> listener_;
@@ -267,20 +268,20 @@ class PolicyManagerImplTest_RequestTypes : public ::testing::Test {
void TearDown() OVERRIDE;
};
-class PolicyManagerImplTest_CCS : public PolicyManagerImplTest2 {
+class PolicyManagerImplTest_ExternalConsent : public PolicyManagerImplTest2 {
public:
- PolicyManagerImplTest_CCS()
+ PolicyManagerImplTest_ExternalConsent()
: PolicyManagerImplTest2()
, group_name_1_("Group1")
, group_name_2_("Group2")
, group_name_3_("Group3") {}
protected:
- void PreconditionCCSPreparePTWithAppGroupsAndConsents();
+ void PreconditionExternalConsentPreparePTWithAppGroupsAndConsents();
- void PreconditionCCSPreparePTWithAppPolicy();
+ void PreconditionExternalConsentPreparePTWithAppPolicy();
- policy_table::Table PreparePTWithGroupsHavingCCS();
+ policy_table::Table PreparePTWithGroupsHavingExternalConsent();
std::string PreparePTUWithNewGroup(const uint32_t type,
const uint32_t id,
diff --git a/src/components/policy/policy_external/test/policy_manager_impl_ptu_test.cc b/src/components/policy/policy_external/test/policy_manager_impl_ptu_test.cc
index 504467d229..8b40b70d41 100644
--- a/src/components/policy/policy_external/test/policy_manager_impl_ptu_test.cc
+++ b/src/components/policy/policy_external/test/policy_manager_impl_ptu_test.cc
@@ -38,6 +38,7 @@
#include "gtest/gtest.h"
#include "policy/policy_manager_impl_test_base.h"
+#include "policy/policy_table/types.h"
#include "utils/date_time.h"
#include "utils/gen_hash.h"
@@ -73,13 +74,26 @@ TEST_F(PolicyManagerImplTest,
GetGroupsWithSameEntities(external_consent_status))
.WillOnce(Return(group));
+ EXPECT_CALL(*cache_manager_, ResetCalculatedPermissions());
+
+ EXPECT_CALL(*cache_manager_, GetPermissionsForApp(_, _, _))
+ .WillOnce(Return(true))
+ .WillOnce(Return(true));
+ EXPECT_CALL(*cache_manager_, GetFunctionalGroupNames(_))
+ .WillOnce(Return(true))
+ .WillOnce(Return(true));
+
+ EXPECT_CALL(*cache_manager_, SetUserPermissionsForApp(_, _))
+ .WillOnce(Return(false));
+
EXPECT_CALL(*cache_manager_, SetExternalConsentForApp(_));
EXPECT_CALL(*cache_manager_, IsPredataPolicy(_)).WillOnce(Return(false));
EXPECT_CALL(*cache_manager_, IsApplicationRepresented(_))
.WillOnce(Return(true));
EXPECT_EQ(policy_manager_->GetPolicyTableStatus(), "UP_TO_DATE");
- policy_manager_->AddApplication(kDefaultId);
+ policy_manager_->AddApplication(kDefaultId,
+ HmiTypes(policy_table::AHT_DEFAULT));
EXPECT_EQ(policy_manager_->GetPolicyTableStatus(), "UP_TO_DATE");
}
@@ -128,16 +142,18 @@ TEST_F(PolicyManagerImplTest2, IsAppRevoked_SetRevokedAppID_ExpectAppRevoked) {
// Arrange
CreateLocalPT(preloaded_pt_filename_);
- AppHmiTypes types;
- policy_manager_->AddApplication(app_id_1_, types);
+ policy_manager_->AddApplication(app_id_1_,
+ HmiTypes(policy_table::AHT_DEFAULT));
- std::ifstream ifile(preloaded_pt_filename_);
+ std::ifstream ifile(kValidSdlPtUpdateJson);
Json::Reader reader;
std::string json;
Json::Value root(Json::objectValue);
- if (ifile.is_open() && reader.parse(ifile, root, true)) {
- root["policy_table"]["app_policies"][app_id_1_] = Json::nullValue;
- json = root.toStyledString();
+ if (ifile.is_open()) {
+ if (reader.parse(ifile, root, true)) {
+ root["policy_table"]["app_policies"][app_id_1_] = Json::nullValue;
+ json = root.toStyledString();
+ }
}
ifile.close();
@@ -158,7 +174,8 @@ TEST_F(PolicyManagerImplTest2, AppRevokedOne_AppRegistered) {
EXPECT_FALSE(policy_manager_->GetCache()->IsPTPreloaded());
ASSERT_TRUE(
(policy_manager_->GetCache())->AddDevice(device_id_2_, "Bluetooth"));
- policy_manager_->AddApplication(application_id_, hmi_types_);
+ policy_manager_->AddApplication(application_id_,
+ HmiTypes(policy_table::AHT_DEFAULT));
// Registration is allowed
CheckRpcPermissions("RegisterAppInterface", ::policy::kRpcAllowed);
}
@@ -170,7 +187,8 @@ TEST_F(PolicyManagerImplTest2, AppRevokedOne_AppRegistered_HMIDefault) {
EmulatePTAppRevoked(kPtu2Json);
EXPECT_FALSE(policy_manager_->GetCache()->IsPTPreloaded());
- policy_manager_->AddApplication(application_id_, hmi_types_);
+ policy_manager_->AddApplication(application_id_,
+ HmiTypes(policy_table::AHT_DEFAULT));
std::string default_hmi;
// Default HMI level is NONE
@@ -181,7 +199,7 @@ TEST_F(PolicyManagerImplTest2, AppRevokedOne_AppRegistered_HMIDefault) {
TEST_F(PolicyManagerImplTest2,
CheckPermissions_SetRevokedAppID_ExpectRPCDisallowed) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
policy::CacheManagerInterfaceSPtr cache = policy_manager_->GetCache();
cache->AddDevice(device_id_1_, "Bluetooth");
cache->SetDeviceData(device_id_1_,
@@ -196,7 +214,8 @@ TEST_F(PolicyManagerImplTest2,
.WillRepeatedly(Return(device_id_1_));
policy_manager_->SetUserConsentForDevice(device_id_1_, true);
// Add app from consented device. App will be assigned with default policies
- policy_manager_->AddApplication(app_id_1_);
+ policy_manager_->AddApplication(app_id_1_,
+ HmiTypes(policy_table::AHT_DEFAULT));
// Check before action
policy_table::RpcParameters rpc_parameters;
rpc_parameters.hmi_levels.push_back(policy_table::HL_FULL);
@@ -238,7 +257,7 @@ TEST_F(PolicyManagerImplTest2,
TEST_F(PolicyManagerImplTest2,
CheckPermissions_SetAppIDwithPolicies_ExpectRPCAllowed) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
policy_manager_->AddDevice(device_id_1_, "Bluetooth");
policy::CacheManagerInterfaceSPtr cache = policy_manager_->GetCache();
@@ -254,7 +273,8 @@ TEST_F(PolicyManagerImplTest2,
.WillRepeatedly(Return(device_id_1_));
policy_manager_->SetUserConsentForDevice(device_id_1_, true);
// Add app from consented device. App will be assigned with default policies
- policy_manager_->AddApplication(application_id_);
+ policy_manager_->AddApplication(application_id_,
+ HmiTypes(policy_table::AHT_MEDIA));
// Emulate PTU with new policies for app added above
std::ifstream ifile(kValidSdlPtUpdateJson);
Json::Reader reader;
@@ -552,7 +572,7 @@ TEST_F(PolicyManagerImplTest2,
TEST_F(PolicyManagerImplTest2, GetUpdateUrl) {
// Arrange
CreateLocalPT(preloaded_pt_filename_);
- GetPTU(preloaded_pt_filename_);
+ GetPTU(kValidSdlPtUpdateJson);
// Check expectations
const std::string update_url(
"http://policies.telematics.ford.com/api/policies");
@@ -568,8 +588,9 @@ TEST_F(PolicyManagerImplTest2, GetCorrectStatus_PTUSuccessful) {
EXPECT_EQ("UP_TO_DATE", policy_manager_->GetPolicyTableStatus());
// Adding changes PT status
- policy_manager_->AddApplication(application_id_, hmi_types_);
- EXPECT_EQ("UPDATE_NEEDED", policy_manager_->GetPolicyTableStatus());
+ policy_manager_->AddApplication(application_id_,
+ HmiTypes(policy_table::AHT_DEFAULT));
+ EXPECT_EQ("UP_TO_DATE", policy_manager_->GetPolicyTableStatus());
// Before load PT we should send notification about start updating
policy_manager_->OnUpdateStarted();
// Update
@@ -707,7 +728,8 @@ TEST_F(PolicyManagerImplTest2,
"Bluetooth"));
// Add app from consented device. App will be assigned with default policies
- policy_manager_->AddApplication(application_id_);
+ policy_manager_->AddApplication(application_id_,
+ HmiTypes(policy_table::AHT_DEFAULT));
std::ifstream ifile("json/sdl_update_pt_2_groups_no_params_in1.json");
Json::Reader reader;
@@ -793,7 +815,8 @@ TEST_F(PolicyManagerImplTest2,
"Bluetooth"));
// Add app from consented device. App will be assigned with default policies
- policy_manager_->AddApplication(application_id_);
+ policy_manager_->AddApplication(application_id_,
+ HmiTypes(policy_table::AHT_DEFAULT));
std::ifstream ifile(
"json/sdl_update_pt_2_groups_no_params_in1_omitted_in2.json");
@@ -890,12 +913,13 @@ TEST_F(
PolicyManagerImplTest2,
AddApplication_AddExistingApplicationFromDeviceWithoutConsent_ExpectNoUpdateRequired) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
EXPECT_EQ("UP_TO_DATE", policy_manager_->GetPolicyTableStatus());
GetPTU(kValidSdlPtUpdateJson);
EXPECT_EQ("UP_TO_DATE", policy_manager_->GetPolicyTableStatus());
// Try to add existing app
- policy_manager_->AddApplication(app_id_2_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
// Check no update required
EXPECT_EQ("UP_TO_DATE", policy_manager_->GetPolicyTableStatus());
}
@@ -909,14 +933,15 @@ uint32_t GetCurrentDaysCount() {
TEST_F(PolicyManagerImplTest2,
PTUpdatedAt_DaysNotExceedLimit_ExpectNoUpdateRequired) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
const uint32_t days = GetCurrentDaysCount();
EXPECT_EQ("UP_TO_DATE", policy_manager_->GetPolicyTableStatus());
GetPTU(kValidSdlPtUpdateJson);
EXPECT_EQ("UP_TO_DATE", policy_manager_->GetPolicyTableStatus());
- policy_manager_->AddApplication(app_id_2_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
EXPECT_EQ("UP_TO_DATE", policy_manager_->GetPolicyTableStatus());
::policy::Counters counter = ::policy::Counters::DAYS_AFTER_EPOCH;
// Set PT was updated 10 days ago (limit is 30 days for now)
@@ -929,13 +954,14 @@ TEST_F(PolicyManagerImplTest2,
TEST_F(PolicyManagerImplTest2,
PTUpdatedAt_DaysExceedLimit_ExpectUpdateRequired) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
const uint32_t days = GetCurrentDaysCount();
EXPECT_EQ("UP_TO_DATE", policy_manager_->GetPolicyTableStatus());
GetPTU(kValidSdlPtUpdateJson);
EXPECT_EQ("UP_TO_DATE", policy_manager_->GetPolicyTableStatus());
- policy_manager_->AddApplication(app_id_2_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
EXPECT_EQ("UP_TO_DATE", policy_manager_->GetPolicyTableStatus());
::policy::Counters counter = ::policy::Counters::DAYS_AFTER_EPOCH;
// Set PT was updated 50 days ago (limit is 30 days for now)
@@ -948,13 +974,14 @@ TEST_F(
PolicyManagerImplTest2,
OnIgnitionCyclesExceeded_SetExceededIgnitionCycles_ExpectUpdateScheduled) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
const uint32_t days = GetCurrentDaysCount();
EXPECT_EQ("UP_TO_DATE", policy_manager_->GetPolicyTableStatus());
GetPTU(kValidSdlPtUpdateJson);
EXPECT_EQ("UP_TO_DATE", policy_manager_->GetPolicyTableStatus());
// Try to add existing app
- policy_manager_->AddApplication(app_id_2_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
EXPECT_EQ("UP_TO_DATE", policy_manager_->GetPolicyTableStatus());
::policy::Counters counter = ::policy::Counters::DAYS_AFTER_EPOCH;
// Set PT was updated 10 days ago (limit is 30 days for now)
@@ -975,7 +1002,7 @@ TEST_F(
TEST_F(PolicyManagerImplTest2,
GetUserConsentForApp_SetUserConsentForApp_ExpectReceivedConsentCorrect) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
ASSERT_TRUE(
(policy_manager_->GetCache())->AddDevice(device_id_2_, "Bluetooth"));
ASSERT_TRUE((policy_manager_->GetCache())
@@ -998,7 +1025,8 @@ TEST_F(PolicyManagerImplTest2,
policy_manager_->SetUserConsentForDevice(device_id_2_, true);
EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_2_))
.WillRepeatedly(Return(device_id_2_));
- policy_manager_->AddApplication(app_id_2_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
GetPTU(kValidSdlPtUpdateJson);
::policy::PermissionConsent perm_consent;
@@ -1040,8 +1068,9 @@ TEST_F(PolicyManagerImplTest2,
TEST_F(PolicyManagerImplTest2,
CanAppKeepContext_SetPoliciesForAppUpdated_ExpectAppCanKeepContext) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
- policy_manager_->AddApplication(app_id_2_);
+ CreateLocalPT(preloaded_pt_filename_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
GetPTU(kValidSdlPtUpdateJson);
// Check keep context in updated policies for app
EXPECT_TRUE(policy_manager_->CanAppKeepContext(app_id_2_));
@@ -1050,8 +1079,9 @@ TEST_F(PolicyManagerImplTest2,
TEST_F(PolicyManagerImplTest2,
CanAppStealFocus_SetPoliciesForAppUpdated_ExpectAppCanStealFocus) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
- policy_manager_->AddApplication(app_id_2_);
+ CreateLocalPT(preloaded_pt_filename_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
GetPTU(kValidSdlPtUpdateJson);
// Check keep context in updated policies for app
EXPECT_TRUE(policy_manager_->CanAppKeepContext(app_id_2_));
@@ -1060,7 +1090,7 @@ TEST_F(PolicyManagerImplTest2,
TEST_F(PolicyManagerImplTest2,
GetVehicleInfo_SetVehicleInfo_ExpectReceivedInfoCorrect) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
GetPTU(kValidSdlPtUpdateJson);
utils::SharedPtr<policy_table::Table> pt =
(policy_manager_->GetCache())->GetPT();
@@ -1079,7 +1109,7 @@ TEST_F(
PolicyManagerImplTest2,
GetPermissionsForApp_SetUserConsentForApp_ExpectReceivedPermissionsCorrect) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
ASSERT_TRUE(
(policy_manager_->GetCache())->AddDevice(device_id_2_, "Bluetooth"));
@@ -1102,7 +1132,8 @@ TEST_F(
policy_manager_->SetUserConsentForDevice(device_id_2_, true);
EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_2_))
.WillRepeatedly(Return(device_id_2_));
- policy_manager_->AddApplication(app_id_2_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
GetPTU(kValidSdlPtUpdateJson);
::policy::PermissionConsent perm_consent;
@@ -1145,9 +1176,10 @@ TEST_F(
PolicyManagerImplTest2,
GetAppRequestTypes_AddApp_UpdateAppPolicies_ExpectReceivedRequestTypesCorrect) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
- policy_manager_->AddApplication(app_id_3_);
+ policy_manager_->AddApplication(app_id_3_,
+ HmiTypes(policy_table::AHT_DEFAULT));
::policy::StringArray app_requests =
policy_manager_->GetAppRequestTypes(app_id_3_);
EXPECT_EQ(1u, app_requests.size());
@@ -1168,7 +1200,7 @@ TEST_F(
PolicyManagerImplTest2,
HertBeatTimeout_AddApp_UpdateAppPolicies_ExpectReceivedHertBeatTimeoutCorrect) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
utils::SharedPtr<policy_table::Table> pt =
(policy_manager_->GetCache())->GetPT();
::policy_table::PolicyTableType type1 =
@@ -1181,7 +1213,8 @@ TEST_F(
pt->ReportErrors(&report);
}
// Add new app
- policy_manager_->AddApplication(app_id_2_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
uint32_t result = policy_manager_->HeartBeatTimeout(app_id_2_);
// By default hertbeat timeout is 0
EXPECT_EQ(0u, result);
@@ -1207,7 +1240,7 @@ TEST_F(
TEST_F(PolicyManagerImplTest2,
RemoveAppConsentForGroup_SetUserConsentForApp_ExpectAppConsentDeleted) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
ASSERT_TRUE(
(policy_manager_->GetCache())->AddDevice(device_id_2_, "Bluetooth"));
ASSERT_TRUE((policy_manager_->GetCache())
@@ -1229,7 +1262,8 @@ TEST_F(PolicyManagerImplTest2,
policy_manager_->SetUserConsentForDevice(device_id_2_, true);
EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_2_))
.WillRepeatedly(Return(device_id_2_));
- policy_manager_->AddApplication(app_id_2_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
GetPTU(kValidSdlPtUpdateJson);
::policy::PermissionConsent perm_consent;
@@ -1296,7 +1330,7 @@ TEST_F(PolicyManagerImplTest2,
const std::string section_name = app_id_2_;
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
// Setting device consent to 'true' in order to have defult application
// permissions, request type etc.
@@ -1305,7 +1339,8 @@ TEST_F(PolicyManagerImplTest2,
policy_manager_->SetUserConsentForDevice(device_id_1_, true);
// Add app
- policy_manager_->AddApplication(section_name);
+ policy_manager_->AddApplication(section_name,
+ HmiTypes(policy_table::AHT_DEFAULT));
EXPECT_CALL(listener_, OnPendingPermissionChange(section_name)).Times(2);
// PTU has single invalid RequestTypes, which must be dropped and replaced
@@ -1354,7 +1389,7 @@ TEST_F(PolicyManagerImplTest2,
TEST_F(PolicyManagerImplTest2,
InitPT_LoadPT_ExpectIncrementedCountOfSamePrompts) {
// Initializing policy_table
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
policy_table::FunctionalGroupings functional_groupings;
GetFunctionalGroupingsFromManager(functional_groupings);
@@ -1387,7 +1422,7 @@ TEST_F(PolicyManagerImplTest2,
TEST_F(PolicyManagerImplTest2,
LoadPT_UpdatePT_ChangingCountsOfDifferentUserConsentPrompts) {
// Initializing policy_table
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
// First update of policy table
GetPTU("json/sdl_pt_first_update.json");
@@ -1438,7 +1473,7 @@ TEST_F(PolicyManagerImplTest_RequestTypes,
TEST_F(PolicyManagerImplTest_RequestTypes,
LoadPT_InvalidRequestTypeBetweenCorectValuesInPTU_EraseInvalidValue) {
// Refresh policy table with invalid RequestType in application
- RefreshPT(preloadet_pt_filename_, kJsonFiles[1]);
+ RefreshPT(preloaded_pt_filename_, kJsonFiles[1]);
// Correct of Request Types
policy_table::RequestTypes correct_types;
correct_types.push_back(policy_table::RequestType::RT_HTTP);
@@ -1461,7 +1496,7 @@ TEST_F(
TEST_F(PolicyManagerImplTest_RequestTypes,
LoadPT_RequestTypeArrayHaveNoOneValues_AvalibleAllRequestTypes) {
// Refresh policy table with invalid RequestType in application
- RefreshPT(preloadet_pt_filename_, kJsonFiles[3]);
+ RefreshPT(preloaded_pt_filename_, kJsonFiles[3]);
// Get <app_id> Request Types
policy_table::RequestTypes received_types =
@@ -1523,7 +1558,7 @@ TEST_F(PolicyManagerImplTest_RequestTypes,
policy_table::RequestTypes correct_types = CreateDefaultAppPTURequestValues();
// Load valid values for RequestType
- RefreshPT(preloadet_pt_filename_, kJsonFiles[7]);
+ RefreshPT(preloaded_pt_filename_, kJsonFiles[7]);
// Get Request Types for "<default>"
policy_table::RequestTypes received_types =
@@ -1540,7 +1575,7 @@ TEST_F(
CreateDefaultAppDatabaseRequestValues();
// Load RequestType with invalid values
- RefreshPT(preloadet_pt_filename_, kJsonFiles[8]);
+ RefreshPT(preloaded_pt_filename_, kJsonFiles[8]);
// Get Request Types for "<default>"
policy_table::RequestTypes received_types =
@@ -1552,7 +1587,7 @@ TEST_F(
TEST_F(PolicyManagerImplTest_RequestTypes,
LoadPT_PTDefaultAppEmptyRequestTypeValues_RequestTypeValueEmpty) {
// Load RequestType with empty values
- RefreshPT(preloadet_pt_filename_, kJsonFiles[9]);
+ RefreshPT(preloaded_pt_filename_, kJsonFiles[9]);
// Get Request Types for "<default>"
policy_table::RequestTypes received_types =
@@ -1570,7 +1605,7 @@ TEST_F(PolicyManagerImplTest_RequestTypes,
CreateDefaultAppDatabaseRequestValues();
// Load omitted RequestType values
- RefreshPT(preloadet_pt_filename_, kJsonFiles[10]);
+ RefreshPT(preloaded_pt_filename_, kJsonFiles[10]);
// Get Request Types for "<default>"
policy_table::RequestTypes received_types =
@@ -1586,7 +1621,7 @@ TEST_F(
policy_table::RequestTypes correct_types = CreateDefaultAppPTURequestValues();
// Load RequestType with one invalid value
- RefreshPT(preloadet_pt_filename_, kJsonFiles[11]);
+ RefreshPT(preloaded_pt_filename_, kJsonFiles[11]);
// Get Request Types for "<default>"
policy_table::RequestTypes received_types =
@@ -1602,7 +1637,7 @@ TEST_F(PolicyManagerImplTest_RequestTypes,
CreatePreDataConsentAppPTURequestValues();
// Load valid values for RequestType
- RefreshPT(preloadet_pt_filename_, kJsonFiles[12]);
+ RefreshPT(preloaded_pt_filename_, kJsonFiles[12]);
// Get Request Types for "<pre_DataConsent>"
policy_table::RequestTypes received_types =
@@ -1618,42 +1653,28 @@ TEST_F(
policy_table::RequestTypes correct_types;
correct_types.push_back(policy_table::RequestType::RT_HTTP);
- ON_CALL(listener_, OnCurrentDeviceIdUpdateRequired(_))
- .WillByDefault(Return(device_id));
-
- utils::SharedPtr<Table> pt = (policy_manager_->GetCache())->GetPT();
+ // Load RequestType with invalid values
+ RefreshPT(preloaded_pt_filename_, kJsonFiles[13]);
// Get Request Types for "<pre_DataConsent>"
policy_table::RequestTypes received_types =
GetRequestTypesForApplication(policy::kPreDataConsentId);
- const DeviceData& device_data = *pt->policy_table.device_data;
+ CompareRequestTypesContainers(correct_types, received_types);
}
TEST_F(PolicyManagerImplTest_RequestTypes,
LoadPT_PTPreDataConsentAppEmptyRequestTypeValues_RequestTypeValueEmpty) {
// Load RequestType with empty values
- RefreshPT(preloadet_pt_filename_, kJsonFiles[14]);
+ RefreshPT(preloaded_pt_filename_, kJsonFiles[14]);
- EXPECT_EQ(1u, device_data.size());
-
- const DeviceData::const_iterator dev_data_iter = device_data.find(device_id);
- EXPECT_TRUE(device_data.end() != dev_data_iter);
-
- UserConsentRecords::const_iterator it_device_consent =
- dev_data_iter->second.user_consent_records->find(device);
-
- EXPECT_TRUE(dev_data_iter->second.user_consent_records->end() !=
- it_device_consent);
-
- const ConsentRecords& parameters = it_device_consent->second;
- const Json::Value time_stamp = (parameters.time_stamp).ToJsonValue();
- EXPECT_EQ(device, it_device_consent->first);
-
- const bool time_stamp_result = CheckPolicyTimeStamp(time_stamp.asString());
+ // Get Request Types for "<pre_DataConsent>"
+ policy_table::RequestTypes received_types =
+ GetRequestTypesForApplication(policy::kPreDataConsentId);
- EXPECT_TRUE(time_stamp_result);
- EXPECT_EQ(DeviceConsent::kDeviceAllowed, device_consent);
+ // Expect
+ const size_t received_size = received_types.size();
+ EXPECT_EQ(0u, received_size);
}
TEST_F(
@@ -1664,7 +1685,7 @@ TEST_F(
correct_types.push_back(policy_table::RequestType::RT_HTTP);
// Load omitted RequestType values
- RefreshPT(preloadet_pt_filename_, kJsonFiles[15]);
+ RefreshPT(preloaded_pt_filename_, kJsonFiles[15]);
// Get Request Types for "<pre_DataConsent>"
policy_table::RequestTypes received_types =
@@ -1681,7 +1702,7 @@ TEST_F(
CreatePreDataConsentAppPTURequestValues();
// Load RequestType with one invalid value
- RefreshPT(preloadet_pt_filename_, kJsonFiles[16]);
+ RefreshPT(preloaded_pt_filename_, kJsonFiles[16]);
// Get Request Types for "<pre_DataConsent>"
policy_table::RequestTypes received_types =
diff --git a/src/components/policy/policy_external/test/policy_manager_impl_snapshot_test.cc b/src/components/policy/policy_external/test/policy_manager_impl_snapshot_test.cc
index 050630514c..e666ac82de 100644
--- a/src/components/policy/policy_external/test/policy_manager_impl_snapshot_test.cc
+++ b/src/components/policy/policy_external/test/policy_manager_impl_snapshot_test.cc
@@ -50,9 +50,9 @@ TEST_F(PolicyManagerImplTest2, UpdatedPreloadedPT_ExpectLPT_IsUpdated) {
new_data.new_field_name_ = "Notifications-";
CreateNewRandomData(new_data);
// Create Initial LocalPT from preloadedPT
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
// Update preloadedPT
- std::ifstream ifile(preloadet_pt_filename_);
+ std::ifstream ifile(preloaded_pt_filename_);
Json::Reader reader;
Json::Value root(Json::objectValue);
@@ -72,7 +72,7 @@ TEST_F(PolicyManagerImplTest2, UpdatedPreloadedPT_ExpectLPT_IsUpdated) {
ifile.close();
Json::StyledStreamWriter writer;
- std::ofstream ofile(preloadet_pt_filename_);
+ std::ofstream ofile(preloaded_pt_filename_);
writer.write(ofile, root);
ofile.flush();
ofile.close();
@@ -80,7 +80,7 @@ TEST_F(PolicyManagerImplTest2, UpdatedPreloadedPT_ExpectLPT_IsUpdated) {
// Make PolicyManager to update LocalPT
policy::CacheManagerInterfaceSPtr cache = policy_manager_->GetCache();
EXPECT_TRUE(
- policy_manager_->InitPT(preloadet_pt_filename_, &policy_settings_));
+ policy_manager_->InitPT(preloaded_pt_filename_, &policy_settings_));
EXPECT_TRUE(cache->IsPTPreloaded());
// Arrange
@@ -117,7 +117,7 @@ TEST_F(PolicyManagerImplTest2, UpdatedPreloadedPT_ExpectLPT_IsUpdated) {
TEST_F(PolicyManagerImplTest2,
SetSystemLanguage_ExpectSystemLanguageSetSuccessfully) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
policy_manager_->SetSystemLanguage("it-it");
utils::SharedPtr<policy_table::Table> pt =
(policy_manager_->GetCache())->GetPT();
@@ -127,7 +127,7 @@ TEST_F(PolicyManagerImplTest2,
TEST_F(PolicyManagerImplTest2, SetVINValue_ExpectVINSetSuccessfully) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
std::string vin_code("1FAPP6242VH100001");
policy_manager_->SetVINValue(vin_code);
utils::SharedPtr<policy_table::Table> pt =
@@ -138,7 +138,7 @@ TEST_F(PolicyManagerImplTest2, SetVINValue_ExpectVINSetSuccessfully) {
TEST_F(PolicyManagerImplTest2, SetSystemInfo_ExpectSystemInfoSetSuccessfully) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
policy_manager_->SetSystemInfo("4.1.3.B_EB355B", "WAEGB", "ru-ru");
policy::CacheManagerInterfaceSPtr cache = policy_manager_->GetCache();
utils::SharedPtr<policy_table::Table> pt = cache->GetPT();
@@ -152,7 +152,7 @@ TEST_F(PolicyManagerImplTest2, SetSystemInfo_ExpectSystemInfoSetSuccessfully) {
TEST_F(PolicyManagerImplTest2, CleanUnpairedDevice_ExpectDevicesDeleted) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
// Add first device
::policy::DeviceInfo dev_info1;
dev_info1.hardware = "hardware IPX";
@@ -262,9 +262,9 @@ TEST_F(
const std::string& app_id = application_id_;
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
// Add app
- policy_manager_->AddApplication(app_id, hmi_types_);
+ policy_manager_->AddApplication(app_id, HmiTypes(policy_table::AHT_DEFAULT));
// Check app gets RequestTypes from pre_DataConsent of app_policies
// section
pt_request_types_ = policy_manager_->GetAppRequestTypes(app_id);
diff --git a/src/components/policy/policy_external/test/policy_manager_impl_test.cc b/src/components/policy/policy_external/test/policy_manager_impl_test.cc
index d260e16922..3890bcb9e7 100644
--- a/src/components/policy/policy_external/test/policy_manager_impl_test.cc
+++ b/src/components/policy/policy_external/test/policy_manager_impl_test.cc
@@ -165,7 +165,7 @@ TEST_F(PolicyManagerImplTest, LoadPT_SetPT_PTIsLoaded) {
TEST_F(PolicyManagerImplTest2,
KmsChanged_SetExceededKms_ExpectCorrectSchedule) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
::policy::Counters counter = ::policy::Counters::KILOMETERS;
policy_manager_->PTUpdatedAt(counter, 50000);
EXPECT_EQ("UP_TO_DATE", policy_manager_->GetPolicyTableStatus());
@@ -179,7 +179,7 @@ TEST_F(PolicyManagerImplTest2,
TEST_F(PolicyManagerImplTest2, ForcePTExchange_ExpectUpdateNeeded) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
EXPECT_EQ("UP_TO_DATE", policy_manager_->GetPolicyTableStatus());
// Force OT Exchange
policy_manager_->ForcePTExchange();
@@ -189,7 +189,7 @@ TEST_F(PolicyManagerImplTest2, ForcePTExchange_ExpectUpdateNeeded) {
TEST_F(PolicyManagerImplTest2, OnSystemReady) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
// Check
EXPECT_CALL(listener_, OnSystemInfoUpdateRequired());
policy_manager_->OnSystemReady();
@@ -197,7 +197,7 @@ TEST_F(PolicyManagerImplTest2, OnSystemReady) {
TEST_F(PolicyManagerImplTest2, ResetRetrySequence) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
policy_manager_->ResetRetrySequence();
EXPECT_EQ("UPDATE_NEEDED", policy_manager_->GetPolicyTableStatus());
policy_manager_->OnUpdateStarted();
@@ -206,7 +206,7 @@ TEST_F(PolicyManagerImplTest2, ResetRetrySequence) {
TEST_F(PolicyManagerImplTest2, NextRetryTimeout_ExpectTimeoutsFromPT) {
// Arrange
- std::ifstream ifile(preloadet_pt_filename_);
+ std::ifstream ifile(preloaded_pt_filename_);
Json::Reader reader;
Json::Value root(Json::objectValue);
if (ifile.is_open() && reader.parse(ifile, root, true)) {
@@ -214,7 +214,7 @@ TEST_F(PolicyManagerImplTest2, NextRetryTimeout_ExpectTimeoutsFromPT) {
seconds_between_retries =
root["policy_table"]["module_config"]["seconds_between_retries"];
uint32_t size = seconds_between_retries.size();
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
for (uint32_t i = 0; i < size; ++i) {
EXPECT_EQ(seconds_between_retries[i],
policy_manager_->NextRetryTimeout());
@@ -224,7 +224,7 @@ TEST_F(PolicyManagerImplTest2, NextRetryTimeout_ExpectTimeoutsFromPT) {
TEST_F(PolicyManagerImplTest2, TimeOutExchange) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
// Check value taken from PT
EXPECT_EQ(70000u, policy_manager_->TimeoutExchangeMSec());
}
@@ -277,7 +277,7 @@ TEST_F(PolicyManagerImplTest, ResetUserConsent_ResetOnlyOnce) {
TEST_F(PolicyManagerImplTest2, GetPolicyTableStatus_ExpectUpToDate) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
// Check
EXPECT_EQ("UP_TO_DATE", policy_manager_->GetPolicyTableStatus());
}
@@ -295,7 +295,7 @@ TEST_F(PolicyManagerImplTest,
TEST_F(PolicyManagerImplTest2,
RetrySequenceDelaysSeconds_Expect_CorrectValues) {
// Arrange
- std::ifstream ifile(preloadet_pt_filename_);
+ std::ifstream ifile(preloaded_pt_filename_);
Json::Reader reader;
Json::Value root(Json::objectValue);
if (ifile.is_open() && reader.parse(ifile, root, true)) {
@@ -303,7 +303,7 @@ TEST_F(PolicyManagerImplTest2,
seconds_between_retries =
root["policy_table"]["module_config"]["seconds_between_retries"];
uint32_t size = seconds_between_retries.size();
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
std::vector<int> delaySecs = policy_manager_->RetrySequenceDelaysSeconds();
// Check
ASSERT_EQ(size, delaySecs.size());
@@ -316,7 +316,7 @@ TEST_F(PolicyManagerImplTest2,
TEST_F(PolicyManagerImplTest2,
OnExceededTimeout_GetPolicyTableStatus_ExpectUpdateNeeded) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
policy_manager_->ForcePTExchange();
policy_manager_->OnExceededTimeout();
// Check
@@ -339,21 +339,22 @@ TEST_F(PolicyManagerImplTest, MarkUnpairedDevice) {
TEST_F(PolicyManagerImplTest2, GetCurrentDeviceId) {
// Arrange
- EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_2_));
+ EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_2_)).Times(1);
EXPECT_EQ("", policy_manager_->GetCurrentDeviceId(app_id_2_));
}
-TEST_F(PolicyManagerImplTest_CCS,
- CCS_SetCCSStatusWhileAppExists_ExpectUserConsentsUpdateForApp) {
+TEST_F(
+ PolicyManagerImplTest_ExternalConsent,
+ ExternalConsent_SetExternalConsentStatusWhileAppExists_ExpectUserConsentsUpdateForApp) {
using namespace policy_table;
using namespace rpc;
- PreconditionCCSPreparePTWithAppGroupsAndConsents();
+ PreconditionExternalConsentPreparePTWithAppGroupsAndConsents();
utils::SharedPtr<policy_table::Table> pt =
policy_manager_->GetCache()->GetPT();
- // Checking groups consents before setting CCS status
+ // Checking groups consents before setting ExternalConsent status
const policy_table::DeviceData::const_iterator device_data =
pt->policy_table.device_data->find(device_id_1_);
@@ -384,17 +385,17 @@ TEST_F(PolicyManagerImplTest_CCS,
EXPECT_FALSE(updated_consent_records->second.consent_groups->end() !=
group_3);
- // Act - setting new CCS status
- CCSStatus status;
- status.insert(CCSStatusItem(type_1_, id_1_, kStatusOn));
- status.insert(CCSStatusItem(type_2_, id_2_, kStatusOn));
- status.insert(CCSStatusItem(type_3_, id_3_, kStatusOn));
+ // Act - setting new ExternalConsent status
+ ExternalConsentStatus status;
+ status.insert(ExternalConsentStatusItem(type_1_, id_1_, kStatusOn));
+ status.insert(ExternalConsentStatusItem(type_2_, id_2_, kStatusOn));
+ status.insert(ExternalConsentStatusItem(type_3_, id_3_, kStatusOn));
EXPECT_CALL(listener_, OnPermissionsUpdated(app_id_1_, _));
- EXPECT_TRUE(policy_manager_->SetCCSStatus(status));
+ EXPECT_TRUE(policy_manager_->SetExternalConsentStatus(status));
- // Checking groups consent after setting CCS status
+ // Checking groups consent after setting ExternalConsent status
EXPECT_EQ(Boolean(false), group_1->second);
EXPECT_EQ(Boolean(true), group_2->second);
@@ -406,18 +407,19 @@ TEST_F(PolicyManagerImplTest_CCS,
updated_group_3);
}
-TEST_F(PolicyManagerImplTest_CCS,
- CCS_SetCCSStatusWhileAppExists_ExpectCCSConsentsUpdateForApp) {
+TEST_F(
+ PolicyManagerImplTest_ExternalConsent,
+ ExternalConsent_SetExternalConsentStatusWhileAppExists_ExpectExternalConsentUpdateForApp) {
using namespace policy_table;
using namespace rpc;
- PreconditionCCSPreparePTWithAppGroupsAndConsents();
+ PreconditionExternalConsentPreparePTWithAppGroupsAndConsents();
// Act
utils::SharedPtr<policy_table::Table> pt =
policy_manager_->GetCache()->GetPT();
- // Checking CCS consents before setting new CCS status
+ // Checking ExternalConsent consents before setting new ExternalConsent status
policy_table::DeviceData::const_iterator updated_device_data =
pt->policy_table.device_data->find(device_id_1_);
@@ -429,21 +431,22 @@ TEST_F(PolicyManagerImplTest_CCS,
EXPECT_TRUE(updated_device_data->second.user_consent_records->end() !=
updated_consent_records);
- EXPECT_TRUE(updated_consent_records->second.ccs_consent_groups->empty());
+ EXPECT_TRUE(
+ updated_consent_records->second.external_consent_status_groups->empty());
- // Act - setting new CCS status
- CCSStatus status;
- status.insert(CCSStatusItem(type_1_, id_1_, kStatusOn));
- status.insert(CCSStatusItem(type_2_, id_2_, kStatusOn));
- status.insert(CCSStatusItem(type_3_, id_3_, kStatusOn));
+ // Act - setting new ExternalConsent status
+ ExternalConsentStatus status;
+ status.insert(ExternalConsentStatusItem(type_1_, id_1_, kStatusOn));
+ status.insert(ExternalConsentStatusItem(type_2_, id_2_, kStatusOn));
+ status.insert(ExternalConsentStatusItem(type_3_, id_3_, kStatusOn));
EXPECT_CALL(listener_, OnPermissionsUpdated(app_id_1_, _));
- EXPECT_TRUE(policy_manager_->SetCCSStatus(status));
+ EXPECT_TRUE(policy_manager_->SetExternalConsentStatus(status));
- // Checking CCS consents after setting new CCS status
- const ConsentGroups& ccs_consents =
- *updated_consent_records->second.ccs_consent_groups;
+ // Checking ExternalConsent consents after setting new ExternalConsent status
+ const ConsentGroups& external_consent_statuss =
+ *updated_consent_records->second.external_consent_status_groups;
const ApplicationPolicies::const_iterator app_parameters =
pt->policy_table.app_policies_section.apps.find(app_id_1_);
@@ -451,41 +454,43 @@ TEST_F(PolicyManagerImplTest_CCS,
EXPECT_TRUE(pt->policy_table.app_policies_section.apps.end() !=
app_parameters);
- EXPECT_EQ(app_parameters->second.groups.size(), ccs_consents.size());
+ EXPECT_EQ(app_parameters->second.groups.size(),
+ external_consent_statuss.size());
const ConsentGroups::const_iterator updated_group_1 =
- ccs_consents.find(group_name_1_);
+ external_consent_statuss.find(group_name_1_);
- EXPECT_TRUE(ccs_consents.end() != updated_group_1);
+ EXPECT_TRUE(external_consent_statuss.end() != updated_group_1);
const ConsentGroups::const_iterator updated_group_2 =
- ccs_consents.find(group_name_2_);
+ external_consent_statuss.find(group_name_2_);
- EXPECT_TRUE(ccs_consents.end() != updated_group_2);
+ EXPECT_TRUE(external_consent_statuss.end() != updated_group_2);
EXPECT_EQ(Boolean(false), updated_group_1->second);
EXPECT_EQ(Boolean(true), updated_group_2->second);
}
-TEST_F(PolicyManagerImplTest_CCS,
- CCS_SetCCSStatusNewAppAddedAfterward_ExpectCCSConsentsUpdateForApp) {
+TEST_F(
+ PolicyManagerImplTest_ExternalConsent,
+ ExternalConsent_SetExternalConsentStatusNewAppAddedAfterward_ExpectExternalConsentUpdateForApp) {
using namespace policy_table;
using namespace rpc;
- PreconditionCCSPreparePTWithAppPolicy();
+ PreconditionExternalConsentPreparePTWithAppPolicy();
// Act
utils::SharedPtr<policy_table::Table> pt =
policy_manager_->GetCache()->GetPT();
- CCSStatus status;
- status.insert(CCSStatusItem(type_1_, id_1_, kStatusOn));
- status.insert(CCSStatusItem(type_2_, id_2_, kStatusOn));
- status.insert(CCSStatusItem(type_3_, id_3_, kStatusOn));
+ ExternalConsentStatus status;
+ status.insert(ExternalConsentStatusItem(type_1_, id_1_, kStatusOn));
+ status.insert(ExternalConsentStatusItem(type_2_, id_2_, kStatusOn));
+ status.insert(ExternalConsentStatusItem(type_3_, id_3_, kStatusOn));
- EXPECT_TRUE(policy_manager_->SetCCSStatus(status));
+ EXPECT_TRUE(policy_manager_->SetExternalConsentStatus(status));
- // Checking CCS consents after setting new CCS status
+ // Checking ExternalConsent consents after setting new ExternalConsent status
policy_table::DeviceData::const_iterator updated_device_data =
pt->policy_table.device_data->find(device_id_1_);
@@ -495,9 +500,10 @@ TEST_F(PolicyManagerImplTest_CCS,
EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_1_))
.WillRepeatedly(Return(device_id_1_));
- policy_manager_->AddApplication(app_id_1_, AppHmiTypes());
+ policy_manager_->AddApplication(app_id_1_,
+ HmiTypes(policy_table::AHT_DEFAULT));
- // Check CCS consents for application
+ // Check ExternalConsent consents for application
updated_device_data = pt->policy_table.device_data->find(device_id_1_);
EXPECT_TRUE(pt->policy_table.device_data->end() != updated_device_data);
@@ -505,8 +511,8 @@ TEST_F(PolicyManagerImplTest_CCS,
UserConsentRecords::const_iterator updated_consent_records =
updated_device_data->second.user_consent_records->find(app_id_1_);
- const ConsentGroups& ccs_consents =
- *updated_consent_records->second.ccs_consent_groups;
+ const ConsentGroups& external_consent_statuss =
+ *updated_consent_records->second.external_consent_status_groups;
ApplicationPolicies::const_iterator app_parameters =
pt->policy_table.app_policies_section.apps.find(app_id_1_);
@@ -516,41 +522,43 @@ TEST_F(PolicyManagerImplTest_CCS,
EXPECT_TRUE(pt->policy_table.app_policies_section.apps.end() !=
app_parameters);
- EXPECT_EQ(app_parameters->second.groups.size(), ccs_consents.size());
+ EXPECT_EQ(app_parameters->second.groups.size(),
+ external_consent_statuss.size());
ConsentGroups::const_iterator updated_group_1 =
- ccs_consents.find(group_name_1_);
+ external_consent_statuss.find(group_name_1_);
- EXPECT_TRUE(ccs_consents.end() != updated_group_1);
+ EXPECT_TRUE(external_consent_statuss.end() != updated_group_1);
ConsentGroups::const_iterator updated_group_2 =
- ccs_consents.find(group_name_2_);
+ external_consent_statuss.find(group_name_2_);
- EXPECT_TRUE(ccs_consents.end() != updated_group_2);
+ EXPECT_TRUE(external_consent_statuss.end() != updated_group_2);
EXPECT_EQ(Boolean(false), updated_group_1->second);
EXPECT_EQ(Boolean(true), updated_group_2->second);
}
-TEST_F(PolicyManagerImplTest_CCS,
- CCS_SetCCSStatusNewAppAddedAfterward_ExpectUserConsentsUpdateForApp) {
+TEST_F(
+ PolicyManagerImplTest_ExternalConsent,
+ ExternalConsent_SetExternalConsentStatusNewAppAddedAfterward_ExpectUserConsentsUpdateForApp) {
using namespace policy_table;
using namespace rpc;
- PreconditionCCSPreparePTWithAppPolicy();
+ PreconditionExternalConsentPreparePTWithAppPolicy();
// Act
utils::SharedPtr<policy_table::Table> pt =
policy_manager_->GetCache()->GetPT();
- CCSStatus status;
- status.insert(CCSStatusItem(type_1_, id_1_, kStatusOn));
- status.insert(CCSStatusItem(type_2_, id_2_, kStatusOn));
- status.insert(CCSStatusItem(type_3_, id_3_, kStatusOn));
+ ExternalConsentStatus status;
+ status.insert(ExternalConsentStatusItem(type_1_, id_1_, kStatusOn));
+ status.insert(ExternalConsentStatusItem(type_2_, id_2_, kStatusOn));
+ status.insert(ExternalConsentStatusItem(type_3_, id_3_, kStatusOn));
- EXPECT_TRUE(policy_manager_->SetCCSStatus(status));
+ EXPECT_TRUE(policy_manager_->SetExternalConsentStatus(status));
- // Checking CCS consents after setting new CCS status
+ // Checking ExternalConsent consents after setting new ExternalConsent status
policy_table::DeviceData::const_iterator updated_device_data =
pt->policy_table.device_data->find(device_id_1_);
@@ -560,9 +568,10 @@ TEST_F(PolicyManagerImplTest_CCS,
EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_1_))
.WillRepeatedly(Return(device_id_1_));
- policy_manager_->AddApplication(app_id_1_, AppHmiTypes());
+ policy_manager_->AddApplication(app_id_1_,
+ HmiTypes(policy_table::AHT_DEFAULT));
- // Checking CCS consents after setting new CCS status
+ // Checking ExternalConsent consents after setting new ExternalConsent status
ApplicationPolicies::const_iterator app_parameters =
pt->policy_table.app_policies_section.apps.find(app_id_1_);
@@ -579,56 +588,59 @@ TEST_F(PolicyManagerImplTest_CCS,
EXPECT_TRUE(updated_device_data->second.user_consent_records->end() !=
updated_consent_records);
- const ConsentGroups& ccs_consents =
+ const ConsentGroups& external_consent_statuss =
*updated_consent_records->second.consent_groups;
- EXPECT_EQ(app_parameters->second.groups.size(), ccs_consents.size());
+ EXPECT_EQ(app_parameters->second.groups.size(),
+ external_consent_statuss.size());
ConsentGroups::const_iterator updated_group_1 =
- ccs_consents.find(group_name_1_);
+ external_consent_statuss.find(group_name_1_);
- EXPECT_TRUE(ccs_consents.end() != updated_group_1);
+ EXPECT_TRUE(external_consent_statuss.end() != updated_group_1);
ConsentGroups::const_iterator updated_group_2 =
- ccs_consents.find(group_name_2_);
+ external_consent_statuss.find(group_name_2_);
- EXPECT_TRUE(ccs_consents.end() != updated_group_2);
+ EXPECT_TRUE(external_consent_statuss.end() != updated_group_2);
EXPECT_EQ(Boolean(false), updated_group_1->second);
EXPECT_EQ(Boolean(true), updated_group_2->second);
}
-TEST_F(PolicyManagerImplTest_CCS,
- CCS_SetCCSStatusNewAppPromotedAfterward_ExpectUserConsentsUpdateForApp) {
+TEST_F(
+ PolicyManagerImplTest_ExternalConsent,
+ ExternalConsent_SetExternalConsentStatusNewAppPromotedAfterward_ExpectUserConsentsUpdateForApp) {
using namespace policy_table;
using namespace rpc;
CreateLocalPT(preloaded_pt_filename_);
- Table t = PreparePTWithGroupsHavingCCS();
+ Table t = PreparePTWithGroupsHavingExternalConsent();
EXPECT_TRUE(policy_manager_->GetCache()->ApplyUpdate(t));
- EXPECT_CALL(listener_, OnPermissionsUpdated(app_id_1_, _)).Times(AtLeast(2));
+ EXPECT_CALL(listener_, OnPermissionsUpdated(app_id_1_, _));
EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_1_))
.WillOnce(Return(device_id_1_)) // registered
.WillOnce(Return("")) // not registered
.WillRepeatedly(Return(device_id_1_)); // again registered
// First register w/o app having groups to consent
- policy_manager_->AddApplication(app_id_1_, AppHmiTypes());
+ policy_manager_->AddApplication(app_id_1_,
+ HmiTypes(policy_table::AHT_DEFAULT));
// Act
utils::SharedPtr<policy_table::Table> pt =
policy_manager_->GetCache()->GetPT();
- CCSStatus status;
- status.insert(CCSStatusItem(type_1_, id_1_, kStatusOn));
- status.insert(CCSStatusItem(type_2_, id_2_, kStatusOn));
- status.insert(CCSStatusItem(type_3_, id_3_, kStatusOn));
+ ExternalConsentStatus status;
+ status.insert(ExternalConsentStatusItem(type_1_, id_1_, kStatusOn));
+ status.insert(ExternalConsentStatusItem(type_2_, id_2_, kStatusOn));
+ status.insert(ExternalConsentStatusItem(type_3_, id_3_, kStatusOn));
- EXPECT_TRUE(policy_manager_->SetCCSStatus(status));
+ EXPECT_TRUE(policy_manager_->SetExternalConsentStatus(status));
- // Checking CCS consents after setting new CCS status
+ // Checking ExternalConsent consents after setting new ExternalConsent status
policy_table::DeviceData::const_iterator updated_device_data =
pt->policy_table.device_data->find(device_id_1_);
@@ -646,9 +658,10 @@ TEST_F(PolicyManagerImplTest_CCS,
EXPECT_TRUE(policy_manager_->GetCache()->ApplyUpdate(t));
// Second time register w/ app having groups to consent
- policy_manager_->AddApplication(app_id_1_, AppHmiTypes());
+ policy_manager_->AddApplication(app_id_1_,
+ HmiTypes(policy_table::AHT_DEFAULT));
- // Checking CCS consents after setting new CCS status
+ // Checking ExternalConsent consents after setting new ExternalConsent status
ApplicationPolicies::const_iterator app_parameters =
pt->policy_table.app_policies_section.apps.find(app_id_1_);
@@ -665,56 +678,59 @@ TEST_F(PolicyManagerImplTest_CCS,
EXPECT_TRUE(updated_device_data->second.user_consent_records->end() !=
updated_consent_records);
- const ConsentGroups& ccs_consents =
+ const ConsentGroups& external_consent_statuss =
*updated_consent_records->second.consent_groups;
- EXPECT_EQ(app_parameters->second.groups.size(), ccs_consents.size());
+ EXPECT_EQ(app_parameters->second.groups.size(),
+ external_consent_statuss.size());
ConsentGroups::const_iterator updated_group_1 =
- ccs_consents.find(group_name_1_);
+ external_consent_statuss.find(group_name_1_);
- EXPECT_TRUE(ccs_consents.end() != updated_group_1);
+ EXPECT_TRUE(external_consent_statuss.end() != updated_group_1);
ConsentGroups::const_iterator updated_group_2 =
- ccs_consents.find(group_name_2_);
+ external_consent_statuss.find(group_name_2_);
- EXPECT_TRUE(ccs_consents.end() != updated_group_2);
+ EXPECT_TRUE(external_consent_statuss.end() != updated_group_2);
EXPECT_EQ(Boolean(false), updated_group_1->second);
EXPECT_EQ(Boolean(true), updated_group_2->second);
}
-TEST_F(PolicyManagerImplTest_CCS,
- CCS_SetCCSStatusNewAppPromotedAfterward_ExpectCCSConsentsUpdateForApp) {
+TEST_F(
+ PolicyManagerImplTest_ExternalConsent,
+ ExternalConsent_SetExternalConsentStatusNewAppPromotedAfterward_ExpectExternalConsentUpdateForApp) {
using namespace policy_table;
using namespace rpc;
CreateLocalPT(preloaded_pt_filename_);
- Table t = PreparePTWithGroupsHavingCCS();
+ Table t = PreparePTWithGroupsHavingExternalConsent();
EXPECT_TRUE(policy_manager_->GetCache()->ApplyUpdate(t));
- EXPECT_CALL(listener_, OnPermissionsUpdated(app_id_1_, _)).Times(AtLeast(2));
+ EXPECT_CALL(listener_, OnPermissionsUpdated(app_id_1_, _));
EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_1_))
.WillOnce(Return(device_id_1_)) // registered
.WillOnce(Return("")) // not registered
.WillRepeatedly(Return(device_id_1_)); // registered again
// First register w/o app having groups to consent
- policy_manager_->AddApplication(app_id_1_, AppHmiTypes());
+ policy_manager_->AddApplication(app_id_1_,
+ HmiTypes(policy_table::AHT_DEFAULT));
// Act
utils::SharedPtr<policy_table::Table> pt =
policy_manager_->GetCache()->GetPT();
- CCSStatus status;
- status.insert(CCSStatusItem(type_1_, id_1_, kStatusOn));
- status.insert(CCSStatusItem(type_2_, id_2_, kStatusOn));
- status.insert(CCSStatusItem(type_3_, id_3_, kStatusOn));
+ ExternalConsentStatus status;
+ status.insert(ExternalConsentStatusItem(type_1_, id_1_, kStatusOn));
+ status.insert(ExternalConsentStatusItem(type_2_, id_2_, kStatusOn));
+ status.insert(ExternalConsentStatusItem(type_3_, id_3_, kStatusOn));
- EXPECT_TRUE(policy_manager_->SetCCSStatus(status));
+ EXPECT_TRUE(policy_manager_->SetExternalConsentStatus(status));
- // Checking CCS consents after setting new CCS status
+ // Checking ExternalConsent consents after setting new ExternalConsent status
policy_table::DeviceData::const_iterator updated_device_data =
pt->policy_table.device_data->find(device_id_1_);
@@ -732,9 +748,10 @@ TEST_F(PolicyManagerImplTest_CCS,
EXPECT_TRUE(policy_manager_->GetCache()->ApplyUpdate(t));
// Second time register w/ app having groups to consent
- policy_manager_->AddApplication(app_id_1_, AppHmiTypes());
+ policy_manager_->AddApplication(app_id_1_,
+ HmiTypes(policy_table::AHT_DEFAULT));
- // Check CCS consents for application
+ // Check ExternalConsent consents for application
updated_device_data = pt->policy_table.device_data->find(device_id_1_);
EXPECT_TRUE(pt->policy_table.device_data->end() != updated_device_data);
@@ -742,8 +759,8 @@ TEST_F(PolicyManagerImplTest_CCS,
UserConsentRecords::const_iterator updated_consent_records =
updated_device_data->second.user_consent_records->find(app_id_1_);
- const ConsentGroups& ccs_consents =
- *updated_consent_records->second.ccs_consent_groups;
+ const ConsentGroups& external_consent_statuss =
+ *updated_consent_records->second.external_consent_status_groups;
ApplicationPolicies::const_iterator app_parameters =
pt->policy_table.app_policies_section.apps.find(app_id_1_);
@@ -753,51 +770,54 @@ TEST_F(PolicyManagerImplTest_CCS,
EXPECT_TRUE(pt->policy_table.app_policies_section.apps.end() !=
app_parameters);
- EXPECT_EQ(app_parameters->second.groups.size(), ccs_consents.size());
+ EXPECT_EQ(app_parameters->second.groups.size(),
+ external_consent_statuss.size());
ConsentGroups::const_iterator updated_group_1 =
- ccs_consents.find(group_name_1_);
+ external_consent_statuss.find(group_name_1_);
- EXPECT_TRUE(ccs_consents.end() != updated_group_1);
+ EXPECT_TRUE(external_consent_statuss.end() != updated_group_1);
ConsentGroups::const_iterator updated_group_2 =
- ccs_consents.find(group_name_2_);
+ external_consent_statuss.find(group_name_2_);
- EXPECT_TRUE(ccs_consents.end() != updated_group_2);
+ EXPECT_TRUE(external_consent_statuss.end() != updated_group_2);
EXPECT_EQ(Boolean(false), updated_group_1->second);
EXPECT_EQ(Boolean(true), updated_group_2->second);
}
-TEST_F(PolicyManagerImplTest_CCS,
- CCS_PTUWithNewGroups_ExpectCCSConsentsUpdateForApp) {
+TEST_F(PolicyManagerImplTest_ExternalConsent,
+ ExternalConsent_PTUWithNewGroups_ExpectExternalConsentUpdateForApp) {
using namespace policy_table;
using namespace rpc;
- PreconditionCCSPreparePTWithAppGroupsAndConsents();
+ PreconditionExternalConsentPreparePTWithAppGroupsAndConsents();
const uint32_t type_4 = 6u;
const uint32_t id_4 = 7u;
const std::string group_name_4 = "NewGroup";
- // CCS status has new group, which is not yet assigned to any application
- CCSStatus status;
- status.insert(CCSStatusItem(type_1_, id_1_, kStatusOn));
- status.insert(CCSStatusItem(type_2_, id_2_, kStatusOn));
- status.insert(CCSStatusItem(type_4, id_4, kStatusOn));
+ // ExternalConsent status has new group, which is not yet assigned to any
+ // application
+ ExternalConsentStatus status;
+ status.insert(ExternalConsentStatusItem(type_1_, id_1_, kStatusOn));
+ status.insert(ExternalConsentStatusItem(type_2_, id_2_, kStatusOn));
+ status.insert(ExternalConsentStatusItem(type_4, id_4, kStatusOn));
- EXPECT_TRUE(policy_manager_->SetCCSStatus(status));
+ EXPECT_TRUE(policy_manager_->SetExternalConsentStatus(status));
- EXPECT_CALL(listener_, OnPermissionsUpdated(app_id_1_, _)).Times(AtLeast(1));
+ EXPECT_CALL(listener_, OnPermissionsUpdated(app_id_1_, _)).Times(0);
EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_1_))
.WillRepeatedly(Return(device_id_1_));
- policy_manager_->AddApplication(app_id_1_, AppHmiTypes());
+ policy_manager_->AddApplication(app_id_1_,
+ HmiTypes(policy_table::AHT_DEFAULT));
utils::SharedPtr<policy_table::Table> pt =
policy_manager_->GetCache()->GetPT();
- // Check CCS consents for application
+ // Check ExternalConsent consents for application
policy_table::DeviceData::const_iterator initial_device_data =
pt->policy_table.device_data->find(device_id_1_);
@@ -809,20 +829,23 @@ TEST_F(PolicyManagerImplTest_CCS,
EXPECT_TRUE(initial_device_data->second.user_consent_records->end() !=
initial_consent_records);
- const ConsentGroups& ccs_consents =
- *initial_consent_records->second.ccs_consent_groups;
+ const ConsentGroups& external_consent_statuss =
+ *initial_consent_records->second.external_consent_status_groups;
- ConsentGroups::const_iterator group_1 = ccs_consents.find(group_name_1_);
+ ConsentGroups::const_iterator group_1 =
+ external_consent_statuss.find(group_name_1_);
- EXPECT_TRUE(ccs_consents.end() != group_1);
+ EXPECT_TRUE(external_consent_statuss.end() != group_1);
- ConsentGroups::const_iterator group_2 = ccs_consents.find(group_name_2_);
+ ConsentGroups::const_iterator group_2 =
+ external_consent_statuss.find(group_name_2_);
- EXPECT_TRUE(ccs_consents.end() != group_2);
+ EXPECT_TRUE(external_consent_statuss.end() != group_2);
- ConsentGroups::const_iterator group_4 = ccs_consents.find(group_name_4);
+ ConsentGroups::const_iterator group_4 =
+ external_consent_statuss.find(group_name_4);
- EXPECT_FALSE(ccs_consents.end() != group_4);
+ EXPECT_FALSE(external_consent_statuss.end() != group_4);
// Consents for known groups have been done
EXPECT_EQ(Boolean(false), group_1->second);
@@ -836,15 +859,15 @@ TEST_F(PolicyManagerImplTest_CCS,
EXPECT_TRUE(pt->policy_table.app_policies_section.apps.end() !=
app_parameters);
- EXPECT_EQ(app_parameters->second.groups.size(), ccs_consents.size());
+ EXPECT_EQ(app_parameters->second.groups.size(),
+ external_consent_statuss.size());
const std::string ptu_json =
PreparePTUWithNewGroup(type_4, id_4, group_name_4);
const BinaryMessage msg(ptu_json.begin(), ptu_json.end());
- ON_CALL(listener_, GetRegisteredLinks())
- .WillByDefault(Return(policy::ApplicationsLinks()));
+ ON_CALL(listener_, GetRegisteredLinks(_)).WillByDefault(Return());
EXPECT_CALL(listener_, OnCertificateUpdated(_));
@@ -863,20 +886,20 @@ TEST_F(PolicyManagerImplTest_CCS,
EXPECT_TRUE(updated_device_data->second.user_consent_records->end() !=
updated_consent_records);
- const ConsentGroups& updated_ccs_consents =
- *updated_consent_records->second.ccs_consent_groups;
+ const ConsentGroups& updated_external_consent_statuss =
+ *updated_consent_records->second.external_consent_status_groups;
- group_1 = updated_ccs_consents.find(group_name_1_);
+ group_1 = updated_external_consent_statuss.find(group_name_1_);
- EXPECT_TRUE(updated_ccs_consents.end() != group_1);
+ EXPECT_TRUE(updated_external_consent_statuss.end() != group_1);
- group_2 = updated_ccs_consents.find(group_name_2_);
+ group_2 = updated_external_consent_statuss.find(group_name_2_);
- EXPECT_TRUE(updated_ccs_consents.end() != group_2);
+ EXPECT_TRUE(updated_external_consent_statuss.end() != group_2);
- group_4 = updated_ccs_consents.find(group_name_4);
+ group_4 = updated_external_consent_statuss.find(group_name_4);
- EXPECT_TRUE(updated_ccs_consents.end() != group_4);
+ EXPECT_TRUE(updated_external_consent_statuss.end() != group_4);
EXPECT_EQ(Boolean(false), group_1->second);
EXPECT_EQ(Boolean(true), group_2->second);
@@ -887,37 +910,39 @@ TEST_F(PolicyManagerImplTest_CCS,
EXPECT_TRUE(pt->policy_table.app_policies_section.apps.end() !=
app_parameters);
- EXPECT_EQ(app_parameters->second.groups.size(), ccs_consents.size());
+ EXPECT_EQ(app_parameters->second.groups.size(),
+ external_consent_statuss.size());
}
-TEST_F(PolicyManagerImplTest_CCS,
- CCS_PTUWithNewGroups_ExpectUserConsentsUpdateForApp) {
+TEST_F(PolicyManagerImplTest_ExternalConsent,
+ ExternalConsent_PTUWithNewGroups_ExpectUserConsentsUpdateForApp) {
using namespace policy_table;
using namespace rpc;
- PreconditionCCSPreparePTWithAppGroupsAndConsents();
+ PreconditionExternalConsentPreparePTWithAppGroupsAndConsents();
const uint32_t type_4 = 6u;
const uint32_t id_4 = 7u;
const std::string group_name_4 = "NewGroup";
- CCSStatus status;
- status.insert(CCSStatusItem(type_1_, id_1_, kStatusOn));
- status.insert(CCSStatusItem(type_2_, id_2_, kStatusOn));
- status.insert(CCSStatusItem(type_4, id_4, kStatusOn));
+ ExternalConsentStatus status;
+ status.insert(ExternalConsentStatusItem(type_1_, id_1_, kStatusOn));
+ status.insert(ExternalConsentStatusItem(type_2_, id_2_, kStatusOn));
+ status.insert(ExternalConsentStatusItem(type_4, id_4, kStatusOn));
- EXPECT_TRUE(policy_manager_->SetCCSStatus(status));
+ EXPECT_TRUE(policy_manager_->SetExternalConsentStatus(status));
- EXPECT_CALL(listener_, OnPermissionsUpdated(app_id_1_, _)).Times(AtLeast(1));
+ EXPECT_CALL(listener_, OnPermissionsUpdated(app_id_1_, _)).Times(0);
EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_1_))
.WillRepeatedly(Return(device_id_1_));
- policy_manager_->AddApplication(app_id_1_, AppHmiTypes());
+ policy_manager_->AddApplication(app_id_1_,
+ HmiTypes(policy_table::AHT_DEFAULT));
utils::SharedPtr<policy_table::Table> pt =
policy_manager_->GetCache()->GetPT();
- // Check CCS consents for application
+ // Check ExternalConsent consents for application
policy_table::DeviceData::const_iterator initial_device_data =
pt->policy_table.device_data->find(device_id_1_);
@@ -962,8 +987,7 @@ TEST_F(PolicyManagerImplTest_CCS,
const BinaryMessage msg(ptu_json.begin(), ptu_json.end());
- ON_CALL(listener_, GetRegisteredLinks())
- .WillByDefault(Return(policy::ApplicationsLinks()));
+ ON_CALL(listener_, GetRegisteredLinks(_)).WillByDefault(Return());
EXPECT_CALL(listener_, OnCertificateUpdated(_));
@@ -1009,18 +1033,19 @@ TEST_F(PolicyManagerImplTest_CCS,
EXPECT_EQ(app_parameters->second.groups.size(), user_consents.size());
}
-TEST_F(PolicyManagerImplTest_CCS,
- CCS_SetCCSStatusTurnOnThanOff_ExpectCCSConsentsUpdateForApp) {
+TEST_F(
+ PolicyManagerImplTest_ExternalConsent,
+ ExternalConsent_SetExternalConsentStatusTurnOnThanOff_ExpectExternalConsentUpdateForApp) {
using namespace policy_table;
using namespace rpc;
- PreconditionCCSPreparePTWithAppGroupsAndConsents();
+ PreconditionExternalConsentPreparePTWithAppGroupsAndConsents();
// Act
utils::SharedPtr<policy_table::Table> pt =
policy_manager_->GetCache()->GetPT();
- // Checking CCS consents before setting new CCS status
+ // Checking ExternalConsent consents before setting new ExternalConsent status
policy_table::DeviceData::const_iterator updated_device_data =
pt->policy_table.device_data->find(device_id_1_);
@@ -1032,21 +1057,22 @@ TEST_F(PolicyManagerImplTest_CCS,
EXPECT_TRUE(updated_device_data->second.user_consent_records->end() !=
updated_consent_records);
- EXPECT_TRUE(updated_consent_records->second.ccs_consent_groups->empty());
+ EXPECT_TRUE(
+ updated_consent_records->second.external_consent_status_groups->empty());
- // Act - setting new CCS status
- CCSStatus status_on;
- status_on.insert(CCSStatusItem(type_1_, id_1_, kStatusOn));
- status_on.insert(CCSStatusItem(type_2_, id_2_, kStatusOn));
- status_on.insert(CCSStatusItem(type_3_, id_3_, kStatusOn));
+ // Act - setting new ExternalConsent status
+ ExternalConsentStatus status_on;
+ status_on.insert(ExternalConsentStatusItem(type_1_, id_1_, kStatusOn));
+ status_on.insert(ExternalConsentStatusItem(type_2_, id_2_, kStatusOn));
+ status_on.insert(ExternalConsentStatusItem(type_3_, id_3_, kStatusOn));
EXPECT_CALL(listener_, OnPermissionsUpdated(app_id_1_, _));
- EXPECT_TRUE(policy_manager_->SetCCSStatus(status_on));
+ EXPECT_TRUE(policy_manager_->SetExternalConsentStatus(status_on));
- // Checking CCS consents after setting new CCS status
- const ConsentGroups& ccs_consents =
- *updated_consent_records->second.ccs_consent_groups;
+ // Checking ExternalConsent consents after setting new ExternalConsent status
+ const ConsentGroups& external_consent_statuss =
+ *updated_consent_records->second.external_consent_status_groups;
ApplicationPolicies::const_iterator app_parameters =
pt->policy_table.app_policies_section.apps.find(app_id_1_);
@@ -1054,30 +1080,31 @@ TEST_F(PolicyManagerImplTest_CCS,
EXPECT_TRUE(pt->policy_table.app_policies_section.apps.end() !=
app_parameters);
- EXPECT_EQ(app_parameters->second.groups.size(), ccs_consents.size());
+ EXPECT_EQ(app_parameters->second.groups.size(),
+ external_consent_statuss.size());
ConsentGroups::const_iterator updated_group_1 =
- ccs_consents.find(group_name_1_);
+ external_consent_statuss.find(group_name_1_);
- EXPECT_TRUE(ccs_consents.end() != updated_group_1);
+ EXPECT_TRUE(external_consent_statuss.end() != updated_group_1);
ConsentGroups::const_iterator updated_group_2 =
- ccs_consents.find(group_name_2_);
+ external_consent_statuss.find(group_name_2_);
- EXPECT_TRUE(ccs_consents.end() != updated_group_2);
+ EXPECT_TRUE(external_consent_statuss.end() != updated_group_2);
EXPECT_EQ(Boolean(false), updated_group_1->second);
EXPECT_EQ(Boolean(true), updated_group_2->second);
- // Switching CCS status off
- CCSStatus status_off;
- status_off.insert(CCSStatusItem(type_1_, id_1_, kStatusOff));
- status_off.insert(CCSStatusItem(type_2_, id_2_, kStatusOff));
- status_off.insert(CCSStatusItem(type_3_, id_3_, kStatusOff));
+ // Switching ExternalConsent status off
+ ExternalConsentStatus status_off;
+ status_off.insert(ExternalConsentStatusItem(type_1_, id_1_, kStatusOff));
+ status_off.insert(ExternalConsentStatusItem(type_2_, id_2_, kStatusOff));
+ status_off.insert(ExternalConsentStatusItem(type_3_, id_3_, kStatusOff));
- EXPECT_CALL(listener_, OnPermissionsUpdated(app_id_1_, _));
+ EXPECT_CALL(listener_, OnPermissionsUpdated(app_id_1_, _)).Times(0);
- EXPECT_TRUE(policy_manager_->SetCCSStatus(status_on));
+ EXPECT_TRUE(policy_manager_->SetExternalConsentStatus(status_on));
EXPECT_EQ(Boolean(true), updated_group_1->second);
EXPECT_EQ(Boolean(false), updated_group_2->second);
diff --git a/src/components/policy/policy_external/test/policy_manager_impl_test_base.cc b/src/components/policy/policy_external/test/policy_manager_impl_test_base.cc
index a2b2d14cb3..82d958d2d1 100644
--- a/src/components/policy/policy_external/test/policy_manager_impl_test_base.cc
+++ b/src/components/policy/policy_external/test/policy_manager_impl_test_base.cc
@@ -192,6 +192,13 @@ void InsertRpcParametersInList(::policy::RPCParams& input_params) {
input_params.insert("timeStamp");
input_params.insert("address");
}
+
+policy_table::AppHmiTypes HmiTypes(const policy_table::AppHMIType hmi_type) {
+ policy_table::AppHmiTypes hmi_types;
+ hmi_types.push_back(hmi_type);
+ return hmi_types;
+}
+
// PolicyManagerImplTest class methods
PolicyManagerImplTest::PolicyManagerImplTest()
: unpaired_device_id_("08-00-27-CE-76-FE")
@@ -201,16 +208,16 @@ PolicyManagerImplTest::PolicyManagerImplTest()
void PolicyManagerImplTest::SetUp() {
policy_manager_ = new PolicyManagerImpl();
cache_manager_ = new MockCacheManagerInterface();
- manager_->set_cache_manager(cache_manager_);
- manager_->set_listener(&listener_);
+ policy_manager_->set_cache_manager(cache_manager_);
+ policy_manager_->set_listener(&listener_);
- ON_CALL(*cache_manager_, GetCCSStatus()).WillByDefault(Return(CCSStatus()));
+ ON_CALL(*cache_manager_, GetExternalConsentStatus())
+ .WillByDefault(Return(ExternalConsentStatus()));
ON_CALL(*cache_manager_, GetGroupsWithSameEntities(_))
- .WillByDefault(Return(GroupsByCCSStatus()));
+ .WillByDefault(Return(GroupsByExternalConsentStatus()));
ON_CALL(*cache_manager_, GetKnownLinksFromPT())
- .WillByDefault(Return(ApplicationsLinks()));
- ON_CALL(listener_, GetRegisteredLinks())
- .WillByDefault(Return(policy::ApplicationsLinks()));
+ .WillByDefault(Return(std::map<std::string, std::string>()));
+ ON_CALL(listener_, GetRegisteredLinks(_)).WillByDefault(Return());
}
void PolicyManagerImplTest::TearDown() {
@@ -237,7 +244,7 @@ PolicyManagerImplTest2::PolicyManagerImplTest2()
, device_id_2_("08-00-27-CE-76-FE")
, application_id_("1234")
, app_storage_folder_("storage1")
- , preloadet_pt_filename_(kSdlPreloadedPtJson)
+ , preloaded_pt_filename_(kSdlPreloadedPtJson)
, in_memory_(true)
, policy_manager_(NULL)
, ptu_request_types_size_(0u)
@@ -245,8 +252,7 @@ PolicyManagerImplTest2::PolicyManagerImplTest2()
, ptu_request_types_(Json::arrayValue) {}
void PolicyManagerImplTest2::SetUp() {
- ON_CALL(listener_, GetRegisteredLinks())
- .WillByDefault(Return(policy::ApplicationsLinks()));
+ ON_CALL(listener_, GetRegisteredLinks(_)).WillByDefault(Return());
file_system::CreateDirectory(app_storage_folder_);
@@ -299,7 +305,7 @@ void PolicyManagerImplTest2::AddRTtoPT(const std::string& update_file_name,
const uint32_t rt_number,
const uint32_t invalid_rt_number) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
// Get RequestTypes from section of preloaded_pt app_policies
pt_request_types_ = policy_manager_->GetAppRequestTypes(section_name);
EXPECT_EQ(rt_number, pt_request_types_.size());
@@ -322,9 +328,10 @@ void PolicyManagerImplTest2::AddRTtoAppSectionPT(
const uint32_t rt_number,
const uint32_t invalid_rt_number) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
// Add app
- policy_manager_->AddApplication(section_name);
+ policy_manager_->AddApplication(section_name,
+ HmiTypes(policy_table::AHT_DEFAULT));
// Check app gets RequestTypes from pre_DataConsent of app_policies
// section
pt_request_types_ = policy_manager_->GetAppRequestTypes(section_name);
@@ -443,7 +450,8 @@ void PolicyManagerImplTest2::
"Bluetooth"));
// Add app from consented device. App will be assigned with default policies
- policy_manager_->AddApplication(application_id_);
+ policy_manager_->AddApplication(application_id_,
+ HmiTypes(policy_table::AHT_DEFAULT));
// Expect all parameters are allowed
std::ifstream ifile(update_file);
@@ -526,6 +534,33 @@ void PolicyManagerImplTest2::CheckRpcPermissions(
EXPECT_EQ(expected_permission, output.hmi_level_permitted);
}
+void PolicyManagerImplTest2::CheckRpcPermissions(
+ const std::string& app_id,
+ const std::string& rpc_name,
+ const policy::PermitResult& out_expected_permission) {
+ ::policy::RPCParams input_params;
+ ::policy::CheckPermissionResult output;
+ policy_manager_->CheckPermissions(
+ app_id, kHmiLevelFull, rpc_name, input_params, output);
+ EXPECT_EQ(out_expected_permission, output.hmi_level_permitted);
+}
+
+void PolicyManagerImplTest2::EmulatePTAppRevoked(const std::string& ptu_name) {
+ std::ifstream ifile(ptu_name);
+ Json::Reader reader;
+ std::string json;
+ Json::Value root(Json::objectValue);
+ if (ifile.is_open() && reader.parse(ifile, root, true)) {
+ // Emulate application is revoked
+ root["policy_table"]["app_policies"]["1234"]["is_revoked"] = 1;
+ json = root.toStyledString();
+ }
+ ifile.close();
+
+ ::policy::BinaryMessage msg(json.begin(), json.end());
+ ASSERT_TRUE(policy_manager_->LoadPT(kDummyUpdateFileName, msg));
+}
+
// To avoid duplicate arrange of test
void PolicyManagerImplTest2::AddSetDeviceData() {
CreateLocalPT("json/sdl_preloaded_pt_send_location.json");
@@ -541,7 +576,8 @@ void PolicyManagerImplTest2::AddSetDeviceData() {
"Bluetooth"));
// Add app from consented device. App will be assigned with default policies
- policy_manager_->AddApplication(application_id_);
+ policy_manager_->AddApplication(application_id_,
+ HmiTypes(policy_table::AHT_DEFAULT));
(policy_manager_->GetCache())->AddDevice(device_id_1_, "Bluetooth");
}
@@ -596,11 +632,10 @@ PolicyManagerImplTest_RequestTypes::PolicyManagerImplTest_RequestTypes()
, kAppId("1766825573")
, kDefaultAppId(policy::kDefaultId)
, app_storage_folder_("storage3")
- , preloadet_pt_filename_(kSdlPreloadedPtJson) {}
+ , preloaded_pt_filename_(kSdlPreloadedPtJson) {}
void PolicyManagerImplTest_RequestTypes::SetUp() {
- ON_CALL(listener_, GetRegisteredLinks())
- .WillByDefault(Return(policy::ApplicationsLinks()));
+ ON_CALL(listener_, GetRegisteredLinks(_)).WillByDefault(Return());
file_system::CreateDirectory(app_storage_folder_);
const bool in_memory = true;
@@ -663,7 +698,7 @@ PolicyManagerImplTest_RequestTypes::GetRequestTypesForApplication(
void PolicyManagerImplTest_RequestTypes::CompareAppRequestTypesWithDefault(
const std::string& app_id, const std::string& ptu_file) {
// Refresh policy table with invalid RequestType in application
- RefreshPT(preloadet_pt_filename_, ptu_file);
+ RefreshPT(preloaded_pt_filename_, ptu_file);
// Get <app_id> RequestType array
policy_table::RequestTypes app_request_types =
@@ -721,13 +756,13 @@ void PolicyManagerImplTest_RequestTypes::TearDown() {
file_system::RemoveDirectory(app_storage_folder_, true);
}
-void PolicyManagerImplTest_CCS::
- PreconditionCCSPreparePTWithAppGroupsAndConsents() {
+void PolicyManagerImplTest_ExternalConsent::
+ PreconditionExternalConsentPreparePTWithAppGroupsAndConsents() {
using namespace policy_table;
using namespace rpc;
CreateLocalPT(preloaded_pt_filename_);
- Table t = PreparePTWithGroupsHavingCCS();
+ Table t = PreparePTWithGroupsHavingExternalConsent();
ApplicationParams app_params;
app_params.groups.push_back(group_name_1_);
@@ -762,14 +797,16 @@ void PolicyManagerImplTest_CCS::
policy_manager_->SetUserConsentForApp(permissions);
}
-void PolicyManagerImplTest_CCS::PreconditionCCSPreparePTWithAppPolicy() {
+void PolicyManagerImplTest_ExternalConsent::
+ PreconditionExternalConsentPreparePTWithAppPolicy() {
using namespace policy_table;
using namespace rpc;
// PT has 3 functional groups with some entities in
- // disallowed_by_ccs_entities_on/off. Groups consents can be changed.
+ // disallowed_by_external_consent_entities_on/off. Groups consents can be
+ // changed.
CreateLocalPT(preloaded_pt_filename_);
- Table t = PreparePTWithGroupsHavingCCS();
+ Table t = PreparePTWithGroupsHavingExternalConsent();
ApplicationParams app_params;
app_params.groups.push_back(group_name_1_);
@@ -781,30 +818,31 @@ void PolicyManagerImplTest_CCS::PreconditionCCSPreparePTWithAppPolicy() {
EXPECT_TRUE(policy_manager_->GetCache()->ApplyUpdate(t));
}
-rpc::policy_table_interface_base::Table
-PolicyManagerImplTest_CCS::PreparePTWithGroupsHavingCCS() {
+rpc::policy_table_interface_base::Table PolicyManagerImplTest_ExternalConsent::
+ PreparePTWithGroupsHavingExternalConsent() {
using namespace policy_table;
using namespace rpc;
// PT has 3 functional groups with some entities in
- // disallowed_by_ccs_entities_on/off. Groups consents can be changed.
+ // disallowed_by_external_consent_entities_on/off. Groups consents can be
+ // changed.
- CCS_Entity entity_1(type_1_, id_1_);
- CCS_Entity entity_2(type_2_, id_2_);
- CCS_Entity entity_3(type_3_, id_3_);
+ ExternalConsentEntity entity_1(type_1_, id_1_);
+ ExternalConsentEntity entity_2(type_2_, id_2_);
+ ExternalConsentEntity entity_3(type_3_, id_3_);
Rpcs rpcs_1;
- rpcs_1.disallowed_by_ccs_entities_on->push_back(entity_1);
+ rpcs_1.disallowed_by_external_consent_entities_on->push_back(entity_1);
*rpcs_1.user_consent_prompt = group_name_1_;
rpcs_1.rpcs.set_to_null();
Rpcs rpcs_2;
- rpcs_2.disallowed_by_ccs_entities_off->push_back(entity_2);
+ rpcs_2.disallowed_by_external_consent_entities_off->push_back(entity_2);
*rpcs_2.user_consent_prompt = group_name_2_;
rpcs_2.rpcs.set_to_null();
Rpcs rpcs_3;
- rpcs_3.disallowed_by_ccs_entities_on->push_back(entity_3);
+ rpcs_3.disallowed_by_external_consent_entities_on->push_back(entity_3);
*rpcs_3.user_consent_prompt = group_name_3_;
rpcs_3.rpcs.set_to_null();
@@ -819,7 +857,7 @@ PolicyManagerImplTest_CCS::PreparePTWithGroupsHavingCCS() {
return t;
}
-std::string PolicyManagerImplTest_CCS::PreparePTUWithNewGroup(
+std::string PolicyManagerImplTest_ExternalConsent::PreparePTUWithNewGroup(
const uint32_t type, const uint32_t id, const std::string& group_name) {
using namespace policy_table;
using namespace rpc;
@@ -829,12 +867,12 @@ std::string PolicyManagerImplTest_CCS::PreparePTUWithNewGroup(
std::string json;
Json::Value root(Json::objectValue);
if (ifile.is_open() && reader.parse(ifile, root, true)) {
- Table t = PreparePTWithGroupsHavingCCS();
+ Table t = PreparePTWithGroupsHavingExternalConsent();
- CCS_Entity entity_4(type, id);
+ ExternalConsentEntity entity_4(type, id);
Rpcs rpcs_4;
- rpcs_4.disallowed_by_ccs_entities_on->push_back(entity_4);
+ rpcs_4.disallowed_by_external_consent_entities_on->push_back(entity_4);
*rpcs_4.user_consent_prompt = group_name;
rpcs_4.rpcs.set_to_null();
@@ -865,6 +903,9 @@ std::string PolicyManagerImplTest_CCS::PreparePTUWithNewGroup(
root[policy_table_key][app_policies_key][app_id_1_] =
overriden_table[policy_table_key][app_policies_key][app_id_1_];
+ root[policy_table_key]["module_config"].removeMember("preloaded_pt");
+ root[policy_table_key]["module_config"].removeMember("preloaded_date");
+
json = root.toStyledString();
}
ifile.close();
diff --git a/src/components/policy/policy_external/test/policy_manager_impl_user_consent_test.cc b/src/components/policy/policy_external/test/policy_manager_impl_user_consent_test.cc
index 56a779f350..2f2162494f 100644
--- a/src/components/policy/policy_external/test/policy_manager_impl_user_consent_test.cc
+++ b/src/components/policy/policy_external/test/policy_manager_impl_user_consent_test.cc
@@ -47,14 +47,15 @@ TEST_F(
PolicyManagerImplTest2,
AddApplication_AddNewApplicationFromDeviceWithConsent_ExpectUpdateRequired) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_1_))
- .WillOnce(Return(device_id_1_));
+ .WillRepeatedly(Return(device_id_1_));
policy_manager_->SetUserConsentForDevice(device_id_1_, true);
- policy_manager_->AddApplication(app_id_1_);
+ policy_manager_->AddApplication(app_id_1_,
+ HmiTypes(policy_table::AHT_DEFAULT));
EXPECT_EQ("UPDATE_NEEDED", policy_manager_->GetPolicyTableStatus());
}
@@ -63,7 +64,7 @@ TEST_F(
PolicyManagerImplTest2,
AddApplication_AddNewApplicationFromDeviceWithoutConsent_ExpectUpToDate) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
// To set UP_TO_DATE before registration
GetPTU(kValidSdlPtUpdateJson);
@@ -76,11 +77,12 @@ TEST_F(
policy_manager_->PTUpdatedAt(KILOMETERS, 1000);
EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_1_))
- .WillOnce(Return(device_id_1_));
+ .WillRepeatedly(Return(device_id_1_));
policy_manager_->SetUserConsentForDevice(device_id_1_, false);
- policy_manager_->AddApplication(app_id_1_);
+ policy_manager_->AddApplication(app_id_1_,
+ HmiTypes(policy_table::AHT_DEFAULT));
EXPECT_EQ("UP_TO_DATE", policy_manager_->GetPolicyTableStatus());
}
@@ -89,8 +91,9 @@ TEST_F(
PolicyManagerImplTest2,
ReactOnUserDevConsentForApp_AddNewApplicationFromDeviceWithoutConsent_ExpectPreDataConsent) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
- policy_manager_->AddApplication(app_id_1_);
+ CreateLocalPT(preloaded_pt_filename_);
+ policy_manager_->AddApplication(app_id_1_,
+ HmiTypes(policy_table::AHT_DEFAULT));
ASSERT_TRUE(policy_manager_->IsPredataPolicy(app_id_1_));
policy_manager_->ReactOnUserDevConsentForApp(app_id_1_, false);
EXPECT_TRUE(policy_manager_->IsPredataPolicy(app_id_1_));
@@ -103,7 +106,8 @@ TEST_F(PolicyManagerImplTest2,
CreateLocalPT(kSdlPreloadedPtJson2);
ASSERT_TRUE(
(policy_manager_->GetCache())->AddDevice(device_id_2_, "Bluetooth"));
- policy_manager_->AddApplication(application_id_);
+ policy_manager_->AddApplication(application_id_,
+ HmiTypes(policy_table::AHT_DEFAULT));
// Expect RPCs from pre_dataConsent group are allowed
// Next checks are equal to BaseBeforeDataConsent_APIs.xml checks from task
@@ -150,8 +154,9 @@ TEST_F(PolicyManagerImplTest2,
// Related to manual tests APPLINK-18763, APPLINK-18764
TEST_F(PolicyManagerImplTest2, CheckPreDataConsent_GetDefaultHmiLevel_NONE) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
- policy_manager_->AddApplication(app_id_2_);
+ CreateLocalPT(preloaded_pt_filename_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
std::string default_hmi;
// Default HMI level is NONE
policy_manager_->GetDefaultHmi(app_id_2_, &default_hmi);
@@ -168,7 +173,8 @@ TEST_F(PolicyManagerImplTest2,
CheckPreDataConsent_GetDefaultHmiLevel_BACKGROUNG) {
// Arrange
CreateLocalPT(kSdlPreloadedPtJson2);
- policy_manager_->AddApplication(app_id_2_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
std::string default_hmi;
// Default HMI level is BACKGROUND
policy_manager_->GetDefaultHmi(app_id_2_, &default_hmi);
@@ -185,7 +191,8 @@ TEST_F(
// Arrange
// RequestTypes for default & preDataConsent are different
CreateLocalPT("json/ptu_requestType.json");
- policy_manager_->AddApplication(app_id_1_);
+ policy_manager_->AddApplication(app_id_1_,
+ HmiTypes(policy_table::AHT_DEFAULT));
ASSERT_TRUE(policy_manager_->IsPredataPolicy(app_id_1_));
policy_manager_->ReactOnUserDevConsentForApp(app_id_1_, true);
EXPECT_FALSE(policy_manager_->IsPredataPolicy(app_id_1_));
@@ -199,7 +206,8 @@ TEST_F(
// Arrange
// RequestTypes for default & preDataConsent are the same
CreateLocalPT(kPtu2RequestTypeJson);
- policy_manager_->AddApplication(app_id_1_);
+ policy_manager_->AddApplication(app_id_1_,
+ HmiTypes(policy_table::AHT_DEFAULT));
ASSERT_TRUE(policy_manager_->IsPredataPolicy(app_id_1_));
EXPECT_CALL(listener_, OnPendingPermissionChange(app_id_1_)).Times(0);
policy_manager_->ReactOnUserDevConsentForApp(app_id_1_, true);
@@ -211,7 +219,7 @@ TEST_F(
PolicyManagerImplTest2,
GetUserConsentForDevice_SetDeviceWithoutConcent_ExpectReceivedConsentCorrect) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
ASSERT_TRUE(
(policy_manager_->GetCache())->AddDevice(device_id_2_, "Bluetooth"));
::policy::DeviceConsent consent =
@@ -223,7 +231,7 @@ TEST_F(
TEST_F(PolicyManagerImplTest2,
GetUserConsentForDevice_SetDeviceAllowed_ExpectReceivedConsentCorrect) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
ASSERT_TRUE(
(policy_manager_->GetCache())->AddDevice(device_id_2_, "Bluetooth"));
@@ -248,7 +256,7 @@ TEST_F(
PolicyManagerImplTest2,
GetUserConsentForDevice_SetDeviceDisallowed_ExpectReceivedConsentCorrect) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
ASSERT_TRUE(
(policy_manager_->GetCache())->AddDevice(device_id_2_, "Bluetooth"));
ASSERT_TRUE((policy_manager_->GetCache())
@@ -291,7 +299,8 @@ TEST_F(PolicyManagerImplTest2,
EXPECT_EQ(::policy::DeviceConsent::kDeviceDisallowed, consent);
EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_2_))
.WillRepeatedly(Return(device_id_2_));
- policy_manager_->AddApplication(app_id_2_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
std::string default_hmi;
policy_manager_->GetDefaultHmi(app_id_2_, &default_hmi);
EXPECT_EQ("NONE", default_hmi);
@@ -301,7 +310,8 @@ TEST_F(PolicyManagerImplTest2,
GetDefaultHmi_SetDeviceAllowed_ExpectReceivedHmiCorrect) {
// Arrange
CreateLocalPT(kPtu2RequestTypeJson);
- policy_manager_->AddApplication(app_id_2_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
// Check if app has preData policy
EXPECT_TRUE(policy_manager_->IsPredataPolicy(app_id_2_));
std::string default_hmi1;
@@ -325,7 +335,8 @@ TEST_F(PolicyManagerImplTest2,
EXPECT_EQ(::policy::DeviceConsent::kDeviceAllowed, consent);
EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_2_))
.WillRepeatedly(Return(device_id_2_));
- policy_manager_->AddApplication(app_id_2_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
EXPECT_TRUE((policy_manager_->GetCache())->IsDefaultPolicy(app_id_2_));
std::string default_hmi2;
policy_manager_->GetDefaultHmi(app_id_2_, &default_hmi2);
@@ -336,7 +347,8 @@ TEST_F(PolicyManagerImplTest2,
GetDefaultPriority_SetDeviceAllowed_ExpectReceivedPriorityCorrect) {
// Arrange
CreateLocalPT(kPtu2RequestTypeJson);
- policy_manager_->AddApplication(app_id_2_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
// Check if app has preData policy
EXPECT_TRUE(policy_manager_->IsPredataPolicy(app_id_2_));
std::string priority1;
@@ -360,7 +372,8 @@ TEST_F(PolicyManagerImplTest2,
EXPECT_EQ(::policy::DeviceConsent::kDeviceAllowed, consent);
EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_2_))
.WillRepeatedly(Return(device_id_2_));
- policy_manager_->AddApplication(app_id_2_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
EXPECT_TRUE((policy_manager_->GetCache())->IsDefaultPolicy(app_id_2_));
std::string priority2;
EXPECT_TRUE(policy_manager_->GetPriority(app_id_2_, &priority2));
@@ -370,7 +383,7 @@ TEST_F(PolicyManagerImplTest2,
TEST_F(PolicyManagerImplTest2,
GetUserFirendlyMessages_ExpectReceivedCorrectMessages) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
::policy::StringArray message_code;
message_code.push_back("SettingEnableUpdates");
message_code.push_back("AppPermissions");
@@ -476,12 +489,13 @@ TEST_F(PolicyManagerImplTest2, SetDeviceInfo_ExpectDevInfoAddedToPT) {
TEST_F(PolicyManagerImplTest2, GetInitialAppData_ExpectReceivedConsentCorrect) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
- policy_manager_->AddApplication(app_id_2_);
+ CreateLocalPT(preloaded_pt_filename_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
::policy::StringArray app_nicknames;
::policy::StringArray app_hmi_types;
policy_manager_->GetInitialAppData(app_id_2_, &app_nicknames, &app_hmi_types);
- // Expect Empty nicknames and AppHMITypes
+ // Expect Empty nicknames and AppHmiTypes
EXPECT_EQ(0u, app_nicknames.size());
EXPECT_EQ(0u, app_hmi_types.size());
@@ -509,7 +523,7 @@ TEST_F(PolicyManagerImplTest2, GetInitialAppData_ExpectReceivedConsentCorrect) {
for (uint32_t i = 0; i < nick_names_size; ++i) {
EXPECT_EQ(app_nicknames1[i], appNicknames[i].asString());
}
- // Check AppHMITypes match
+ // Check AppHmiTypes match
for (uint32_t i = 0; i < app_hmi_types_size; ++i) {
EXPECT_EQ(app_hmi_types1[i], appHmiTypes[i].asString());
}
@@ -519,8 +533,9 @@ TEST_F(
PolicyManagerImplTest2,
CanAppKeepContext_AddAppFromUnconsentedDevice_ExpectAppCannotKeepContext) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
- policy_manager_->AddApplication(app_id_2_);
+ CreateLocalPT(preloaded_pt_filename_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
// Check if app has preData policy
EXPECT_TRUE(policy_manager_->IsPredataPolicy(app_id_2_));
// Check keep context in preData policy
@@ -530,10 +545,11 @@ TEST_F(
TEST_F(PolicyManagerImplTest2,
CanAppKeepContext_AddAppFromConsentedDevice_ExpectAppCannotKeepContext) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
ASSERT_TRUE(
(policy_manager_->GetCache())->AddDevice(device_id_2_, "Bluetooth"));
- policy_manager_->AddApplication(app_id_2_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
ASSERT_TRUE((policy_manager_->GetCache())
->SetDeviceData(device_id_2_,
"hardware IPX",
@@ -549,7 +565,8 @@ TEST_F(PolicyManagerImplTest2,
EXPECT_EQ(::policy::DeviceConsent::kDeviceAllowed, consent);
EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_2_))
.WillRepeatedly(Return(device_id_2_));
- policy_manager_->AddApplication(app_id_2_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
EXPECT_TRUE((policy_manager_->GetCache())->IsDefaultPolicy(app_id_2_));
// Check keep context in default policy
EXPECT_FALSE(policy_manager_->CanAppKeepContext(app_id_2_));
@@ -558,8 +575,9 @@ TEST_F(PolicyManagerImplTest2,
TEST_F(PolicyManagerImplTest2,
CanAppStealFocus_AddAppFromUnconsentedDevice_ExpectAppCannotStealFocus) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
- policy_manager_->AddApplication(app_id_2_);
+ CreateLocalPT(preloaded_pt_filename_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
// Check if app has preData policy
EXPECT_TRUE(policy_manager_->IsPredataPolicy(app_id_2_));
// Check keep context in preData policy
@@ -569,10 +587,11 @@ TEST_F(PolicyManagerImplTest2,
TEST_F(PolicyManagerImplTest2,
CanAppStealFocus_AddAppFromConsentedDevice_ExpectAppCannotStealFocus) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
+ CreateLocalPT(preloaded_pt_filename_);
ASSERT_TRUE(
(policy_manager_->GetCache())->AddDevice(device_id_2_, "Bluetooth"));
- policy_manager_->AddApplication(app_id_2_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
ASSERT_TRUE((policy_manager_->GetCache())
->SetDeviceData(device_id_2_,
"hardware IPX",
@@ -588,7 +607,8 @@ TEST_F(PolicyManagerImplTest2,
EXPECT_EQ(::policy::DeviceConsent::kDeviceAllowed, consent);
EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_2_))
.WillRepeatedly(Return(device_id_2_));
- policy_manager_->AddApplication(app_id_2_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
EXPECT_TRUE((policy_manager_->GetCache())->IsDefaultPolicy(app_id_2_));
// Check keep context in default policy
EXPECT_FALSE(policy_manager_->CanAppStealFocus(app_id_2_));
@@ -597,8 +617,9 @@ TEST_F(PolicyManagerImplTest2,
TEST_F(PolicyManagerImplTest2,
IsPredataPolicy_SetAppWIthPredataPolicy_ExpectPredataPolicy) {
// Arrange
- CreateLocalPT(preloadet_pt_filename_);
- policy_manager_->AddApplication(app_id_2_);
+ CreateLocalPT(preloaded_pt_filename_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
// Check if app has preData policy
EXPECT_TRUE(policy_manager_->IsPredataPolicy(app_id_2_));
}
@@ -608,7 +629,8 @@ TEST_F(
SendNotificationOnPermissionsUpdated_SetDeviceAllowed_ExpectNotificationSent) {
// Arrange
CreateLocalPT(kPtu2RequestTypeJson);
- policy_manager_->AddApplication(app_id_2_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
// Check if app has preData policy
EXPECT_TRUE(policy_manager_->IsPredataPolicy(app_id_2_));
std::string default_hmi1;
@@ -638,7 +660,8 @@ TEST_F(
EXPECT_EQ(::policy::DeviceConsent::kDeviceAllowed, consent);
EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_2_))
.WillRepeatedly(Return(device_id_2_));
- policy_manager_->AddApplication(app_id_2_);
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
EXPECT_TRUE((policy_manager_->GetCache())->IsDefaultPolicy(app_id_2_));
std::string default_hmi2;
policy_manager_->GetDefaultHmi(app_id_2_, &default_hmi2);
diff --git a/src/components/policy/policy_external/test/sql_pt_ext_representation_test.cc b/src/components/policy/policy_external/test/sql_pt_ext_representation_test.cc
index 8d5c980ccd..92525c646d 100644
--- a/src/components/policy/policy_external/test/sql_pt_ext_representation_test.cc
+++ b/src/components/policy/policy_external/test/sql_pt_ext_representation_test.cc
@@ -64,10 +64,10 @@ class SQLPTExtRepresentationTest : public ::testing::Test {
// Collection of pairs of group alias and corresponding group name
typedef vector<pair<string, string> > GroupsAliasNameCollection;
- SQLPTExtRepresentationTest() : reps(0) {}
+ SQLPTExtRepresentationTest() : reps_(NULL) {}
protected:
- SQLPTExtRepresentation* reps;
+ SQLPTExtRepresentation* reps_;
policy_handler_test::MockPolicySettings policy_settings_;
static const string kDatabaseName;
PermissionConsent perm_consent;
@@ -75,24 +75,24 @@ class SQLPTExtRepresentationTest : public ::testing::Test {
FunctionalGroupPermission group2_perm;
utils::dbms::SQLQuery* query_wrapper_;
static const bool in_memory_;
- const std::string kAppStorageFolder = "storage1";
+ const std::string kAppStorageFolder = "storage_SQLPTExtRepresentationTest";
void SetUp() OVERRIDE {
file_system::DeleteFile(kDatabaseName);
- reps = new SQLPTExtRepresentation(in_memory_);
- ASSERT_TRUE(reps != NULL);
+ reps_ = new SQLPTExtRepresentation(in_memory_);
+ ASSERT_TRUE(reps_ != NULL);
ON_CALL(policy_settings_, app_storage_folder())
.WillByDefault(ReturnRef(kAppStorageFolder));
- ASSERT_EQ(SUCCESS, reps->Init(&policy_settings_));
- query_wrapper_ = new utils::dbms::SQLQuery(reps->db());
+ ASSERT_EQ(SUCCESS, reps_->Init(&policy_settings_));
+ query_wrapper_ = new utils::dbms::SQLQuery(reps_->db());
ASSERT_TRUE(query_wrapper_ != NULL);
}
void TearDown() OVERRIDE {
delete query_wrapper_;
- EXPECT_TRUE(reps->Drop());
- EXPECT_TRUE(reps->Close());
- delete reps;
+ EXPECT_TRUE(reps_->Drop());
+ EXPECT_TRUE(reps_->Close());
+ delete reps_;
}
void FillGroupPermission(
@@ -193,8 +193,76 @@ class SQLPTExtRepresentationTest : public ::testing::Test {
}
return result;
}
+ // Attempt of simplifying policy table checks, hides internal stuff, add
+ // basic checks for data existence before getting of data
+ // For usage example see SaveUserConsentRecords_ExpectedSaved,
+ // SaveFunctionalGroupings_ExpectedSaved tests
+ template <typename ParentType, typename KeyType>
+ bool IsExist(const ParentType& parent) const;
+
+ template <typename ParentType, typename Value>
+ bool IsKeyExist(const ParentType& parent, const Value& value) const {
+ return parent.end() != std::find(parent.begin(), parent.end(), value);
+ }
+
+ template <typename ParentType>
+ bool IsKeyExist(const ParentType& parent, const std::string& value) const {
+ return parent.end() != parent.find(value);
+ }
+
+ template <typename ParentType, typename KeyType>
+ const KeyType& GetData(const ParentType& parent) const {
+ EXPECT_TRUE((IsExist<ParentType, KeyType>(parent)));
+ return GetDataInternal<ParentType, KeyType>(parent);
+ }
+
+ template <typename ParentType, typename KeyType>
+ const KeyType& GetKeyData(const ParentType& parent,
+ const std::string& key_name) const {
+ EXPECT_TRUE((IsKeyExist<ParentType>(parent, key_name)));
+ return GetKeyDataInternal<ParentType, KeyType>(parent, key_name);
+ }
+
+ private:
+ template <typename ParentType, typename KeyType>
+ const KeyType& GetDataInternal(const ParentType& parent) const;
+
+ template <typename ParentType, typename KeyType>
+ const KeyType& GetKeyDataInternal(const ParentType& parent,
+ const std::string& key_name) const {
+ return parent.find(key_name)->second;
+ }
};
+// Specializations for 'policy_table' section
+
+template <>
+bool SQLPTExtRepresentationTest::IsExist<policy_table::Table,
+ policy_table::DeviceData>(
+ const policy_table::Table& table) const {
+ return table.policy_table.device_data.is_initialized();
+}
+
+template <>
+bool SQLPTExtRepresentationTest::IsExist<policy_table::Table,
+ policy_table::FunctionalGroupings>(
+ const policy_table::Table& table) const {
+ return table.policy_table.functional_groupings.is_initialized();
+}
+
+template <>
+const policy_table::DeviceData& SQLPTExtRepresentationTest::GetDataInternal(
+ const policy_table::Table& table) const {
+ return *table.policy_table.device_data;
+}
+
+template <>
+const policy_table::FunctionalGroupings&
+SQLPTExtRepresentationTest::GetDataInternal(
+ const policy_table::Table& table) const {
+ return table.policy_table.functional_groupings;
+}
+
const string SQLPTExtRepresentationTest::kDatabaseName = ":memory:";
const bool SQLPTExtRepresentationTest::in_memory_ = true;
@@ -322,10 +390,10 @@ TEST_F(SQLPTExtRepresentationTest,
// Assert
ASSERT_TRUE(IsValid(update));
- ASSERT_TRUE(reps->Save(update));
+ ASSERT_TRUE(reps_->Save(update));
// Act
- utils::SharedPtr<policy_table::Table> snapshot = reps->GenerateSnapshot();
+ utils::SharedPtr<policy_table::Table> snapshot = reps_->GenerateSnapshot();
snapshot->SetPolicyTableType(rpc::policy_table_interface_base::PT_SNAPSHOT);
policy_table["module_meta"] = Json::Value(Json::objectValue);
@@ -368,8 +436,8 @@ TEST_F(
// Assert
ASSERT_TRUE(query_wrapper_->Exec(query_insert_12345));
- EXPECT_FALSE(reps->CanAppKeepContext("0"));
- EXPECT_TRUE(reps->CanAppKeepContext("12345"));
+ EXPECT_FALSE(reps_->CanAppKeepContext("0"));
+ EXPECT_TRUE(reps_->CanAppKeepContext("12345"));
// Act
const std::string query_insert_123 =
"INSERT INTO `application` (`id`, `memory_kb`,"
@@ -377,7 +445,7 @@ TEST_F(
// Assert
ASSERT_TRUE(query_wrapper_->Exec(query_insert_123));
- EXPECT_FALSE(reps->CanAppKeepContext("123"));
+ EXPECT_FALSE(reps_->CanAppKeepContext("123"));
}
TEST_F(SQLPTExtRepresentationTest,
@@ -393,8 +461,8 @@ TEST_F(SQLPTExtRepresentationTest,
// Assert
ASSERT_TRUE(query_wrapper_->Exec(query_insert_12345));
- EXPECT_TRUE(reps->CanAppStealFocus("12345"));
- EXPECT_FALSE(reps->CanAppStealFocus("0"));
+ EXPECT_TRUE(reps_->CanAppStealFocus("12345"));
+ EXPECT_FALSE(reps_->CanAppStealFocus("0"));
// Act
const std::string query_insert_123 =
"INSERT INTO `application` (`id`, `memory_kb`,"
@@ -402,7 +470,7 @@ TEST_F(SQLPTExtRepresentationTest,
// Assert
ASSERT_TRUE(query_wrapper_->Exec(query_insert_123));
- EXPECT_FALSE(reps->CanAppStealFocus("123"));
+ EXPECT_FALSE(reps_->CanAppStealFocus("123"));
}
TEST_F(SQLPTExtRepresentationTest,
@@ -419,7 +487,7 @@ TEST_F(SQLPTExtRepresentationTest,
std::string result;
// Assert
ASSERT_TRUE(query_wrapper_->Exec(query_insert_12345));
- EXPECT_TRUE(reps->GetDefaultHMI("12345", &result));
+ EXPECT_TRUE(reps_->GetDefaultHMI("12345", &result));
EXPECT_EQ("NONE", result);
const std::string query_insert_123 =
"INSERT INTO `application` (`id`, `memory_kb`,"
@@ -428,7 +496,7 @@ TEST_F(SQLPTExtRepresentationTest,
// Assert
ASSERT_TRUE(query_wrapper_->Exec(query_insert_123));
- EXPECT_TRUE(reps->GetDefaultHMI("123", &result));
+ EXPECT_TRUE(reps_->GetDefaultHMI("123", &result));
EXPECT_EQ("LIMITED", result);
}
@@ -437,7 +505,7 @@ TEST_F(SQLPTExtRepresentationTest,
// Arrange
StringArray allowed_groups;
StringArray disallowed_groups;
- EXPECT_TRUE(reps->GetUserPermissionsForDevice(
+ EXPECT_TRUE(reps_->GetUserPermissionsForDevice(
"XXX12345ZZZ", &allowed_groups, &disallowed_groups));
EXPECT_EQ(0u, allowed_groups.size());
EXPECT_EQ(0u, disallowed_groups.size());
@@ -457,7 +525,7 @@ TEST_F(SQLPTExtRepresentationTest,
"('XXX12345ZZZ', 'Navigation-1', 0,'GUI', '2015-01-01T00:00:52Z')";
// Assert
ASSERT_TRUE(query_wrapper_->Exec(query_insert_Navigation));
- EXPECT_TRUE(reps->GetUserPermissionsForDevice(
+ EXPECT_TRUE(reps_->GetUserPermissionsForDevice(
"XXX12345ZZZ", &allowed_groups, &disallowed_groups));
EXPECT_EQ(1u, allowed_groups.size());
EXPECT_EQ(1u, disallowed_groups.size());
@@ -468,19 +536,19 @@ TEST_F(SQLPTExtRepresentationTest,
// Arrange
StringArray allowed_groups;
StringArray disallowed_groups;
- EXPECT_TRUE(reps->GetUserPermissionsForDevice(
+ EXPECT_TRUE(reps_->GetUserPermissionsForDevice(
"XXX12345ZZZ", &allowed_groups, &disallowed_groups));
EXPECT_EQ(0u, allowed_groups.size());
EXPECT_EQ(0u, disallowed_groups.size());
allowed_groups.push_back("DataConsent-2");
disallowed_groups.push_back("Navigation-1");
- EXPECT_TRUE(reps->SetUserPermissionsForDevice(
+ EXPECT_TRUE(reps_->SetUserPermissionsForDevice(
"XXX12345ZZZ", allowed_groups, disallowed_groups));
allowed_groups.clear();
disallowed_groups.clear();
// Act
- EXPECT_TRUE(reps->GetUserPermissionsForDevice(
+ EXPECT_TRUE(reps_->GetUserPermissionsForDevice(
"XXX12345ZZZ", &allowed_groups, &disallowed_groups));
// Checks
EXPECT_EQ(1u, allowed_groups.size());
@@ -498,19 +566,19 @@ TEST_F(SQLPTExtRepresentationTest,
// Arrange
StringArray allowed_groups;
StringArray disallowed_groups;
- EXPECT_TRUE(reps->GetUserPermissionsForDevice(
+ EXPECT_TRUE(reps_->GetUserPermissionsForDevice(
"XXX12345ZZZ", &allowed_groups, &disallowed_groups));
EXPECT_EQ(0u, allowed_groups.size());
EXPECT_EQ(0u, disallowed_groups.size());
allowed_groups.push_back("DataConsent-2");
disallowed_groups.push_back("Navigation-1");
- EXPECT_TRUE(reps->SetUserPermissionsForDevice(
+ EXPECT_TRUE(reps_->SetUserPermissionsForDevice(
"XXX12345ZZZ", allowed_groups, disallowed_groups));
allowed_groups.clear();
disallowed_groups.clear();
// Act
- EXPECT_TRUE(reps->GetUserPermissionsForDevice(
+ EXPECT_TRUE(reps_->GetUserPermissionsForDevice(
"XXX12345ZZZ", &allowed_groups, &disallowed_groups));
// Checks
EXPECT_EQ(1u, allowed_groups.size());
@@ -524,8 +592,8 @@ TEST_F(SQLPTExtRepresentationTest,
allowed_groups.clear();
disallowed_groups.clear();
// Act
- reps->ResetDeviceConsents();
- EXPECT_TRUE(reps->GetUserPermissionsForDevice(
+ reps_->ResetDeviceConsents();
+ EXPECT_TRUE(reps_->GetUserPermissionsForDevice(
"XXX12345ZZZ", &allowed_groups, &disallowed_groups));
// Checks
EXPECT_EQ(0u, allowed_groups.size());
@@ -557,7 +625,8 @@ TEST_F(SQLPTExtRepresentationTest,
disallowed_groups.push_back(std::make_pair("", "Base-4"));
FillPermissionStruct("", "", "", allowed_groups, disallowed_groups);
FunctionalIdType group_types;
- ASSERT_TRUE(reps->GetPermissionsForApp("XXX12345ZZZ", "12345", &group_types));
+ ASSERT_TRUE(
+ reps_->GetPermissionsForApp("XXX12345ZZZ", "12345", &group_types));
EXPECT_TRUE(
CheckGroupTypesExist(group_types, allowed_groups, disallowed_groups));
}
@@ -572,10 +641,11 @@ TEST_F(SQLPTExtRepresentationTest,
disallowed_groups.push_back(std::make_pair("DataConsent", "DataConsent-2"));
FillPermissionStruct(
"XXX12345ZZZ", "12345", "VR", allowed_groups, disallowed_groups);
- EXPECT_TRUE(reps->SetUserPermissionsForApp(perm_consent));
+ EXPECT_TRUE(reps_->SetUserPermissionsForApp(perm_consent));
FunctionalIdType group_types;
- ASSERT_TRUE(reps->GetPermissionsForApp("XXX12345ZZZ", "12345", &group_types));
+ ASSERT_TRUE(
+ reps_->GetPermissionsForApp("XXX12345ZZZ", "12345", &group_types));
EXPECT_TRUE(
CheckGroupTypesExist(group_types, allowed_groups, disallowed_groups));
}
@@ -590,15 +660,17 @@ TEST_F(SQLPTExtRepresentationTest,
disallowed_groups.push_back(std::make_pair("DataConsent", "DataConsent-2"));
FillPermissionStruct(
"XXX12345ZZZ", "12345", "VR", allowed_groups, disallowed_groups);
- EXPECT_TRUE(reps->SetUserPermissionsForApp(perm_consent));
+ EXPECT_TRUE(reps_->SetUserPermissionsForApp(perm_consent));
FunctionalIdType group_types;
- ASSERT_TRUE(reps->GetPermissionsForApp("XXX12345ZZZ", "12345", &group_types));
+ ASSERT_TRUE(
+ reps_->GetPermissionsForApp("XXX12345ZZZ", "12345", &group_types));
EXPECT_TRUE(
CheckGroupTypesExist(group_types, allowed_groups, disallowed_groups));
- reps->ResetAppConsents();
- ASSERT_TRUE(reps->GetPermissionsForApp("XXX12345ZZZ", "12345", &group_types));
+ reps_->ResetAppConsents();
+ ASSERT_TRUE(
+ reps_->GetPermissionsForApp("XXX12345ZZZ", "12345", &group_types));
EXPECT_FALSE(
CheckGroupTypesExist(group_types, allowed_groups, disallowed_groups));
}
@@ -619,10 +691,11 @@ TEST_F(SQLPTExtRepresentationTest,
perm_allowed_groups,
perm_disallowed_groups);
// Set permissions for app
- EXPECT_TRUE(reps->SetUserPermissionsForApp(perm_consent));
+ EXPECT_TRUE(reps_->SetUserPermissionsForApp(perm_consent));
FunctionalIdType group_types;
- ASSERT_TRUE(reps->GetPermissionsForApp("XXX12345ZZZ", "12345", &group_types));
+ ASSERT_TRUE(
+ reps_->GetPermissionsForApp("XXX12345ZZZ", "12345", &group_types));
EXPECT_TRUE(CheckGroupTypesExist(
group_types, perm_allowed_groups, perm_disallowed_groups));
@@ -631,19 +704,20 @@ TEST_F(SQLPTExtRepresentationTest,
allowed_groups.push_back("DataConsent-2");
disallowed_groups.push_back("Navigation-1");
// Set permissions for device
- EXPECT_TRUE(reps->SetUserPermissionsForDevice(
+ EXPECT_TRUE(reps_->SetUserPermissionsForDevice(
"XXX12345ZZZ", allowed_groups, disallowed_groups));
allowed_groups.clear();
disallowed_groups.clear();
// Act
- reps->ResetUserConsent();
- EXPECT_TRUE(reps->GetUserPermissionsForDevice(
+ reps_->ResetUserConsent();
+ EXPECT_TRUE(reps_->GetUserPermissionsForDevice(
"XXX12345ZZZ", &allowed_groups, &disallowed_groups));
// Checks
EXPECT_EQ(0u, allowed_groups.size());
EXPECT_EQ(0u, disallowed_groups.size());
- EXPECT_TRUE(reps->GetPermissionsForApp("XXX12345ZZZ", "12345", &group_types));
+ EXPECT_TRUE(
+ reps_->GetPermissionsForApp("XXX12345ZZZ", "12345", &group_types));
EXPECT_FALSE(CheckGroupTypesExist(
group_types, perm_allowed_groups, perm_disallowed_groups));
}
@@ -686,7 +760,8 @@ TEST_F(SQLPTExtRepresentationTest,
policy_table::Strings groups;
policy_table::Strings preconsented_groups;
- EXPECT_TRUE(reps->GetDeviceGroupsFromPolicies(&groups, &preconsented_groups));
+ EXPECT_TRUE(
+ reps_->GetDeviceGroupsFromPolicies(&groups, &preconsented_groups));
EXPECT_EQ(2u, groups.size());
EXPECT_EQ(1u, preconsented_groups.size());
@@ -707,15 +782,15 @@ TEST_F(SQLPTExtRepresentationTest,
TEST_F(SQLPTExtRepresentationTest,
SetDeviceData_SetDeviceData_ExpectValuesThatSetInParams) {
// Arrange
- utils::dbms::SQLQuery query(reps->db());
- reps->SetDeviceData("08-00-27-CE-76-FE",
- "hardware IPX",
- "v.8.0.1",
- "Android",
- "4.4.2",
- "Life",
- 2,
- "Bluetooth");
+ utils::dbms::SQLQuery query(reps_->db());
+ reps_->SetDeviceData("08-00-27-CE-76-FE",
+ "hardware IPX",
+ "v.8.0.1",
+ "Android",
+ "4.4.2",
+ "Life",
+ 2,
+ "Bluetooth");
const std::string query_select_hardware =
"SELECT `hardware` FROM `device` WHERE `id` = '08-00-27-CE-76-FE'";
const std::string query_select_firmware_rev =
@@ -805,9 +880,9 @@ TEST_F(
// Assert
ASSERT_TRUE(query_wrapper_->Exec(query_insert_application));
- EXPECT_TRUE(reps->IsPredataPolicy("1234"));
- reps->ReactOnUserDevConsentForApp("1234", true);
- EXPECT_TRUE(reps->IsDefaultPolicy("1234"));
+ EXPECT_TRUE(reps_->IsPredataPolicy("1234"));
+ reps_->ReactOnUserDevConsentForApp("1234", true);
+ EXPECT_TRUE(reps_->IsDefaultPolicy("1234"));
}
TEST_F(
@@ -873,9 +948,9 @@ TEST_F(
// Assert
ASSERT_TRUE(query_wrapper_->Exec(query_insert_application));
FunctionalIdType group_types;
- ASSERT_TRUE(reps->GetPermissionsForApp("XXX12345ZZZ", "1234", &group_types));
- EXPECT_FALSE(reps->IsPredataPolicy("1234"));
- EXPECT_FALSE(reps->IsDefaultPolicy("1234"));
+ ASSERT_TRUE(reps_->GetPermissionsForApp("XXX12345ZZZ", "1234", &group_types));
+ EXPECT_FALSE(reps_->IsPredataPolicy("1234"));
+ EXPECT_FALSE(reps_->IsDefaultPolicy("1234"));
std::map<GroupType, FunctionalGroupIDs>::iterator it1 =
group_types.find(GroupType::kTypeAllowed);
EXPECT_TRUE(group_types.end() != it1);
@@ -885,13 +960,13 @@ TEST_F(
ASSERT_TRUE(it2 != it1->second.end());
it2 = std::find(it1->second.begin(), it1->second.end(), 1809526495);
ASSERT_TRUE(it2 != it1->second.end());
- reps->SetIsPredata("1234", true);
- EXPECT_TRUE(reps->IsPredataPolicy("1234"));
- reps->ReactOnUserDevConsentForApp("1234", true);
+ reps_->SetIsPredata("1234", true);
+ EXPECT_TRUE(reps_->IsPredataPolicy("1234"));
+ reps_->ReactOnUserDevConsentForApp("1234", true);
group_types.clear();
- ASSERT_TRUE(reps->GetPermissionsForApp("XXX12345ZZZ", "1234", &group_types));
- EXPECT_FALSE(reps->IsPredataPolicy("1234"));
- EXPECT_FALSE(reps->IsDefaultPolicy("1234"));
+ ASSERT_TRUE(reps_->GetPermissionsForApp("XXX12345ZZZ", "1234", &group_types));
+ EXPECT_FALSE(reps_->IsPredataPolicy("1234"));
+ EXPECT_FALSE(reps_->IsDefaultPolicy("1234"));
it1 = group_types.find(GroupType::kTypeAllowed);
EXPECT_TRUE(group_types.end() != it1);
EXPECT_EQ(2u, it1->second.size());
@@ -916,7 +991,7 @@ TEST_F(SQLPTExtRepresentationTest,
msg_code.push_back("AppPermissions");
// Act
std::vector<UserFriendlyMessage> result =
- reps->GetUserFriendlyMsg(msg_code, string("en-en"));
+ reps_->GetUserFriendlyMsg(msg_code, string("en-en"));
// Checks
ASSERT_EQ(1u, result.size());
EXPECT_EQ(result[0].message_code, "AppPermissions");
@@ -930,7 +1005,7 @@ TEST_F(SQLPTExtRepresentationTest,
TEST_F(SQLPTExtRepresentationTest,
IncrementGlobalCounter_IncrementThreeTimes_ExpectCountEqual3) {
// Arrange
- utils::dbms::SQLQuery query(reps->db());
+ utils::dbms::SQLQuery query(reps_->db());
const std::string query_update =
"UPDATE `usage_and_error_count` SET"
" `count_of_sync_reboots` = 0";
@@ -939,9 +1014,9 @@ TEST_F(SQLPTExtRepresentationTest,
ASSERT_TRUE(query_wrapper_->Exec(query_update));
// Act
- reps->Increment("count_of_sync_reboots");
- reps->Increment("count_of_sync_reboots");
- reps->Increment("count_of_sync_reboots");
+ reps_->Increment("count_of_sync_reboots");
+ reps_->Increment("count_of_sync_reboots");
+ reps_->Increment("count_of_sync_reboots");
const std::string query_select =
"SELECT `count_of_sync_reboots` FROM `usage_and_error_count`";
@@ -955,7 +1030,7 @@ TEST_F(
SQLPTExtRepresentationTest,
IncrementAppCounter_IncrementCountOfUserSelections3Times_ExpectCountEqual3) {
// Arrange
- utils::dbms::SQLQuery query(reps->db());
+ utils::dbms::SQLQuery query(reps_->db());
const std::string query_delete =
"DELETE FROM `app_level` WHERE `application_id` = '12345'";
@@ -963,9 +1038,9 @@ TEST_F(
ASSERT_TRUE(query_wrapper_->Exec(query_delete));
// Act
- reps->Increment("12345", "count_of_user_selections");
- reps->Increment("12345", "count_of_user_selections");
- reps->Increment("12345", "count_of_user_selections");
+ reps_->Increment("12345", "count_of_user_selections");
+ reps_->Increment("12345", "count_of_user_selections");
+ reps_->Increment("12345", "count_of_user_selections");
const std::string query_select =
"SELECT `count_of_user_selections` FROM `app_level`"
@@ -980,15 +1055,15 @@ TEST_F(
TEST_F(SQLPTExtRepresentationTest,
AppInfo_SetLanguageRuInGUIAndEnInVUI_ExpectRuInGUIAndEnInVUI) {
// Arrange
- utils::dbms::SQLQuery query(reps->db());
+ utils::dbms::SQLQuery query(reps_->db());
const std::string query_delete =
"DELETE FROM `app_level` WHERE `application_id` = '12345'";
// Assert
ASSERT_TRUE(query_wrapper_->Exec(query_delete));
// Act
- reps->Set("12345", "app_registration_language_gui", "ru-ru");
- reps->Set("12345", "app_registration_language_vui", "en-en");
+ reps_->Set("12345", "app_registration_language_gui", "ru-ru");
+ reps_->Set("12345", "app_registration_language_vui", "en-en");
const std::string query_select_gui =
"SELECT `app_registration_language_gui`"
@@ -1011,14 +1086,14 @@ TEST_F(SQLPTExtRepresentationTest,
TEST_F(SQLPTExtRepresentationTest,
AddAppStopwatch_Set10And60MinutesForStopwatch_Expect70Minutes) {
// Arrange
- utils::dbms::SQLQuery query(reps->db());
+ utils::dbms::SQLQuery query(reps_->db());
const std::string query_delete =
"DELETE FROM `app_level` WHERE `application_id` = '12345'";
// Assert
ASSERT_TRUE(query_wrapper_->Exec(query_delete));
// Act
- reps->Add("12345", "minutes_in_hmi_full", 10);
- reps->Add("12345", "minutes_in_hmi_full", 60);
+ reps_->Add("12345", "minutes_in_hmi_full", 10);
+ reps_->Add("12345", "minutes_in_hmi_full", 60);
const std::string query_select =
"SELECT `minutes_in_hmi_full` FROM `app_level`"
@@ -1034,7 +1109,7 @@ TEST_F(
SQLPTExtRepresentationTest,
SetUnpairedDevice_SetUnpairedDeviceId12345_ExpectUnpairedDeviceIdEquals12345) {
// Arrange
- utils::dbms::SQLQuery query(reps->db());
+ utils::dbms::SQLQuery query(reps_->db());
const std::string query_delete = "DELETE FROM `device`";
// Assert
ASSERT_TRUE(query_wrapper_->Exec(query_delete));
@@ -1043,7 +1118,7 @@ TEST_F(
"INSERT INTO `device` (`id`) VALUES('12345')";
// Assert
ASSERT_TRUE(query_wrapper_->Exec(query_insert));
- ASSERT_TRUE(reps->SetUnpairedDevice("12345", true));
+ ASSERT_TRUE(reps_->SetUnpairedDevice("12345", true));
// Act
const std::string query_select =
"SELECT `id` FROM `device` WHERE `unpaired` = 1";
@@ -1074,7 +1149,7 @@ TEST_F(
// Act
std::vector<std::string> output;
// Assert
- ASSERT_TRUE(reps->UnpairedDevicesList(&output));
+ ASSERT_TRUE(reps_->UnpairedDevicesList(&output));
ASSERT_EQ(2u, output.size());
EXPECT_NE(output.end(), std::find(output.begin(), output.end(), "12345"));
EXPECT_NE(output.end(), std::find(output.begin(), output.end(), "54321"));
@@ -1083,8 +1158,8 @@ TEST_F(
TEST_F(SQLPTExtRepresentationTest,
SetMetaInfo_SetMetaInfo_ExpectValuesSetInParams) {
// Arrange
- ASSERT_TRUE(reps->SetMetaInfo("4.1.3.B_EB355B", "WAEGB", "ru-ru"));
- utils::dbms::SQLQuery query(reps->db());
+ ASSERT_TRUE(reps_->SetMetaInfo("4.1.3.B_EB355B", "WAEGB", "ru-ru"));
+ utils::dbms::SQLQuery query(reps_->db());
const std::string query_select_ccpu =
"SELECT `ccpu_version` FROM `module_meta`";
const std::string query_select_wers_country_code =
@@ -1111,14 +1186,14 @@ TEST_F(SQLPTExtRepresentationTest,
"UPDATE `module_meta` SET `ccpu_version` = '4.1.3.B_EB355B', "
"`wers_country_code` = 'WAEGB', `language` = 'ru-ru' ";
ASSERT_TRUE(query_wrapper_->Exec(query_insert_meta_info));
- EXPECT_TRUE(reps->IsMetaInfoPresent());
+ EXPECT_TRUE(reps_->IsMetaInfoPresent());
}
TEST_F(SQLPTExtRepresentationTest,
SetSystemLanguage_SetSystemLanguage_ExpectValueSetInParams) {
// Arrange
- utils::dbms::SQLQuery query(reps->db());
- ASSERT_TRUE(reps->SetSystemLanguage("ru-ru"));
+ utils::dbms::SQLQuery query(reps_->db());
+ ASSERT_TRUE(reps_->SetSystemLanguage("ru-ru"));
const std::string query_select_language =
"SELECT `language` FROM `module_meta`";
// Assert
@@ -1148,7 +1223,7 @@ TEST_F(
std::map<uint32_t, std::pair<std::string, std::string> > FunctionalGroupNames;
std::map<uint32_t, std::pair<std::string, std::string> >::iterator it;
- reps->GetFunctionalGroupNames(FunctionalGroupNames);
+ reps_->GetFunctionalGroupNames(FunctionalGroupNames);
EXPECT_EQ(3u, FunctionalGroupNames.size());
ASSERT_TRUE(FunctionalGroupNames.end() !=
(it = FunctionalGroupNames.find(129372391)));
@@ -1208,12 +1283,12 @@ TEST_F(
FillPermissionStruct(
"XXX12345ZZZ", "1234", "VR", allowed_groups, disallowed_groups);
FunctionalIdType group_types;
- ASSERT_TRUE(reps->GetPermissionsForApp("XXX12345ZZZ", "1234", &group_types));
+ ASSERT_TRUE(reps_->GetPermissionsForApp("XXX12345ZZZ", "1234", &group_types));
EXPECT_TRUE(
CheckGroupTypesExist(group_types, allowed_groups, disallowed_groups));
group_types.clear();
- reps->RemoveAppConsentForGroup("1234", "Notifications");
- ASSERT_TRUE(reps->GetPermissionsForApp("XXX12345ZZZ", "1234", &group_types));
+ reps_->RemoveAppConsentForGroup("1234", "Notifications");
+ ASSERT_TRUE(reps_->GetPermissionsForApp("XXX12345ZZZ", "1234", &group_types));
allowed_groups.pop_back();
EXPECT_TRUE(
CheckGroupTypesExist(group_types, allowed_groups, disallowed_groups));
@@ -1222,25 +1297,25 @@ TEST_F(
TEST_F(SQLPTExtRepresentationTest,
CleanUnpaireDevices_SetDevicesThenCleanup_ExpectDevicesDeleted) {
// Arrange
- utils::dbms::SQLQuery query(reps->db());
- reps->SetDeviceData("XXX12345ZZZ",
- "hardware IPX",
- "v.8.0.1",
- "Android",
- "4.4.2",
- "Life",
- 2,
- "Bluetooth");
+ utils::dbms::SQLQuery query(reps_->db());
+ reps_->SetDeviceData("XXX12345ZZZ",
+ "hardware IPX",
+ "v.8.0.1",
+ "Android",
+ "4.4.2",
+ "Life",
+ 2,
+ "Bluetooth");
StringArray allowed_groups;
StringArray disallowed_groups;
- EXPECT_TRUE(reps->GetUserPermissionsForDevice(
+ EXPECT_TRUE(reps_->GetUserPermissionsForDevice(
"XXX12345ZZZ", &allowed_groups, &disallowed_groups));
EXPECT_EQ(0u, allowed_groups.size());
EXPECT_EQ(0u, disallowed_groups.size());
allowed_groups.push_back("DataConsent-2");
disallowed_groups.push_back("Navigation-1");
- EXPECT_TRUE(reps->SetUserPermissionsForDevice(
+ EXPECT_TRUE(reps_->SetUserPermissionsForDevice(
"XXX12345ZZZ", allowed_groups, disallowed_groups));
GroupsAliasNameCollection perm_allowed_groups;
@@ -1255,7 +1330,7 @@ TEST_F(SQLPTExtRepresentationTest,
perm_allowed_groups,
perm_disallowed_groups);
- EXPECT_TRUE(reps->SetUserPermissionsForApp(perm_consent));
+ EXPECT_TRUE(reps_->SetUserPermissionsForApp(perm_consent));
const std::string query_select_device =
"SELECT COUNT(*) FROM `device` WHERE `id` = 'XXX12345ZZZ'";
@@ -1277,11 +1352,11 @@ TEST_F(SQLPTExtRepresentationTest,
query.Next();
EXPECT_EQ(2, query.GetInteger(0));
- EXPECT_TRUE(reps->SetUnpairedDevice("XXX12345ZZZ", true));
+ EXPECT_TRUE(reps_->SetUnpairedDevice("XXX12345ZZZ", true));
std::vector<std::string> DeviceIds;
DeviceIds.push_back("XXX12345ZZZ");
- EXPECT_TRUE(reps->CleanupUnpairedDevices(DeviceIds));
+ EXPECT_TRUE(reps_->CleanupUnpairedDevices(DeviceIds));
// Assert
query.Prepare(query_select_device);
@@ -1317,15 +1392,15 @@ TEST_F(
disallowed_groups.push_back(std::make_pair("DataConsent", "DataConsent-2"));
FillPermissionStruct(
"XXX12345ZZZ", "12345", "VR", allowed_groups, disallowed_groups);
- EXPECT_TRUE(reps->SetUserPermissionsForApp(perm_consent));
+ EXPECT_TRUE(reps_->SetUserPermissionsForApp(perm_consent));
// Act
- ASSERT_TRUE(reps->SetIsPredata("12345", true));
+ ASSERT_TRUE(reps_->SetIsPredata("12345", true));
// Check
- EXPECT_TRUE(reps->IsPredataPolicy("12345"));
+ EXPECT_TRUE(reps_->IsPredataPolicy("12345"));
// Act
- EXPECT_TRUE(reps->SetDefaultPolicy("12345"));
+ EXPECT_TRUE(reps_->SetDefaultPolicy("12345"));
// Check
- EXPECT_TRUE(reps->IsDefaultPolicy("12345"));
+ EXPECT_TRUE(reps_->IsDefaultPolicy("12345"));
}
TEST_F(SQLPTExtRepresentationTest,
@@ -1347,16 +1422,16 @@ TEST_F(SQLPTExtRepresentationTest,
disallowed_groups.push_back(std::make_pair("DataConsent", "DataConsent-2"));
FillPermissionStruct(
"XXX12345ZZZ", "12345", "VR", allowed_groups, disallowed_groups);
- EXPECT_TRUE(reps->SetUserPermissionsForApp(perm_consent));
- EXPECT_FALSE(reps->IsPredataPolicy("12345"));
+ EXPECT_TRUE(reps_->SetUserPermissionsForApp(perm_consent));
+ EXPECT_FALSE(reps_->IsPredataPolicy("12345"));
// Act
- ASSERT_TRUE(reps->SetIsPredata("12345", false));
+ ASSERT_TRUE(reps_->SetIsPredata("12345", false));
// Check
- EXPECT_FALSE(reps->IsPredataPolicy("12345"));
+ EXPECT_FALSE(reps_->IsPredataPolicy("12345"));
// Act
- ASSERT_TRUE(reps->SetIsPredata("12345", true));
+ ASSERT_TRUE(reps_->SetIsPredata("12345", true));
// Check
- EXPECT_TRUE(reps->IsPredataPolicy("12345"));
+ EXPECT_TRUE(reps_->IsPredataPolicy("12345"));
}
TEST_F(
@@ -1379,12 +1454,12 @@ TEST_F(
disallowed_groups.push_back(std::make_pair("DataConsent", "DataConsent-2"));
FillPermissionStruct(
"XXX12345ZZZ", "12345", "VR", allowed_groups, disallowed_groups);
- EXPECT_TRUE(reps->SetUserPermissionsForApp(perm_consent));
- EXPECT_FALSE(reps->IsPredataPolicy("12345"));
+ EXPECT_TRUE(reps_->SetUserPermissionsForApp(perm_consent));
+ EXPECT_FALSE(reps_->IsPredataPolicy("12345"));
// Act
- ASSERT_TRUE(reps->SetPredataPolicy("12345"));
+ ASSERT_TRUE(reps_->SetPredataPolicy("12345"));
// Check
- EXPECT_TRUE(reps->IsPredataPolicy("12345"));
+ EXPECT_TRUE(reps_->IsPredataPolicy("12345"));
}
TEST_F(SQLPTExtRepresentationTest,
@@ -1408,7 +1483,7 @@ TEST_F(SQLPTExtRepresentationTest, SaveUserConsentRecords_ExpectedSaved) {
const std::string device_id = "test_device_id";
const std::string app_id = "test_app_id";
- const std::string ccs_group = "CCSGroup";
+ const std::string external_consent_group = "ExternalConsentGroup";
const std::string consent_group = "ConsentGroup";
const std::string time_stamp = "2016-08-29T17:12:07Z";
const Input input = Input::I_GUI;
@@ -1420,8 +1495,8 @@ TEST_F(SQLPTExtRepresentationTest, SaveUserConsentRecords_ExpectedSaved) {
UserConsentRecords::mapped_type& app_records = user_consent_records[app_id];
- app_records.ccs_consent_groups->insert(
- std::make_pair(ccs_group, Boolean(true)));
+ app_records.external_consent_status_groups->insert(
+ std::make_pair(external_consent_group, Boolean(true)));
app_records.consent_groups->insert(
std::make_pair(consent_group, Boolean(true)));
@@ -1446,8 +1521,8 @@ TEST_F(SQLPTExtRepresentationTest, SaveUserConsentRecords_ExpectedSaved) {
EXPECT_TRUE(
(IsKeyExist<ConsentGroups>(*consents.consent_groups, consent_group)));
- EXPECT_TRUE(
- (IsKeyExist<ConsentGroups>(*consents.ccs_consent_groups, ccs_group)));
+ EXPECT_TRUE((IsKeyExist<ConsentGroups>(
+ *consents.external_consent_status_groups, external_consent_group)));
EXPECT_EQ((String<1, 255>(time_stamp)), *consents.time_stamp);
EXPECT_EQ(input, *consents.input);
}
@@ -1461,10 +1536,10 @@ TEST_F(SQLPTExtRepresentationTest, SaveFunctionalGroupings_ExpectedSaved) {
const std::string rpc_name = "RpcName";
const std::string user_consent_prompt = "TestConsentPrompt";
const std::string another_user_consent_prompt = "AnotherTestConsentPrompt";
- CCS_Entity off_entity_1(0, 0);
- CCS_Entity off_entity_2(0, 1);
- CCS_Entity on_entity_1(1, 0);
- CCS_Entity on_entity_2(1, 1);
+ ExternalConsentEntity off_entity_1(0, 0);
+ ExternalConsentEntity off_entity_2(0, 1);
+ ExternalConsentEntity on_entity_1(1, 0);
+ ExternalConsentEntity on_entity_2(1, 1);
const HmiLevel test_level_1 = HL_FULL;
const HmiLevel test_level_2 = HL_LIMITED;
@@ -1473,11 +1548,11 @@ TEST_F(SQLPTExtRepresentationTest, SaveFunctionalGroupings_ExpectedSaved) {
Rpcs rpcs;
- rpcs.disallowed_by_ccs_entities_off->push_back(off_entity_1);
- rpcs.disallowed_by_ccs_entities_off->push_back(off_entity_2);
+ rpcs.disallowed_by_external_consent_entities_off->push_back(off_entity_1);
+ rpcs.disallowed_by_external_consent_entities_off->push_back(off_entity_2);
- rpcs.disallowed_by_ccs_entities_on->push_back(on_entity_1);
- rpcs.disallowed_by_ccs_entities_on->push_back(on_entity_2);
+ rpcs.disallowed_by_external_consent_entities_on->push_back(on_entity_1);
+ rpcs.disallowed_by_external_consent_entities_on->push_back(on_entity_2);
*rpcs.user_consent_prompt = user_consent_prompt;
@@ -1493,13 +1568,15 @@ TEST_F(SQLPTExtRepresentationTest, SaveFunctionalGroupings_ExpectedSaved) {
original_table.policy_table.functional_groupings;
groupings.insert(std::make_pair(group_name, rpcs));
- CCS_Entity off_entity_3(3, 4);
- CCS_Entity on_entity_3(5, 6);
+ ExternalConsentEntity off_entity_3(3, 4);
+ ExternalConsentEntity on_entity_3(5, 6);
Rpcs another_rpcs;
- another_rpcs.disallowed_by_ccs_entities_off->push_back(off_entity_3);
- another_rpcs.disallowed_by_ccs_entities_on->push_back(on_entity_3);
+ another_rpcs.disallowed_by_external_consent_entities_off->push_back(
+ off_entity_3);
+ another_rpcs.disallowed_by_external_consent_entities_on->push_back(
+ on_entity_3);
*another_rpcs.user_consent_prompt = another_user_consent_prompt;
const HmiLevel test_level_3 = HL_BACKGROUND;
@@ -1522,15 +1599,15 @@ TEST_F(SQLPTExtRepresentationTest, SaveFunctionalGroupings_ExpectedSaved) {
Rpcs loaded_rpcs =
GetKeyData<FunctionalGroupings, Rpcs>(loaded_groupings, group_name);
- EXPECT_TRUE((IsKeyExist<DisallowedByCCSEntities>(
- *loaded_rpcs.disallowed_by_ccs_entities_off, off_entity_1)));
- EXPECT_TRUE((IsKeyExist<DisallowedByCCSEntities>(
- *loaded_rpcs.disallowed_by_ccs_entities_off, off_entity_2)));
+ EXPECT_TRUE((IsKeyExist<DisallowedByExternalConsentEntities>(
+ *loaded_rpcs.disallowed_by_external_consent_entities_off, off_entity_1)));
+ EXPECT_TRUE((IsKeyExist<DisallowedByExternalConsentEntities>(
+ *loaded_rpcs.disallowed_by_external_consent_entities_off, off_entity_2)));
- EXPECT_TRUE((IsKeyExist<DisallowedByCCSEntities>(
- *loaded_rpcs.disallowed_by_ccs_entities_on, on_entity_1)));
- EXPECT_TRUE((IsKeyExist<DisallowedByCCSEntities>(
- *loaded_rpcs.disallowed_by_ccs_entities_on, on_entity_2)));
+ EXPECT_TRUE((IsKeyExist<DisallowedByExternalConsentEntities>(
+ *loaded_rpcs.disallowed_by_external_consent_entities_on, on_entity_1)));
+ EXPECT_TRUE((IsKeyExist<DisallowedByExternalConsentEntities>(
+ *loaded_rpcs.disallowed_by_external_consent_entities_on, on_entity_2)));
RpcParameters loaded_parameters =
GetKeyData<Rpc, RpcParameters>(loaded_rpcs.rpcs, rpc_name);
@@ -1548,11 +1625,13 @@ TEST_F(SQLPTExtRepresentationTest, SaveFunctionalGroupings_ExpectedSaved) {
Rpcs another_loaded_rpcs = GetKeyData<FunctionalGroupings, Rpcs>(
loaded_groupings, another_group_name);
- EXPECT_TRUE((IsKeyExist<DisallowedByCCSEntities>(
- *another_loaded_rpcs.disallowed_by_ccs_entities_off, off_entity_3)));
+ EXPECT_TRUE((IsKeyExist<DisallowedByExternalConsentEntities>(
+ *another_loaded_rpcs.disallowed_by_external_consent_entities_off,
+ off_entity_3)));
- EXPECT_TRUE((IsKeyExist<DisallowedByCCSEntities>(
- *another_loaded_rpcs.disallowed_by_ccs_entities_on, on_entity_3)));
+ EXPECT_TRUE((IsKeyExist<DisallowedByExternalConsentEntities>(
+ *another_loaded_rpcs.disallowed_by_external_consent_entities_on,
+ on_entity_3)));
RpcParameters another_loaded_parameters =
GetKeyData<Rpc, RpcParameters>(another_loaded_rpcs.rpcs, rpc_name);
@@ -1564,7 +1643,7 @@ TEST_F(SQLPTExtRepresentationTest, SaveFunctionalGroupings_ExpectedSaved) {
test_parameter_3)));
}
-TEST_F(SQLPTExtRepresentationTest, JsonContentsCCS_ExpectParsed) {
+TEST_F(SQLPTExtRepresentationTest, JsonContentsExternalConsent_ExpectParsed) {
using namespace policy_table;
using namespace rpc;
@@ -1588,14 +1667,15 @@ TEST_F(SQLPTExtRepresentationTest, JsonContentsCCS_ExpectParsed) {
entity_on["entityType"] = entity_on_type;
entity_on["entityID"] = entity_on_id;
- functional_groupings[group_name]["disallowed_by_ccs_entities_on"][0] =
- entity_on;
+ functional_groupings[group_name]["disallowed_by_external_consent_entities_on"]
+ [0] = entity_on;
Json::Value entity_off = Json::Value(Json::objectValue);
entity_off["entityType"] = entity_off_type;
entity_off["entityID"] = entity_off_id;
- functional_groupings[group_name]["disallowed_by_ccs_entities_off"][0] =
- entity_off;
+ functional_groupings[group_name]
+ ["disallowed_by_external_consent_entities_off"][0] =
+ entity_off;
policy_table::Table parsed_table(&json_table);
@@ -1605,26 +1685,26 @@ TEST_F(SQLPTExtRepresentationTest, JsonContentsCCS_ExpectParsed) {
Rpcs loaded_rpcs =
GetKeyData<FunctionalGroupings, Rpcs>(loaded_groupings, group_name);
- CCS_Entity off_entity_1(entity_off_type, entity_off_id);
- CCS_Entity on_entity_1(entity_on_type, entity_on_id);
+ ExternalConsentEntity off_entity_1(entity_off_type, entity_off_id);
+ ExternalConsentEntity on_entity_1(entity_on_type, entity_on_id);
- EXPECT_TRUE((IsKeyExist<DisallowedByCCSEntities>(
- *loaded_rpcs.disallowed_by_ccs_entities_off, off_entity_1)));
+ EXPECT_TRUE((IsKeyExist<DisallowedByExternalConsentEntities>(
+ *loaded_rpcs.disallowed_by_external_consent_entities_off, off_entity_1)));
- EXPECT_TRUE((IsKeyExist<DisallowedByCCSEntities>(
- *loaded_rpcs.disallowed_by_ccs_entities_on, on_entity_1)));
+ EXPECT_TRUE((IsKeyExist<DisallowedByExternalConsentEntities>(
+ *loaded_rpcs.disallowed_by_external_consent_entities_on, on_entity_1)));
}
-TEST_F(SQLPTExtRepresentationTest, SaveCCSStatus_ExpectSaved) {
- CCSStatusItem item_1(0, 0, kStatusOn);
- CCSStatusItem item_2(1, 1, kStatusOff);
- CCSStatus in_status;
+TEST_F(SQLPTExtRepresentationTest, SaveExternalConsentStatus_ExpectSaved) {
+ ExternalConsentStatusItem item_1(0, 0, kStatusOn);
+ ExternalConsentStatusItem item_2(1, 1, kStatusOff);
+ ExternalConsentStatus in_status;
in_status.insert(item_1);
in_status.insert(item_2);
- EXPECT_TRUE(reps_->SaveCCSStatus(in_status));
+ EXPECT_TRUE(reps_->SaveExternalConsentStatus(in_status));
- CCSStatus out_status = reps_->GetCCSStatus();
+ ExternalConsentStatus out_status = reps_->GetExternalConsentStatus();
EXPECT_TRUE(in_status.size() == out_status.size());
EXPECT_TRUE(out_status.end() !=
diff --git a/src/components/policy/policy_external/test/sql_pt_representation_test.cc b/src/components/policy/policy_external/test/sql_pt_representation_test.cc
index 61c769bd61..a0a544deeb 100644
--- a/src/components/policy/policy_external/test/sql_pt_representation_test.cc
+++ b/src/components/policy/policy_external/test/sql_pt_representation_test.cc
@@ -406,7 +406,9 @@ TEST_F(SQLPTRepresentationTest,
// Check PT structure destroyed and tables number is 0
query.Prepare(query_select);
query.Next();
- ASSERT_EQ(kPolicyTablesNumber, query.GetInteger(0));
+
+ const int policy_tables_number = 35;
+ ASSERT_EQ(policy_tables_number, query.GetInteger(0));
const std::string query_select_count_of_iap_buffer_full =
"SELECT `count_of_iap_buffer_full` FROM `usage_and_error_count`";
diff --git a/src/components/policy/policy_regular/include/policy/cache_manager.h b/src/components/policy/policy_regular/include/policy/cache_manager.h
index 1bd506656c..73c010ce33 100644
--- a/src/components/policy/policy_regular/include/policy/cache_manager.h
+++ b/src/components/policy/policy_regular/include/policy/cache_manager.h
@@ -55,6 +55,8 @@ class CacheManager : public CacheManagerInterface {
CacheManager();
~CacheManager();
+ const policy_table::Strings& GetGroups(const PTString& app_id);
+
/**
* @brief Check if specified RPC for specified application
* has permission to be executed in specified HMI Level
@@ -65,7 +67,7 @@ class CacheManager : public CacheManagerInterface {
* @return CheckPermissionResult containing flag if HMI Level is allowed
* and list of allowed params.
*/
- virtual void CheckPermissions(const PTString& app_id,
+ virtual void CheckPermissions(const policy_table::Strings& groups,
const PTString& hmi_level,
const PTString& rpc,
CheckPermissionResult& result);
@@ -215,6 +217,15 @@ class CacheManager : public CacheManagerInterface {
std::map<std::string, StringArray>& app_hmi_types);
/**
+ * @brief AppHasHMIType checks whether app has been registered with certain
+ *HMI type.
+ *
+ * @return true in case app contains certain HMI type, false otherwise.
+ */
+ virtual bool AppHasHMIType(const std::string& application_id,
+ policy_table::AppHMIType hmi_type) const OVERRIDE;
+
+ /**
* Gets flag updateRequired
* @return true if update is required
*/
diff --git a/src/components/policy/policy_regular/include/policy/cache_manager_interface.h b/src/components/policy/policy_regular/include/policy/cache_manager_interface.h
index e82787084c..50896bb8f1 100644
--- a/src/components/policy/policy_regular/include/policy/cache_manager_interface.h
+++ b/src/components/policy/policy_regular/include/policy/cache_manager_interface.h
@@ -50,6 +50,7 @@ class CacheManagerInterface {
public:
virtual ~CacheManagerInterface() {}
+ virtual const policy_table::Strings& GetGroups(const PTString& app_id) = 0;
/**
* @brief Check if specified RPC for specified application
* has permission to be executed in specified HMI Level
@@ -60,7 +61,7 @@ class CacheManagerInterface {
* @return CheckPermissionResult containing flag if HMI Level is allowed
* and list of allowed params.
*/
- virtual void CheckPermissions(const PTString& app_id,
+ virtual void CheckPermissions(const policy_table::Strings& groups,
const PTString& hmi_level,
const PTString& rpc,
CheckPermissionResult& result) = 0;
@@ -212,6 +213,15 @@ class CacheManagerInterface {
std::map<std::string, StringArray>& app_hmi_types) = 0;
/**
+ * @brief AppHasHMIType checks whether app has been registered with certain
+ *HMI type.
+ *
+ * @return true in case app contains certain HMI type, false otherwise.
+ */
+ virtual bool AppHasHMIType(const std::string& application_id,
+ policy_table::AppHMIType hmi_type) const = 0;
+
+ /**
* Gets flag updateRequired
* @return true if update is required
*/
diff --git a/src/components/policy/policy_regular/include/policy/policy_listener.h b/src/components/policy/policy_regular/include/policy/policy_listener.h
index 00bf1f709f..0170f421e4 100644
--- a/src/components/policy/policy_regular/include/policy/policy_listener.h
+++ b/src/components/policy/policy_regular/include/policy/policy_listener.h
@@ -75,6 +75,9 @@ class PolicyListener {
*
* @param pt_string the snapshot
*
+ * @param retry_seconds retry sequence timeouts.
+ *
+ * @param timeout_exceed timeout.
*/
virtual void OnSnapshotCreated(const BinaryMessage& pt_string) = 0;
@@ -88,6 +91,15 @@ class PolicyListener {
bool is_allowed) = 0;
/**
+ * @brief Sends OnAppPermissionsChanged notification to HMI
+ * @param permissions contains parameter for OnAppPermisionChanged
+ * @param policy_app_id contains policy application id
+ */
+ virtual void SendOnAppPermissionsChanged(
+ const AppPermissions& permissions,
+ const std::string& policy_app_id) const = 0;
+
+ /**
* @brief GetAvailableApps allows to obtain list of registered applications.
*/
virtual void GetAvailableApps(std::queue<std::string>&) = 0;
@@ -101,4 +113,4 @@ class PolicyListener {
virtual void OnCertificateUpdated(const std::string& certificate_data) = 0;
};
} // namespace policy
-#endif // SRC_COMPONENTS_POLICY_POLICY_REGULAR_INCLUDE_POLICY_POLICY_LISTENER_H_
+#endif // SRC_COMPONENTS_POLICY_POLICY_REGULAR_INCLUDE_POLICY_POLICY_LISTENER_H_
diff --git a/src/components/policy/policy_regular/include/policy/policy_manager.h b/src/components/policy/policy_regular/include/policy/policy_manager.h
new file mode 100644
index 0000000000..c6bc111ba0
--- /dev/null
+++ b/src/components/policy/policy_regular/include/policy/policy_manager.h
@@ -0,0 +1,498 @@
+/*
+ Copyright (c) 2016, Ford Motor Company
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided with the
+ distribution.
+
+ Neither the name of the Ford Motor Company nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef SRC_COMPONENTS_POLICY_POLICY_REGULAR_INCLUDE_POLICY_POLICY_MANAGER_H_
+#define SRC_COMPONENTS_POLICY_POLICY_REGULAR_INCLUDE_POLICY_POLICY_MANAGER_H_
+
+#include <vector>
+#include <cstdint>
+
+#include "utils/callable.h"
+#include "policy/policy_types.h"
+#include "policy/policy_table/types.h"
+#include "policy/policy_listener.h"
+#include "policy/usage_statistics/statistics_manager.h"
+
+namespace policy {
+class PolicySettings;
+typedef utils::SharedPtr<utils::Callable> StatusNotifier;
+
+class PolicyManager : public usage_statistics::StatisticsManager {
+ public:
+ virtual ~PolicyManager() {}
+
+ virtual void set_listener(PolicyListener* listener) = 0;
+
+ /**
+ * Inits Policy Table
+ * @param file_name Path to preloaded PT file
+ * @return true if successfully
+ */
+ virtual bool InitPT(const std::string& file_name,
+ const PolicySettings* settings) = 0;
+
+ /**
+ * @brief Updates Policy Table from binary message received from
+ * mobile device. Saves to Policy Table diff between Policy Table
+ * sent in snapshot and received Policy Table.
+ * @param file name of file with update policy table
+ * @param pt_content PTU as binary string
+ * @return bool Success of operation
+ */
+ virtual bool LoadPT(const std::string& file,
+ const BinaryMessage& pt_content) = 0;
+
+ /**
+ * Resets Policy Table
+ * @param file_name Path to preloaded PT file
+ * @return true if successfully
+ */
+ virtual bool ResetPT(const std::string& file_name) = 0;
+
+ /**
+ * @brief GetLockScreenIcon allows to obtain lock screen icon url;
+ *
+ * @return url which point to the resourse where lock screen icon could be
+ *obtained.
+ */
+ virtual std::string GetLockScreenIconUrl() const = 0;
+
+ /**
+ * @brief Gets all URLs for sending PTS to from PT itself.
+ * @param service_type Service specifies user of URL
+ * @return vector of urls
+ */
+ virtual void GetUpdateUrls(const std::string& service_type,
+ EndpointUrls& out_end_points) = 0;
+ virtual void GetUpdateUrls(const uint32_t service_type,
+ EndpointUrls& out_end_points) = 0;
+
+ /**
+ * @brief PTU is needed, for this PTS has to be formed and sent.
+ */
+ virtual bool RequestPTUpdate() = 0;
+
+ /**
+ * @brief Check if specified RPC for specified application
+ * has permission to be executed in specified HMI Level
+ * and also its permitted params.
+ * @param app_id Id of application provided during registration
+ * @param hmi_level Current HMI Level of application
+ * @param rpc Name of RPC
+ * @param CheckPermissionResult containing flag if HMI Level is allowed
+ * and list of allowed params.
+ */
+ virtual void CheckPermissions(const PTString& device_id,
+ const PTString& app_id,
+ const PTString& hmi_level,
+ const PTString& rpc,
+ const RPCParams& rpc_params,
+ CheckPermissionResult& result) = 0;
+
+ /**
+ * @brief Clear all record of user consents. Used during Factory Reset.
+ * @return bool Success of operation
+ */
+ virtual bool ResetUserConsent() = 0;
+
+ /**
+ * @brief Returns current status of policy table for HMI
+ * @return Current status of policy table
+ */
+ virtual std::string GetPolicyTableStatus() const = 0;
+
+ /**
+ * Checks is PT exceeded kilometers
+ * @param kilometers current kilometers at odometer
+ * @return true if exceeded
+ */
+ virtual void KmsChanged(int kilometers) = 0;
+
+ /**
+ * Increments counter of ignition cycles
+ */
+ virtual void IncrementIgnitionCycles() = 0;
+
+ /**
+ * @brief ExchangeByUserRequest
+ */
+ virtual std::string ForcePTExchange() = 0;
+
+ /**
+ * Resets retry sequence
+ */
+ virtual void ResetRetrySequence() = 0;
+
+ /**
+ * Gets timeout to wait before next retry updating PT
+ * If timeout is equal to zero then the retry sequence is not need.
+ * @return timeout in seconds
+ */
+ virtual uint32_t NextRetryTimeout() = 0;
+
+ /**
+ * Gets timeout to wait until receive response
+ * @return timeout in seconds
+ */
+ virtual uint32_t TimeoutExchangeMSec() = 0;
+
+ /**
+ * @brief List of timeouts in seconds between retries
+ * when attempt to update PT fails
+ * @return List of delays between attempts.
+ */
+ virtual const std::vector<int> RetrySequenceDelaysSeconds() = 0;
+
+ /**
+ * Handler of exceeding timeout of exchanging policy table
+ */
+ virtual void OnExceededTimeout() = 0;
+
+ /**
+ * @brief Handler of PTS sending out
+ */
+ virtual void OnUpdateStarted() = 0;
+
+ /**
+ * @brief Check user consent for mobile device data connection
+ * @param device_id Unique device identifier
+ * @return status of device consent
+ */
+ virtual DeviceConsent GetUserConsentForDevice(
+ const std::string& device_id) const = 0;
+
+ /**
+ * @brief Get user consent for application
+ * @param device_id Device id
+ * @param policy_app_id Unique application id
+ * @param permissions Array of functional groups permissions
+ */
+ virtual void GetUserConsentForApp(
+ const std::string& device_id,
+ const std::string& policy_app_id,
+ std::vector<FunctionalGroupPermission>& permissions) = 0;
+
+ /**
+ * @brief Set user consent for mobile device data connection
+ * @param device_id Unique device identifier
+ * @param is_allowed User consent for usage device data connection
+ */
+ virtual void SetUserConsentForDevice(const std::string& device_id,
+ bool is_allowed) = 0;
+
+ /**
+ * @brief Update Application Policies as reaction
+ * on User allowing/disallowing device this app is running on.
+ */
+ virtual bool ReactOnUserDevConsentForApp(const std::string app_id,
+ bool is_device_allowed) = 0;
+ /**
+ * Sets counter value that passed for receiving PT UPdate.
+ */
+ virtual void PTUpdatedAt(Counters counter, int value) = 0;
+
+ /**
+ * @brief Retrieves data from app_policies about app on its registration:
+ * @param app_id - id of registered app
+ * @param app_types Section on HMI where app can appear (Navigation, Phone
+ * etc)
+ * @param nicknames Synonyms for application
+ */
+ virtual bool GetInitialAppData(const std::string& application_id,
+ StringArray* nicknames = NULL,
+ StringArray* app_hmi_types = NULL) = 0;
+
+ /**
+ * @brief Add's device to policy table
+ * @param device_id Device mac address
+ * @param connection_type Device connection type
+ */
+ virtual void AddDevice(const std::string& device_id,
+ const std::string& connection_type) = 0;
+
+ /**
+ * @brief Stores device parameters received during application registration
+ * to policy table
+ * @param device_id Device mac address
+ * @param device_info Received device parameters
+ */
+ virtual void SetDeviceInfo(const std::string& device_id,
+ const DeviceInfo& device_info) = 0;
+
+ /**
+ * @brief Set user consent for application functional groups
+ * @param permissions User-defined application group pemissions.
+ * The permissions is not const reference because it may contains
+ * valid data as well as invalid. So we will remove all invalid data
+ * from this structure.
+ */
+ virtual void SetUserConsentForApp(const PermissionConsent& permissions) = 0;
+
+ /**
+ * @brief Get default HMI level for application
+ * @param policy_app_id Unique application id
+ * @param default_hmi Default HMI level for application or empty, if value
+ * was not set
+ * @return true, if succedeed, otherwise - false
+ */
+ virtual bool GetDefaultHmi(const std::string& policy_app_id,
+ std::string* default_hmi) const = 0;
+
+ /**
+ * @brief Get priority for application
+ * @param policy_app_id Unique application id
+ * @param priority Priority for application or empty, if value was not set
+ * @return true, if succedeed, otherwise - false
+ */
+ virtual bool GetPriority(const std::string& policy_app_id,
+ std::string* priority) const = 0;
+
+ /**
+ * @brief Get user friendly messages for given RPC messages and language
+ * @param message_codes RPC message codes
+ * @param language Language
+ * @return Array of structs with appropriate message parameters
+ */
+ virtual std::vector<UserFriendlyMessage> GetUserFriendlyMessages(
+ const std::vector<std::string>& message_code,
+ const std::string& language) = 0;
+
+ /**
+ * Checks if the application is revoked
+ * @param app_id application id
+ * @return true if application is revoked
+ */
+ virtual bool IsApplicationRevoked(const std::string& app_id) const = 0;
+
+ /**
+ * @brief Get resulting RPCs permissions for application which started on
+ * specific device
+ * @param device_id Device id
+ * @param policy_app_id Unique application id
+ * @param permissions Array of functional groups permissions
+ */
+ virtual void GetPermissionsForApp(
+ const std::string& device_id,
+ const std::string& policy_app_id,
+ std::vector<FunctionalGroupPermission>& permissions) = 0;
+
+ /**
+ * @brief Gets specific application permissions changes since last policy
+ * table update
+ * @param policy_app_id Unique application id
+ * @return Permissions changes
+ */
+ virtual AppPermissions GetAppPermissionsChanges(
+ const std::string& policy_app_id) = 0;
+
+ virtual void RemovePendingPermissionChanges(const std::string& app_id) = 0;
+
+ /**
+ * @brief Return device id, which hosts specific application
+ * @param Application id, which is required to update device id
+ */
+ virtual std::string& GetCurrentDeviceId(
+ const std::string& policy_app_id) const = 0;
+
+ /**
+ * @brief Set current system language
+ * @param language Language
+ */
+ virtual void SetSystemLanguage(const std::string& language) = 0;
+
+ /**
+ * @brief Set data from GetSystemInfo response to policy table
+ * @param ccpu_version CCPU version
+ * @param wers_country_code WERS country code
+ * @param language System language
+ */
+ virtual void SetSystemInfo(const std::string& ccpu_version,
+ const std::string& wers_country_code,
+ const std::string& language) = 0;
+
+ /**
+ * @brief Send OnPermissionsUpdated for choosen application
+ * @param application_id
+ */
+ virtual void SendNotificationOnPermissionsUpdated(
+ const std::string& application_id) = 0;
+
+ /**
+ * Marks device as upaired
+ * @param device_id id device
+ */
+ virtual void MarkUnpairedDevice(const std::string& device_id) = 0;
+
+ /**
+ * @brief Adds, application to the db or update existed one
+ * run PTU if policy update is necessary for application.
+ * @param Application id assigned by Ford to the application
+ * @return function that will notify update manager about new application
+ */
+ virtual StatusNotifier AddApplication(
+ const std::string& application_id,
+ const rpc::policy_table_interface_base::AppHmiTypes& hmi_types) = 0;
+
+ /**
+ * @brief Removes unpaired device records and related records from DB
+ * @param device_ids List of device_id, which should be removed
+ * @return true, if succedeed, otherwise - false
+ */
+ virtual bool CleanupUnpairedDevices() = 0;
+
+ /**
+ * @brief Check if app can keep context.
+ */
+ virtual bool CanAppKeepContext(const std::string& app_id) const = 0;
+
+ /**
+ * @brief Check if app can steal focus.
+ */
+ virtual bool CanAppStealFocus(const std::string& app_id) const = 0;
+
+ /**
+ * @brief Runs necessary operations, which is depends on external system
+ * state, e.g. getting system-specific parameters which are need to be
+ * filled into policy table
+ */
+ virtual void OnSystemReady() = 0;
+
+ /**
+ * @brief GetNotificationNumber
+ * @param priority
+ * @return
+ */
+ virtual uint32_t GetNotificationsNumber(
+ const std::string& priority) const = 0;
+
+ /**
+ * @brief Allows to update Vehicle Identification Number in policy table.
+ * @param new value for the parameter.
+ */
+ virtual void SetVINValue(const std::string& value) = 0;
+
+ /**
+ * @brief Checks, if application has policy assigned w/o data consent
+ * @param policy_app_id Unique application id
+ * @return true, if policy assigned w/o data consent, otherwise -false
+ */
+ virtual bool IsPredataPolicy(const std::string& policy_app_id) const = 0;
+
+ /**
+ * Returns heart beat timeout
+ * @param app_id application id
+ * @return if timeout was set then value in milliseconds greater zero
+ * otherwise heart beat for specific application isn't set
+ */
+ virtual uint32_t HeartBeatTimeout(const std::string& app_id) const = 0;
+
+ /**
+ * @brief SaveUpdateStatusRequired alows to save update status.
+ */
+ virtual void SaveUpdateStatusRequired(bool is_update_needed) = 0;
+
+ /**
+ * @brief Handler on applications search started
+ */
+ virtual void OnAppsSearchStarted() = 0;
+
+ /**
+ * @brief Handler on applications search completed
+ */
+ virtual void OnAppsSearchCompleted() = 0;
+ /**
+ * @brief Gets request types for application
+ * @param policy_app_id Unique application id
+ * @return request_types Request types of application
+ */
+ virtual const std::vector<std::string> GetAppRequestTypes(
+ const std::string policy_app_id) const = 0;
+
+ /**
+ * @brief Get information about vehicle
+ */
+ virtual const VehicleInfo GetVehicleInfo() const = 0;
+
+ /**
+ * @brief OnAppRegisteredOnMobile alows to handle event when application were
+ * succesfully registered on mobile device.
+ * It will send OnAppPermissionSend notification and will try to start PTU.
+ *
+ * @param application_id registered application.
+ */
+ virtual void OnAppRegisteredOnMobile(const std::string& application_id) = 0;
+
+ /**
+ * @brief RetrieveCertificate Allows to obtain certificate in order
+ * to start secure connection.
+ *
+ * @return The certificate in PKCS#7 format.
+ */
+ virtual std::string RetrieveCertificate() const = 0;
+
+ /**
+ * @brief HasCertificate check whether policy table has certificate
+ * int module_config section.
+ *
+ * @return true in case certificate exists, false otherwise
+ */
+ virtual bool HasCertificate() const = 0;
+
+ virtual const PolicySettings& get_settings() const = 0;
+
+ protected:
+ /**
+ * Checks is PT exceeded IgnitionCycles
+ * @return true if exceeded
+ */
+ virtual bool ExceededIgnitionCycles() = 0;
+
+ /**
+ * Checks is PT exceeded days
+ * @return true if exceeded
+ */
+ virtual bool ExceededDays() = 0;
+
+ /**
+ * @brief StartPTExchange allows to start PTU. The function will check
+ * if one is required and starts the update flow in only case when previous
+ * condition is true.
+ */
+ virtual void StartPTExchange() = 0;
+};
+
+} // namespace policy
+
+extern "C" policy::PolicyManager* CreateManager();
+extern "C" void DeleteManager(policy::PolicyManager*);
+
+#endif // SRC_COMPONENTS_POLICY_POLICY_REGULAR_INCLUDE_POLICY_POLICY_MANAGER_H_
diff --git a/src/components/policy/policy_regular/include/policy/policy_manager_impl.h b/src/components/policy/policy_regular/include/policy/policy_manager_impl.h
index 667ea2cb71..f37cbae76f 100644
--- a/src/components/policy/policy_regular/include/policy/policy_manager_impl.h
+++ b/src/components/policy/policy_regular/include/policy/policy_manager_impl.h
@@ -72,11 +72,12 @@ class PolicyManagerImpl : public PolicyManager {
virtual std::string GetLockScreenIconUrl() const;
virtual bool RequestPTUpdate();
- virtual void CheckPermissions(const PTString& app_id,
+ virtual void CheckPermissions(const PTString& device_id,
+ const PTString& app_id,
const PTString& hmi_level,
const PTString& rpc,
const RPCParams& rpc_params,
- CheckPermissionResult& result);
+ CheckPermissionResult& result) OVERRIDE;
virtual bool ResetUserConsent();
virtual void KmsChanged(int kilometers);
virtual void IncrementIgnitionCycles();
@@ -172,7 +173,9 @@ class PolicyManagerImpl : public PolicyManager {
bool CanAppStealFocus(const std::string& app_id) const;
void MarkUnpairedDevice(const std::string& device_id);
- StatusNotifier AddApplication(const std::string& application_id);
+ StatusNotifier AddApplication(
+ const std::string& application_id,
+ const rpc::policy_table_interface_base::AppHmiTypes& hmi_types);
virtual void RemoveAppConsentForGroup(const std::string& app_id,
const std::string& group_name);
@@ -203,6 +206,8 @@ class PolicyManagerImpl : public PolicyManager {
virtual std::string RetrieveCertificate() const OVERRIDE;
+ virtual bool HasCertificate() const OVERRIDE;
+
AppIdURL GetNextUpdateUrl(const EndpointUrls& urls) OVERRIDE;
AppIdURL RetrySequenceUrl(const struct RetrySequenceURL& rs,
diff --git a/src/components/policy/policy_regular/include/policy/policy_table/types.h b/src/components/policy/policy_regular/include/policy/policy_table/types.h
index 5873904823..3d80927d21 100644
--- a/src/components/policy/policy_regular/include/policy/policy_table/types.h
+++ b/src/components/policy/policy_regular/include/policy/policy_table/types.h
@@ -3,7 +3,7 @@
#define SRC_COMPONENTS_POLICY_POLICY_REGULAR_INCLUDE_POLICY_POLICY_TABLE_TYPES_H_
#include <climits>
-#include "./enums.h"
+#include "policy/policy_table/enums.h"
#include "rpc_base/rpc_message.h"
namespace Json {
class Value;
@@ -63,6 +63,9 @@ typedef Map<DeviceParams, 0, 255> DeviceData;
typedef Array<Enum<RequestType>, 0, 255> RequestTypes;
+typedef AppHMIType AppHmiType;
+typedef std::vector<AppHMIType> AppHmiTypes;
+
struct PolicyBase : CompositeType {
public:
Enum<Priority> priority;
diff --git a/src/components/include/policy/policy_regular/policy/policy_types.h b/src/components/policy/policy_regular/include/policy/policy_types.h
index dbd910d62d..13fb2c49c2 100644
--- a/src/components/include/policy/policy_regular/policy/policy_types.h
+++ b/src/components/policy/policy_regular/include/policy/policy_types.h
@@ -1,4 +1,4 @@
-/*
+/*
Copyright (c) 2013, Ford Motor Company
All rights reserved.
@@ -30,16 +30,17 @@
POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef SRC_COMPONENTS_INCLUDE_POLICY_POLICY_TYPES_H_
-#define SRC_COMPONENTS_INCLUDE_POLICY_POLICY_TYPES_H_
+#ifndef SRC_COMPONENTS_POLICY_POLICY_EXTERNAL_INCLUDE_POLICY_POLICY_TYPES_H_
+#define SRC_COMPONENTS_POLICY_POLICY_EXTERNAL_INCLUDE_POLICY_POLICY_TYPES_H_
+#include <algorithm>
#include <string>
#include <vector>
#include <map>
#include <set>
+#include <utility>
#include "utils/shared_ptr.h"
#include "utils/helpers.h"
-
namespace policy {
// TODO(PV): specify errors
@@ -58,6 +59,12 @@ const std::string kDefaultId = "default";
const std::string kDeviceId = "device";
/*
+ *@brief Policy Services specifies Users of Updates
+ * received from cloud through mobile device
+ */
+enum PolicyServiceTypes { SERVICE_NONE = 0, IVSU = 0x04, POLICY = 0x07 };
+
+/*
* @brief Status of policy table update
*/
enum PolicyTableStatus {
@@ -78,8 +85,16 @@ typedef std::string RpcName;
typedef std::set<std::string> RPCParams;
typedef std::map<std::string, std::set<policy::HMILevel> > HMIPermissions;
-typedef std::map<std::string, std::set<policy::Parameter> >
- ParameterPermissions;
+struct ParameterPermissions
+ : std::map<std::string, std::set<policy::Parameter> > {
+ ParameterPermissions()
+ : any_parameter_allowed(false)
+ , any_parameter_disallowed_by_user(false)
+ , any_parameter_disallowed_by_policy(false) {}
+ bool any_parameter_allowed;
+ bool any_parameter_disallowed_by_user;
+ bool any_parameter_disallowed_by_policy;
+};
struct RpcPermissions {
HMIPermissions hmi_permissions;
@@ -112,6 +127,38 @@ struct CheckPermissionResult {
RPCParams list_of_allowed_params;
RPCParams list_of_disallowed_params;
RPCParams list_of_undefined_params;
+
+ bool HasParameter(const PTString& parameter) {
+ const bool is_allowed =
+ helpers::in_range(list_of_allowed_params, parameter);
+ const bool is_disallowed =
+ helpers::in_range(list_of_disallowed_params, parameter);
+ const bool is_undefined =
+ helpers::in_range(list_of_undefined_params, parameter);
+
+ return is_allowed || is_disallowed || is_undefined;
+ }
+
+ bool DisallowedInclude(const RPCParams& parameters) {
+ if (parameters.empty()) {
+ return false;
+ }
+ return std::includes(list_of_disallowed_params.begin(),
+ list_of_disallowed_params.end(),
+ parameters.begin(),
+ parameters.end());
+ }
+
+ bool IsAnyAllowed(const RPCParams& parameters) {
+ if (parameters.empty()) {
+ return true;
+ }
+ return list_of_allowed_params.end() !=
+ std::find_first_of(list_of_allowed_params.begin(),
+ list_of_allowed_params.end(),
+ parameters.begin(),
+ parameters.end());
+ }
};
/**
@@ -249,6 +296,11 @@ struct PermissionConsent {
*/
struct UserFriendlyMessage {
std::string message_code;
+ std::string tts;
+ std::string label;
+ std::string line1;
+ std::string line2;
+ std::string text_body;
};
/**
@@ -333,6 +385,121 @@ struct RetrySequenceURL {
*/
typedef std::pair<uint32_t, uint32_t> AppIdURL;
+/**
+ * @brief Represents ExternalConsent entity status received from the system
+ */
+enum EntityStatus { kStatusOn, kStatusOff };
+
+/**
+ * @brief The ExternalConsentStatusItem struct represents customer connectivity
+ * settings
+ * item
+ */
+struct ExternalConsentStatusItem {
+ ExternalConsentStatusItem(const uint32_t type,
+ const uint32_t id,
+ const EntityStatus status)
+ : entity_type_(type), entity_id_(id), status_(status) {}
+
+ bool operator==(const ExternalConsentStatusItem& rhs) const {
+ return (entity_type_ == rhs.entity_type_) && (entity_id_ == rhs.entity_id_);
+ }
+
+ bool operator<(const ExternalConsentStatusItem& rhs) const {
+ return (entity_type_ < rhs.entity_type_) || (entity_id_ < rhs.entity_id_);
+ }
+
+ const uint32_t entity_type_;
+ const uint32_t entity_id_;
+ const EntityStatus status_;
+};
+
+struct ExternalConsentStatusItemSorter {
+ bool operator()(const ExternalConsentStatusItem& lhs,
+ const ExternalConsentStatusItem& rhs) const {
+ return (lhs.entity_type_ < rhs.entity_type_) ||
+ (lhs.entity_id_ < rhs.entity_id_);
+ }
+};
+
+/**
+ * @brief Customer connectivity settings status
+ */
+typedef std::set<ExternalConsentStatusItem, ExternalConsentStatusItemSorter>
+ ExternalConsentStatus;
+
+/**
+ * @brief GroupsByExternalConsentStatus represents list of group names, which
+ * has mapped ExternalConsent item (entity type + entity id) in their
+ * disallowed_by_external_consent_ containers. Boolean value represents
+ * whether ExternalConsent item has been found in
+ * disallowed_by_external_consent_ON or in disallowed_by_external_consent_OFF
+ * container
+ */
+typedef std::map<ExternalConsentStatusItem,
+ std::vector<std::pair<std::string, bool> > >
+ GroupsByExternalConsentStatus;
+
+/**
+ * @brief GroupsNames represents groups names from policy table -> functional
+ * groupings groups container
+ */
+typedef std::set<std::string> GroupsNames;
+
+typedef std::string ApplicationId;
+typedef std::string DeviceId;
+
+/**
+ * @brief Link of device to application
+ */
+typedef std::pair<policy::DeviceId, policy::ApplicationId> Link;
+
+/**
+ * @brief Collection of links
+ */
+typedef std::set<Link> ApplicationsLinks;
+
+/**
+ * @brief Represents possible result codes for policy table update check
+ */
+enum PermissionsCheckResult {
+ RESULT_NO_CHANGES,
+ RESULT_APP_REVOKED,
+ RESULT_NICKNAME_MISMATCH,
+ RESULT_PERMISSIONS_REVOKED,
+ RESULT_CONSENT_NEEDED,
+ RESULT_CONSENT_NOT_REQIURED,
+ RESULT_PERMISSIONS_REVOKED_AND_CONSENT_NEEDED,
+ RESULT_REQUEST_TYPE_CHANGED
+};
+
+/**
+ * @brief Per application collection of results done by checking policy table
+ * update
+ */
+typedef std::set<std::pair<std::string, PermissionsCheckResult> >
+ CheckAppPolicyResults;
+
+/**
+ * @brief The index of the application, the index of its URL
+ * and the policy application id from the Endpoints vector
+ * that will be sent on the next OnSystemRequest retry sequence
+ */
+struct RetrySequenceURL {
+ uint32_t app_idx_;
+ uint32_t url_idx_;
+ std::string policy_app_id_;
+ RetrySequenceURL(uint32_t app, uint32_t url, const std::string& app_id)
+ : app_idx_(app), url_idx_(url), policy_app_id_(app_id) {}
+ RetrySequenceURL() : app_idx_(0), url_idx_(0) {}
+};
+
+/**
+ * @brief Index of the application, index of its URL
+ * from the Endpoints vector
+ */
+typedef std::pair<uint32_t, uint32_t> AppIdURL;
+
} // namespace policy
-#endif // SRC_COMPONENTS_INCLUDE_POLICY_POLICY_TYPES_H_
+#endif // SRC_COMPONENTS_POLICY_POLICY_EXTERNAL_INCLUDE_POLICY_POLICY_TYPES_H_
diff --git a/src/components/policy/policy_regular/include/policy/pt_ext_representation.h b/src/components/policy/policy_regular/include/policy/pt_ext_representation.h
index 6b9d0fbada..f70946d1f5 100644
--- a/src/components/policy/policy_regular/include/policy/pt_ext_representation.h
+++ b/src/components/policy/policy_regular/include/policy/pt_ext_representation.h
@@ -327,6 +327,9 @@ class PTExtRepresentation : public virtual PTRepresentation {
virtual bool RemoveAppConsentForGroup(
const std::string& policy_app_id,
const std::string& functional_group_name) const = 0;
+ virtual bool SaveExternalConsentStatus(
+ const ExternalConsentStatus& status) const = 0;
+ virtual ExternalConsentStatus GetExternalConsentStatus() const = 0;
};
} // namespace policy
diff --git a/src/components/policy/policy_regular/include/policy/sql_pt_ext_queries.h b/src/components/policy/policy_regular/include/policy/sql_pt_ext_queries.h
index 0d13d51ebd..727c0b165d 100644
--- a/src/components/policy/policy_regular/include/policy/sql_pt_ext_queries.h
+++ b/src/components/policy/policy_regular/include/policy/sql_pt_ext_queries.h
@@ -90,7 +90,7 @@ extern const std::string kSelectUnpairedDevices;
extern const std::string kHasMsgLanguageCode;
extern const std::string kDeletePreconsentedGroupsByApplicationId;
extern const std::string kDeleteAppConsent;
-
+extern const std::string kSelectExternalConsentStatus;
} // namespace sql_pt_ext
} // namespace policy
diff --git a/src/components/policy/policy_regular/include/policy/sql_pt_ext_representation.h b/src/components/policy/policy_regular/include/policy/sql_pt_ext_representation.h
index 1d29687c46..0958bad5e1 100644
--- a/src/components/policy/policy_regular/include/policy/sql_pt_ext_representation.h
+++ b/src/components/policy/policy_regular/include/policy/sql_pt_ext_representation.h
@@ -129,6 +129,8 @@ class SQLPTExtRepresentation : public SQLPTRepresentation,
const std::string& functional_group_name) const;
virtual bool SetVINValue(const std::string& value);
+ bool SaveExternalConsentStatus(const ExternalConsentStatus& status) const;
+ ExternalConsentStatus GetExternalConsentStatus() const;
private:
void GatherModuleMeta(policy_table::ModuleMeta* meta) const;
@@ -198,7 +200,6 @@ class SQLPTExtRepresentation : public SQLPTRepresentation,
*/
bool IsMsgLanguagePresent(const std::string& message,
const std::string& language);
-};
} // namespace policy
diff --git a/src/components/policy/policy_regular/include/policy/status.h b/src/components/policy/policy_regular/include/policy/status.h
index ee127d3236..074e3c1eef 100644
--- a/src/components/policy/policy_regular/include/policy/status.h
+++ b/src/components/policy/policy_regular/include/policy/status.h
@@ -133,7 +133,7 @@ class UpToDateStatus : public Status {
* @param event Event which needs to be processed
*/
void ProcessEvent(UpdateStatusManagerInterface* manager,
- UpdateEvent event) FINAL;
+ UpdateEvent event) OVERRIDE;
};
/**
@@ -153,13 +153,13 @@ class UpdateNeededStatus : public Status {
* @param event Event which needs to be processed
*/
void ProcessEvent(UpdateStatusManagerInterface* manager,
- UpdateEvent event) FINAL;
+ UpdateEvent event) OVERRIDE;
/**
* @brief Check whether update is required in terms of status
* @return True if update is required, otherwise - false
*/
- bool IsUpdateRequired() const FINAL;
+ bool IsUpdateRequired() const OVERRIDE;
};
/**
@@ -179,19 +179,19 @@ class UpdatingStatus : public Status {
* @param event Event which needs to be processed
*/
void ProcessEvent(UpdateStatusManagerInterface* manager,
- UpdateEvent event) FINAL;
+ UpdateEvent event) OVERRIDE;
/**
* @brief Check whether update is required in terms of status
* @return True if update is required, otherwise - false
*/
- bool IsUpdateRequired() const FINAL;
+ bool IsUpdateRequired() const OVERRIDE;
/**
* @brief Check whether update is pending in terms of status
* @return True if update is pending, otherwise - false
*/
- bool IsUpdatePending() const FINAL;
+ bool IsUpdatePending() const OVERRIDE;
};
}
diff --git a/src/components/policy/policy_regular/src/cache_manager.cc b/src/components/policy/policy_regular/src/cache_manager.cc
index 3d831b886f..6184320306 100644
--- a/src/components/policy/policy_regular/src/cache_manager.cc
+++ b/src/components/policy/policy_regular/src/cache_manager.cc
@@ -101,6 +101,10 @@ CacheManager::~CacheManager() {
threads::DeleteThread(backup_thread_);
}
+const policy_table::Strings& CacheManager::GetGroups(const PTString& app_id) {
+ return pt_->policy_table.app_policies_section.apps[app_id].groups;
+}
+
bool CacheManager::CanAppKeepContext(const std::string& app_id) const {
CACHE_MANAGER_CHECK(false);
bool result = true;
@@ -275,6 +279,26 @@ void CacheManager::GetHMIAppTypeAfterUpdate(
}
}
+bool CacheManager::AppHasHMIType(const std::string& application_id,
+ policy_table::AppHMIType hmi_type) const {
+ const policy_table::ApplicationPolicies& policies =
+ pt_->policy_table.app_policies_section.apps;
+
+ policy_table::ApplicationPolicies::const_iterator policy_iter =
+ policies.find(application_id);
+
+ if (policy_iter == policies.end()) {
+ return false;
+ }
+
+ if (policy_iter->second.AppHMIType.is_initialized()) {
+ return helpers::in_range(*(policy_iter->second.AppHMIType),
+ rpc::Enum<policy_table::AppHMIType>(hmi_type));
+ }
+
+ return false;
+}
+
void CacheManager::Backup() {
sync_primitives::AutoLock lock(backuper_locker_);
DCHECK(backuper_);
@@ -410,25 +434,15 @@ bool CacheManager::IsApplicationRevoked(const std::string& app_id) const {
return is_revoked;
}
-void CacheManager::CheckPermissions(const PTString& app_id,
+void CacheManager::CheckPermissions(const policy_table::Strings& groups,
const PTString& hmi_level,
const PTString& rpc,
CheckPermissionResult& result) {
LOG4CXX_AUTO_TRACE(logger_);
CACHE_MANAGER_CHECK_VOID();
- if (pt_->policy_table.app_policies_section.apps.end() ==
- pt_->policy_table.app_policies_section.apps.find(app_id)) {
- LOG4CXX_ERROR(
- logger_, "Application id " << app_id << " was not found in policy DB.");
- return;
- }
-
- policy_table::Strings::const_iterator app_groups_iter =
- pt_->policy_table.app_policies_section.apps[app_id].groups.begin();
-
- policy_table::Strings::const_iterator app_groups_iter_end =
- pt_->policy_table.app_policies_section.apps[app_id].groups.end();
+ policy_table::Strings::const_iterator app_groups_iter = groups.begin();
+ policy_table::Strings::const_iterator app_groups_iter_end = groups.end();
policy_table::FunctionalGroupings::const_iterator concrete_group;
diff --git a/src/components/policy/policy_regular/src/policy_manager_impl.cc b/src/components/policy/policy_regular/src/policy_manager_impl.cc
index 563dfbb168..ac64118e28 100644
--- a/src/components/policy/policy_regular/src/policy_manager_impl.cc
+++ b/src/components/policy/policy_regular/src/policy_manager_impl.cc
@@ -353,16 +353,34 @@ const VehicleInfo PolicyManagerImpl::GetVehicleInfo() const {
return cache_->GetVehicleInfo();
}
-void PolicyManagerImpl::CheckPermissions(const PTString& app_id,
+void PolicyManagerImpl::CheckPermissions(const PTString& device_id,
+ const PTString& app_id,
const PTString& hmi_level,
const PTString& rpc,
const RPCParams& rpc_params,
CheckPermissionResult& result) {
+ LOG4CXX_AUTO_TRACE(logger_);
+
+ if (!cache_->IsApplicationRepresented(app_id)) {
+ LOG4CXX_WARN(logger_, "Application " << app_id << " isn't exist");
+ return;
+ }
+
LOG4CXX_INFO(logger_,
"CheckPermissions for " << app_id << " and rpc " << rpc
<< " for " << hmi_level << " level.");
- cache_->CheckPermissions(app_id, hmi_level, rpc, result);
+ const policy_table::Strings& groups = cache_->GetGroups(app_id);
+ cache_->CheckPermissions(groups, hmi_level, rpc, result);
+ if (cache_->IsApplicationRevoked(app_id)) {
+ // SDL must be able to notify mobile side with its status after app has
+ // been revoked by backend
+ if ("OnHMIStatus" == rpc && "NONE" == hmi_level) {
+ result.hmi_level_permitted = kRpcAllowed;
+ } else {
+ result.hmi_level_permitted = kRpcDisallowed;
+ }
+ }
}
bool PolicyManagerImpl::ResetUserConsent() {
@@ -946,8 +964,13 @@ AppIdURL PolicyManagerImpl::RetrySequenceUrl(const struct RetrySequenceURL& rs,
app_idx = 0;
}
}
+ const AppIdURL next_app_url = std::make_pair(app_idx, url_idx);
- return std::make_pair(app_idx, url_idx);
+ return next_app_url;
+}
+
+bool PolicyManagerImpl::HasCertificate() const {
+ return !cache_->GetCertificate().empty();
}
class CallStatusChange : public utils::Callable {
@@ -967,23 +990,28 @@ class CallStatusChange : public utils::Callable {
};
StatusNotifier PolicyManagerImpl::AddApplication(
- const std::string& application_id) {
+ const std::string& application_id,
+ const rpc::policy_table_interface_base::AppHmiTypes& hmi_types) {
LOG4CXX_AUTO_TRACE(logger_);
const std::string device_id = GetCurrentDeviceId(application_id);
DeviceConsent device_consent = GetUserConsentForDevice(device_id);
sync_primitives::AutoLock lock(apps_registration_lock_);
-
if (IsNewApplication(application_id)) {
AddNewApplication(application_id, device_consent);
return utils::MakeShared<CallStatusChange>(update_status_manager_,
device_consent);
} else {
PromoteExistedApplication(application_id, device_consent);
- return utils::MakeShared<CallStatusChange>(update_status_manager_,
- device_consent);
+ const policy_table::AppHMIType type = policy_table::AHT_NAVIGATION;
+ if (helpers::in_range(hmi_types,
+ (rpc::Enum<policy_table::AppHMIType>)type) &&
+ !HasCertificate()) {
+ LOG4CXX_DEBUG(logger_, "Certificate does not exist, scheduling update.");
+ update_status_manager_.ScheduleUpdate();
+ }
+ return utils::MakeShared<utils::CallNothing>();
}
}
-
void PolicyManagerImpl::RemoveAppConsentForGroup(
const std::string& app_id, const std::string& group_name) {
cache_->RemoveAppConsentForGroup(app_id, group_name);
diff --git a/src/components/policy/policy_regular/src/policy_table/types.cc b/src/components/policy/policy_regular/src/policy_table/types.cc
index 7928973919..23813d0488 100644
--- a/src/components/policy/policy_regular/src/policy_table/types.cc
+++ b/src/components/policy/policy_regular/src/policy_table/types.cc
@@ -172,7 +172,7 @@ Json::Value ApplicationParams::ToJsonValue() const {
Json::Value result__(PolicyBase::ToJsonValue());
impl::WriteJsonField("groups", groups, &result__);
impl::WriteJsonField("nicknames", nicknames, &result__);
- impl::WriteJsonField("AppHMIType", AppHMIType, &result__);
+ impl::WriteJsonField("AppHmiType", AppHMIType, &result__);
impl::WriteJsonField("RequestType", RequestType, &result__);
impl::WriteJsonField("memory_kb", memory_kb, &result__);
impl::WriteJsonField(
diff --git a/src/components/policy/policy_regular/test/include/policy/mock_cache_manager.h b/src/components/policy/policy_regular/test/include/policy/mock_cache_manager.h
index faabfe56be..7569e2195d 100644
--- a/src/components/policy/policy_regular/test/include/policy/mock_cache_manager.h
+++ b/src/components/policy/policy_regular/test/include/policy/mock_cache_manager.h
@@ -48,7 +48,7 @@ using namespace ::policy;
class MockCacheManagerInterface : public CacheManagerInterface {
public:
MOCK_METHOD4(CheckPermissions,
- void(const PTString& app_id,
+ void(const policy_table::Strings& groups,
const PTString& hmi_level,
const PTString& rpc,
CheckPermissionResult& result));
@@ -205,6 +205,10 @@ class MockCacheManagerInterface : public CacheManagerInterface {
MOCK_CONST_METHOD0(GetPT, utils::SharedPtr<policy_table::Table>());
MOCK_CONST_METHOD0(GetCertificate, std::string());
MOCK_METHOD1(SetDecryptedCertificate, void(const std::string&));
+ MOCK_METHOD1(GetGroups, const policy_table::Strings&(const PTString& app_id));
+ MOCK_CONST_METHOD2(AppHasHMIType,
+ bool(const std::string& application_id,
+ policy_table::AppHMIType hmi_type));
};
} // namespace policy_test
diff --git a/src/components/policy/policy_regular/test/include/policy/mock_policy_manager.h b/src/components/policy/policy_regular/test/include/policy/mock_policy_manager.h
index ff54807ef2..7ab4b518cd 100644
--- a/src/components/policy/policy_regular/test/include/policy/mock_policy_manager.h
+++ b/src/components/policy/policy_regular/test/include/policy/mock_policy_manager.h
@@ -65,8 +65,10 @@ class MockPolicyManager : public PolicyManager {
void(const std::string& service_type,
EndpointUrls& out_end_points));
MOCK_METHOD0(RequestPTUpdate, bool());
- MOCK_METHOD5(CheckPermissions,
- void(const PTString& app_id,
+
+ MOCK_METHOD6(CheckPermissions,
+ void(const PTString& device_id,
+ const PTString& app_id,
const PTString& hmi_level,
const PTString& rpc,
const RPCParams& rpc_params,
diff --git a/src/components/policy/policy_regular/test/policy_manager_impl_test.cc b/src/components/policy/policy_regular/test/policy_manager_impl_test.cc
index e6d246b748..96df685695 100644
--- a/src/components/policy/policy_regular/test/policy_manager_impl_test.cc
+++ b/src/components/policy/policy_regular/test/policy_manager_impl_test.cc
@@ -129,6 +129,12 @@ struct StringsForUpdate CreateNewRandomData(StringsForUpdate& str) {
return str;
}
+policy_table::AppHmiTypes HmiTypes(const policy_table::AppHMIType hmi_type) {
+ policy_table::AppHmiTypes hmi_types;
+ hmi_types.push_back(hmi_type);
+ return hmi_types;
+}
+
class PolicyManagerImplTest : public ::testing::Test {
public:
PolicyManagerImplTest() : device_id("08-00-27-CE-76-FE") {}
@@ -260,7 +266,7 @@ class PolicyManagerImplTest2 : public ::testing::Test {
// Arrange
CreateLocalPT("sdl_preloaded_pt.json");
// Add app
- manager->AddApplication(section_name);
+ manager->AddApplication(section_name, HmiTypes(policy_table::AHT_DEFAULT));
// Check app gets RequestTypes from pre_DataConsent of app_policies
// section
PT_request_types = manager->GetAppRequestTypes(section_name);
@@ -525,7 +531,7 @@ TEST_F(PolicyManagerImplTest2,
.WillRepeatedly(Return(dev_id1));
manager->SetUserConsentForDevice(dev_id1, true);
// Add app from consented device. App will be assigned with default policies
- manager->AddApplication(app_id1);
+ manager->AddApplication(app_id1, HmiTypes(policy_table::AHT_DEFAULT));
// Check before action
policy_table::RpcParameters rpc_parameters;
rpc_parameters.hmi_levels.push_back(policy_table::HL_FULL);
@@ -537,7 +543,7 @@ TEST_F(PolicyManagerImplTest2,
::policy::CheckPermissionResult output;
manager->CheckPermissions(
- app_id1, std::string("FULL"), "Alert", input_params, output);
+ dev_id1, app_id1, std::string("FULL"), "Alert", input_params, output);
// Check RPC is allowed
EXPECT_EQ(::policy::kRpcAllowed, output.hmi_level_permitted);
@@ -557,7 +563,7 @@ TEST_F(PolicyManagerImplTest2,
ASSERT_TRUE(manager->LoadPT("file_pt_update.json", msg));
manager->CheckPermissions(
- app_id1, std::string("FULL"), "Alert", input_params, output);
+ dev_id1, app_id1, std::string("FULL"), "Alert", input_params, output);
// Check RPC is disallowed
EXPECT_EQ(::policy::kRpcAllowed, output.hmi_level_permitted);
ASSERT_TRUE(output.list_of_allowed_params.empty());
@@ -582,7 +588,7 @@ TEST_F(PolicyManagerImplTest2,
.WillRepeatedly(Return(dev_id1));
manager->SetUserConsentForDevice(dev_id1, true);
// Add app from consented device. App will be assigned with default policies
- manager->AddApplication("1234");
+ manager->AddApplication("1234", HmiTypes(policy_table::AHT_MEDIA));
// Emulate PTU with new policies for app added above
std::ifstream ifile("sdl_preloaded_pt.json");
Json::Reader reader;
@@ -639,8 +645,12 @@ TEST_F(PolicyManagerImplTest2,
"Life",
2,
"Bluetooth");
- manager->CheckPermissions(
- std::string("1234"), std::string("FULL"), "Alert", input_params, output);
+ manager->CheckPermissions(dev_id1,
+ std::string("1234"),
+ std::string("FULL"),
+ "Alert",
+ input_params,
+ output);
// Check RPC is allowed
EXPECT_EQ(::policy::kRpcAllowed, output.hmi_level_permitted);
// Check list of parameters empty
@@ -765,7 +775,8 @@ TEST_F(
AddApplication_AddNewApplicationFromDeviceWithoutConsent_ExpectUpdateRequired) {
// Arrange
CreateLocalPT("sdl_preloaded_pt.json");
- ::policy::StatusNotifier notifyer = manager->AddApplication(app_id1);
+ ::policy::StatusNotifier notifyer =
+ manager->AddApplication(app_id1, HmiTypes(policy_table::AHT_DEFAULT));
DCHECK(notifyer);
(*notifyer)();
EXPECT_EQ("UPDATE_NEEDED", manager->GetPolicyTableStatus());
@@ -777,7 +788,7 @@ TEST_F(
// Arrange
// RequestTypes for default & preDataConsent are different
CreateLocalPT("ptu_requestType.json");
- manager->AddApplication(app_id1);
+ manager->AddApplication(app_id1, HmiTypes(policy_table::AHT_DEFAULT));
EXPECT_FALSE(manager->IsPredataPolicy(app_id1));
manager->ReactOnUserDevConsentForApp(app_id1, true);
EXPECT_FALSE(manager->IsPredataPolicy(app_id1));
@@ -790,7 +801,7 @@ TEST_F(
// Arrange
// RequestTypes for default & preDataConsent are the same
CreateLocalPT("ptu2_requestType.json");
- manager->AddApplication(app_id1);
+ manager->AddApplication(app_id1, HmiTypes(policy_table::AHT_DEFAULT));
EXPECT_FALSE(manager->IsPredataPolicy(app_id1));
EXPECT_CALL(listener, OnPendingPermissionChange(app_id1)).Times(0);
manager->ReactOnUserDevConsentForApp(app_id1, true);
@@ -807,7 +818,7 @@ TEST_F(
GetPTU("valid_sdl_pt_update.json");
EXPECT_EQ("UP_TO_DATE", manager->GetPolicyTableStatus());
// Try to add existing app
- manager->AddApplication(app_id2);
+ manager->AddApplication(app_id2, HmiTypes(policy_table::AHT_DEFAULT));
// Check no update required
EXPECT_EQ("UP_TO_DATE", manager->GetPolicyTableStatus());
}
@@ -824,7 +835,7 @@ TEST_F(PolicyManagerImplTest2,
GetPTU("valid_sdl_pt_update.json");
EXPECT_EQ("UP_TO_DATE", manager->GetPolicyTableStatus());
- manager->AddApplication(app_id2);
+ manager->AddApplication(app_id2, HmiTypes(policy_table::AHT_DEFAULT));
EXPECT_EQ("UP_TO_DATE", manager->GetPolicyTableStatus());
::policy::Counters counter = ::policy::Counters::DAYS_AFTER_EPOCH;
// Set PT was updated 10 days ago (limit is 30 days for now)
@@ -1036,7 +1047,7 @@ TEST_F(PolicyManagerImplTest2,
DISABLED_GetDefaultHmi_SetDeviceAllowed_ExpectReceivedHmiCorrect) {
// Arrange
CreateLocalPT("ptu2_requestType.json");
- manager->AddApplication(app_id2);
+ manager->AddApplication(app_id2, HmiTypes(policy_table::AHT_DEFAULT));
// Check if app has preData policy
EXPECT_FALSE(manager->IsPredataPolicy(app_id2));
std::string default_hmi1;
@@ -1058,7 +1069,7 @@ TEST_F(PolicyManagerImplTest2,
EXPECT_EQ(::policy::DeviceConsent::kDeviceAllowed, consent);
EXPECT_CALL(listener, OnCurrentDeviceIdUpdateRequired(app_id2))
.WillRepeatedly(Return(dev_id2));
- manager->AddApplication(app_id2);
+ manager->AddApplication(app_id2, HmiTypes(policy_table::AHT_DEFAULT));
EXPECT_TRUE((manager->GetCache())->IsDefaultPolicy(app_id2));
std::string default_hmi2;
manager->GetDefaultHmi(app_id2, &default_hmi2);
@@ -1069,7 +1080,7 @@ TEST_F(PolicyManagerImplTest2,
GetDefaultPriority_SetDeviceAllowed_ExpectReceivedPriorityCorrect) {
// Arrange
CreateLocalPT("ptu2_requestType.json");
- manager->AddApplication(app_id2);
+ manager->AddApplication(app_id2, HmiTypes(policy_table::AHT_DEFAULT));
// Check if app has preData policy
EXPECT_FALSE(manager->IsPredataPolicy(app_id2));
std::string priority1;
@@ -1091,7 +1102,7 @@ TEST_F(PolicyManagerImplTest2,
EXPECT_EQ(::policy::DeviceConsent::kDeviceAllowed, consent);
EXPECT_CALL(listener, OnCurrentDeviceIdUpdateRequired(app_id2))
.WillRepeatedly(Return(dev_id2));
- manager->AddApplication(app_id2);
+ manager->AddApplication(app_id2, HmiTypes(policy_table::AHT_DEFAULT));
EXPECT_TRUE((manager->GetCache())->IsDefaultPolicy(app_id2));
std::string priority2;
EXPECT_TRUE(manager->GetPriority(app_id2, &priority2));
@@ -1101,11 +1112,11 @@ TEST_F(PolicyManagerImplTest2,
TEST_F(PolicyManagerImplTest2, GetInitialAppData_ExpectReceivedConsentCorrect) {
// Arrange
CreateLocalPT("sdl_preloaded_pt.json");
- manager->AddApplication(app_id2);
+ manager->AddApplication(app_id2, HmiTypes(policy_table::AHT_DEFAULT));
::policy::StringArray app_nicknames;
::policy::StringArray app_hmi_types;
manager->GetInitialAppData(app_id2, &app_nicknames, &app_hmi_types);
- // Expect Empty nicknames and AppHMITypes
+ // Expect Empty nicknames and AppHmiTypes
EXPECT_EQ(0u, app_nicknames.size());
EXPECT_EQ(0u, app_hmi_types.size());
@@ -1132,7 +1143,7 @@ TEST_F(PolicyManagerImplTest2, GetInitialAppData_ExpectReceivedConsentCorrect) {
for (uint32_t i = 0; i < nick_names_size; ++i) {
EXPECT_EQ(app_nicknames1[i], appNicknames[i].asString());
}
- // Check AppHMITypes match
+ // Check AppHmiTypes match
for (uint32_t i = 0; i < app_hmi_types_size; ++i) {
EXPECT_EQ(app_hmi_types1[i], appHmiTypes[i].asString());
}
@@ -1143,7 +1154,7 @@ TEST_F(
CanAppKeepContext_AddAppFromUnconsentedDevice_ExpectAppCannotKeepContext) {
// Arrange
CreateLocalPT("sdl_preloaded_pt.json");
- manager->AddApplication(app_id2);
+ manager->AddApplication(app_id2, HmiTypes(policy_table::AHT_DEFAULT));
// Check if app has preData policy
EXPECT_FALSE(manager->IsPredataPolicy(app_id2));
// Check keep context in preData policy
@@ -1155,7 +1166,7 @@ TEST_F(PolicyManagerImplTest2,
// Arrange
CreateLocalPT("sdl_preloaded_pt.json");
ASSERT_TRUE((manager->GetCache())->AddDevice(dev_id2, "Bluetooth"));
- manager->AddApplication(app_id2);
+ manager->AddApplication(app_id2, HmiTypes(policy_table::AHT_DEFAULT));
ASSERT_TRUE((manager->GetCache())
->SetDeviceData(dev_id2,
"hardware IPX",
@@ -1170,7 +1181,7 @@ TEST_F(PolicyManagerImplTest2,
EXPECT_EQ(::policy::DeviceConsent::kDeviceAllowed, consent);
EXPECT_CALL(listener, OnCurrentDeviceIdUpdateRequired(app_id2))
.WillRepeatedly(Return(dev_id2));
- manager->AddApplication(app_id2);
+ manager->AddApplication(app_id2, HmiTypes(policy_table::AHT_DEFAULT));
EXPECT_TRUE((manager->GetCache())->IsDefaultPolicy(app_id2));
// Check keep context in default policy
EXPECT_TRUE(manager->CanAppKeepContext(app_id2));
@@ -1180,7 +1191,7 @@ TEST_F(PolicyManagerImplTest2,
CanAppKeepContext_SetPoliciesForAppUpdated_ExpectAppCanKeepContext) {
// Arrange
CreateLocalPT("sdl_preloaded_pt.json");
- manager->AddApplication(app_id2);
+ manager->AddApplication(app_id2, HmiTypes(policy_table::AHT_DEFAULT));
GetPTU("valid_sdl_pt_update.json");
// Check keep context in updated policies for app
EXPECT_TRUE(manager->CanAppKeepContext(app_id2));
@@ -1191,7 +1202,7 @@ TEST_F(PolicyManagerImplTest2,
// Arrange
CreateLocalPT("sdl_preloaded_pt.json");
ASSERT_TRUE((manager->GetCache())->AddDevice(dev_id2, "Bluetooth"));
- manager->AddApplication(app_id2);
+ manager->AddApplication(app_id2, HmiTypes(policy_table::AHT_DEFAULT));
ASSERT_TRUE((manager->GetCache())
->SetDeviceData(dev_id2,
"hardware IPX",
@@ -1206,7 +1217,7 @@ TEST_F(PolicyManagerImplTest2,
EXPECT_EQ(::policy::DeviceConsent::kDeviceAllowed, consent);
EXPECT_CALL(listener, OnCurrentDeviceIdUpdateRequired(app_id2))
.WillRepeatedly(Return(dev_id2));
- manager->AddApplication(app_id2);
+ manager->AddApplication(app_id2, HmiTypes(policy_table::AHT_DEFAULT));
EXPECT_TRUE((manager->GetCache())->IsDefaultPolicy(app_id2));
// Check keep context in default policy
EXPECT_TRUE(manager->CanAppStealFocus(app_id2));
@@ -1216,7 +1227,7 @@ TEST_F(PolicyManagerImplTest2,
CanAppStealFocus_SetPoliciesForAppUpdated_ExpectAppCanStealFocus) {
// Arrange
CreateLocalPT("sdl_preloaded_pt.json");
- manager->AddApplication(app_id2);
+ manager->AddApplication(app_id2, HmiTypes(policy_table::AHT_DEFAULT));
GetPTU("valid_sdl_pt_update.json");
// Check keep context in updated policies for app
EXPECT_TRUE(manager->CanAppKeepContext(app_id2));
@@ -1272,7 +1283,7 @@ TEST_F(
manager->SetUserConsentForDevice(dev_id2, true);
EXPECT_CALL(listener, OnCurrentDeviceIdUpdateRequired(app_id2))
.WillRepeatedly(Return(dev_id2));
- manager->AddApplication(app_id2);
+ manager->AddApplication(app_id2, HmiTypes(policy_table::AHT_DEFAULT));
GetPTU("valid_sdl_pt_update.json");
::policy::PermissionConsent perm_consent;
@@ -1326,7 +1337,7 @@ TEST_F(
pt->ReportErrors(&report);
}
// Add new app
- manager->AddApplication(app_id2);
+ manager->AddApplication(app_id2, HmiTypes(policy_table::AHT_DEFAULT));
uint32_t result = manager->HeartBeatTimeout(app_id2);
// By default hertbeat timeout is 0
EXPECT_EQ(0u, result);
diff --git a/src/components/telemetry_monitor/CMakeLists.txt b/src/components/telemetry_monitor/CMakeLists.txt
index 69b8371929..bb33857ecd 100644
--- a/src/components/telemetry_monitor/CMakeLists.txt
+++ b/src/components/telemetry_monitor/CMakeLists.txt
@@ -41,6 +41,7 @@ include_directories (
${COMPONENTS_DIR}/application_manager/include/
${POLICY_PATH}/include/
${POLICY_GLOBAL_INCLUDE_PATH}/
+ ${COMPONENTS_DIR}/rpc_base/include/
${COMPONENTS_DIR}/hmi_message_handler/include/
${COMPONENTS_DIR}/formatters/include/
${COMPONENTS_DIR}/media_manager/include/
diff --git a/tools/infrastructure/fix_style.sh b/tools/infrastructure/fix_style.sh
deleted file mode 100755
index 2713aaf1de..0000000000
--- a/tools/infrastructure/fix_style.sh
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/env bash
-
-#Copyright(c)2016 Ford Motor Company,
-#All rights reserved.
-#
-#Redistribution and use in source and binary forms, with or without
-#modification, are permitted provided that the following conditions are met:
-#
-#* Redistributions of source code must retain the above copyright notice, this
-#list of conditions and the following disclaimer.
-#
-#* Redistributions in binary form must reproduce the above copyright notice,
-#this list of conditions and the following disclaimer in the documentation
-#and / or other materials provided with the distribution.
-#
-#* Neither the name of Ford Motor Company nor the names of its
-#contributors may be used to endorse or promote products derived from
-#this software without specific prior written permission.
-#
-#THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-#AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-#IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-#DISCLAIMED.IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-#FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-#DAMAGES(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-#SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-#CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-#OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-#OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-ALL_FILES=$(find src -name \*.h -print -o -name \*.cpp -print -o -name \*.cc -print | grep -v 3rd_party)
-CHANGED_FILES=$(git ls-files -m --exclude-standard --others | grep -e "\.cc$" -e "\.cpp$" -e "\.c$" -e "\.h$" -e "\.hpp$")
-
-fix_style() {
- clang-format-3.6 -style=file -i $1
-}
-
-if [ "$1" = "--fix_all" ]
-then
- for FILE_NAME in $ALL_FILES; do fix_style $ALL_FILES; done
-else
- echo "Checked files: "
- echo "======================================================================="
- printf '%s\n' "${CHANGED_FILES[@]}"
- for FILE_NAME in $CHANGED_FILES; do fix_style $CHANGED_FILES; done
-fi