summaryrefslogtreecommitdiff
path: root/src/components/policy/policy_external/test/policy_manager_impl_user_consent_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/policy/policy_external/test/policy_manager_impl_user_consent_test.cc')
-rw-r--r--src/components/policy/policy_external/test/policy_manager_impl_user_consent_test.cc675
1 files changed, 675 insertions, 0 deletions
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
new file mode 100644
index 0000000000..2f2162494f
--- /dev/null
+++ b/src/components/policy/policy_external/test/policy_manager_impl_user_consent_test.cc
@@ -0,0 +1,675 @@
+/*
+ * 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.
+ */
+
+#include "gtest/gtest.h"
+
+#include "policy/policy_manager_impl_test_base.h"
+#include "utils/date_time.h"
+
+namespace test {
+namespace components {
+namespace policy_test {
+
+using ::testing::_;
+using ::testing::Return;
+
+// Tests that use device without Consent
+TEST_F(
+ PolicyManagerImplTest2,
+ AddApplication_AddNewApplicationFromDeviceWithConsent_ExpectUpdateRequired) {
+ // Arrange
+ CreateLocalPT(preloaded_pt_filename_);
+
+ EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_1_))
+ .WillRepeatedly(Return(device_id_1_));
+
+ policy_manager_->SetUserConsentForDevice(device_id_1_, true);
+
+ policy_manager_->AddApplication(app_id_1_,
+ HmiTypes(policy_table::AHT_DEFAULT));
+
+ EXPECT_EQ("UPDATE_NEEDED", policy_manager_->GetPolicyTableStatus());
+}
+
+TEST_F(
+ PolicyManagerImplTest2,
+ AddApplication_AddNewApplicationFromDeviceWithoutConsent_ExpectUpToDate) {
+ // Arrange
+ CreateLocalPT(preloaded_pt_filename_);
+
+ // To set UP_TO_DATE before registration
+ GetPTU(kValidSdlPtUpdateJson);
+
+ const TimevalStruct current_time = date_time::DateTime::getCurrentTime();
+ const int kSecondsInDay = 60 * 60 * 24;
+ const int days_after_epoch = current_time.tv_sec / kSecondsInDay;
+
+ policy_manager_->PTUpdatedAt(DAYS_AFTER_EPOCH, days_after_epoch);
+ policy_manager_->PTUpdatedAt(KILOMETERS, 1000);
+
+ EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_1_))
+ .WillRepeatedly(Return(device_id_1_));
+
+ policy_manager_->SetUserConsentForDevice(device_id_1_, false);
+
+ policy_manager_->AddApplication(app_id_1_,
+ HmiTypes(policy_table::AHT_DEFAULT));
+
+ EXPECT_EQ("UP_TO_DATE", policy_manager_->GetPolicyTableStatus());
+}
+
+TEST_F(
+ PolicyManagerImplTest2,
+ ReactOnUserDevConsentForApp_AddNewApplicationFromDeviceWithoutConsent_ExpectPreDataConsent) {
+ // Arrange
+ 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_));
+}
+
+// Related to manual test APPLINK-18768
+TEST_F(PolicyManagerImplTest2,
+ CheckPreDataConsent_AppRegistered_ExpectReceivedRpcPermissionCorrect) {
+ // Arrange
+ CreateLocalPT(kSdlPreloadedPtJson2);
+ ASSERT_TRUE(
+ (policy_manager_->GetCache())->AddDevice(device_id_2_, "Bluetooth"));
+ 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
+ CheckRpcPermissions("ListFiles", ::policy::kRpcAllowed);
+ CheckRpcPermissions("PutFile", ::policy::kRpcAllowed);
+ CheckRpcPermissions("SetAppIcon", ::policy::kRpcAllowed);
+ CheckRpcPermissions("SetGlobalProperties", ::policy::kRpcAllowed);
+ CheckRpcPermissions("ResetGlobalProperties", ::policy::kRpcAllowed);
+ CheckRpcPermissions("SetDisplayLayout", ::policy::kRpcAllowed);
+ CheckRpcPermissions("ListFiles", ::policy::kRpcAllowed);
+ CheckRpcPermissions("DeleteFile", ::policy::kRpcAllowed);
+
+ // Next checks are equal to NonBaseBeforeDataConsent_APIs.xml checks from task
+ CheckRpcPermissions("AddSubMenu", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("AddCommand", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("DeleteCommand", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("DeleteSubMenu", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("CreateInteractionChoiceSet", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("PerformInteraction", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("DeleteInteractionChoiceSet", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("Alert", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("Show", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("Speak", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("SetMediaClockTimer", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("SubscribeButton", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("UnsubscribeButton", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("PerformAudioPassThru", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("EndAudioPassThru", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("SubscribeVehicleData", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("UnsubscribeVehicleData", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("GetVehicleData", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("ReadDID", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("GetDTCs", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("ScrollableMessage", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("Slider", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("ShowConstantTBT", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("AlertManeuver", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("UpdateTurnList", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("SendLocation", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("GenericRequest", ::policy::kRpcDisallowed);
+ CheckRpcPermissions("DialNumber", ::policy::kRpcDisallowed);
+}
+
+// Related to manual tests APPLINK-18763, APPLINK-18764
+TEST_F(PolicyManagerImplTest2, CheckPreDataConsent_GetDefaultHmiLevel_NONE) {
+ // Arrange
+ 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);
+ EXPECT_EQ("NONE", default_hmi);
+
+ // Default priority level is NONE
+ std::string priority1;
+ EXPECT_TRUE(policy_manager_->GetPriority(app_id_2_, &priority1));
+ EXPECT_EQ("NONE", priority1);
+}
+
+// Related to manual tests APPLINK-18763, APPLINK-18764
+TEST_F(PolicyManagerImplTest2,
+ CheckPreDataConsent_GetDefaultHmiLevel_BACKGROUNG) {
+ // Arrange
+ CreateLocalPT(kSdlPreloadedPtJson2);
+ 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);
+ EXPECT_EQ("BACKGROUND", default_hmi);
+ // Default priority level is EMERGENCY
+ std::string priority1;
+ EXPECT_TRUE(policy_manager_->GetPriority(app_id_2_, &priority1));
+ EXPECT_EQ("EMERGENCY", priority1);
+}
+
+TEST_F(
+ PolicyManagerImplTest2,
+ ReactOnUserDevConsentForApp_AddNewApplicationFromDeviceWithConsent_ExpectDefault) {
+ // Arrange
+ // RequestTypes for default & preDataConsent are different
+ CreateLocalPT("json/ptu_requestType.json");
+ 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_));
+ // Expect app_id_1_ has default policy
+ EXPECT_TRUE((policy_manager_->GetCache())->IsDefaultPolicy(app_id_1_));
+}
+
+TEST_F(
+ PolicyManagerImplTest2,
+ ReactOnUserDevConsentForApp_AddNewApplicationFromDeviceWithConsent_ExpectPreDataConsent) {
+ // Arrange
+ // RequestTypes for default & preDataConsent are the same
+ CreateLocalPT(kPtu2RequestTypeJson);
+ 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);
+ EXPECT_FALSE(policy_manager_->IsPredataPolicy(app_id_1_));
+ EXPECT_TRUE((policy_manager_->GetCache())->IsDefaultPolicy(app_id_1_));
+}
+
+TEST_F(
+ PolicyManagerImplTest2,
+ GetUserConsentForDevice_SetDeviceWithoutConcent_ExpectReceivedConsentCorrect) {
+ // Arrange
+ CreateLocalPT(preloaded_pt_filename_);
+ ASSERT_TRUE(
+ (policy_manager_->GetCache())->AddDevice(device_id_2_, "Bluetooth"));
+ ::policy::DeviceConsent consent =
+ policy_manager_->GetUserConsentForDevice(device_id_2_);
+ // Check
+ EXPECT_EQ(::policy::DeviceConsent::kDeviceHasNoConsent, consent);
+}
+
+TEST_F(PolicyManagerImplTest2,
+ GetUserConsentForDevice_SetDeviceAllowed_ExpectReceivedConsentCorrect) {
+ // Arrange
+ CreateLocalPT(preloaded_pt_filename_);
+ ASSERT_TRUE(
+ (policy_manager_->GetCache())->AddDevice(device_id_2_, "Bluetooth"));
+
+ ASSERT_TRUE((policy_manager_->GetCache())
+ ->SetDeviceData(device_id_2_,
+ "hardware IPX",
+ "v.8.0.1",
+ "Android",
+ "4.4.2",
+ "Life",
+ 2,
+ "Bluetooth"));
+
+ policy_manager_->SetUserConsentForDevice(device_id_2_, true);
+ ::policy::DeviceConsent consent =
+ policy_manager_->GetUserConsentForDevice(device_id_2_);
+ // Check
+ EXPECT_EQ(::policy::DeviceConsent::kDeviceAllowed, consent);
+}
+
+TEST_F(
+ PolicyManagerImplTest2,
+ GetUserConsentForDevice_SetDeviceDisallowed_ExpectReceivedConsentCorrect) {
+ // Arrange
+ CreateLocalPT(preloaded_pt_filename_);
+ ASSERT_TRUE(
+ (policy_manager_->GetCache())->AddDevice(device_id_2_, "Bluetooth"));
+ ASSERT_TRUE((policy_manager_->GetCache())
+ ->SetDeviceData(device_id_2_,
+ "hardware IPX",
+ "v.8.0.1",
+ "Android",
+ "4.4.2",
+ "Life",
+ 2,
+ "Bluetooth"));
+
+ policy_manager_->SetUserConsentForDevice(device_id_2_, false);
+ ::policy::DeviceConsent consent =
+ policy_manager_->GetUserConsentForDevice(device_id_2_);
+ // Check
+ EXPECT_EQ(::policy::DeviceConsent::kDeviceDisallowed, consent);
+}
+
+TEST_F(PolicyManagerImplTest2,
+ GetDefaultHmi_SetDeviceDisallowed_ExpectReceivedHmiCorrect) {
+ // Arrange
+ CreateLocalPT(kPtu2RequestTypeJson);
+ ASSERT_TRUE(
+ (policy_manager_->GetCache())->AddDevice(device_id_2_, "Bluetooth"));
+ ASSERT_TRUE((policy_manager_->GetCache())
+ ->SetDeviceData(device_id_2_,
+ "hardware IPX",
+ "v.8.0.1",
+ "Android",
+ "4.4.2",
+ "Life",
+ 2,
+ "Bluetooth"));
+
+ policy_manager_->SetUserConsentForDevice(device_id_2_, false);
+ ::policy::DeviceConsent consent =
+ policy_manager_->GetUserConsentForDevice(device_id_2_);
+ // Check
+ EXPECT_EQ(::policy::DeviceConsent::kDeviceDisallowed, consent);
+ EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_2_))
+ .WillRepeatedly(Return(device_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);
+}
+
+TEST_F(PolicyManagerImplTest2,
+ GetDefaultHmi_SetDeviceAllowed_ExpectReceivedHmiCorrect) {
+ // Arrange
+ CreateLocalPT(kPtu2RequestTypeJson);
+ 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;
+ policy_manager_->GetDefaultHmi(app_id_2_, &default_hmi1);
+ EXPECT_EQ("NONE", default_hmi1);
+ ASSERT_TRUE(
+ (policy_manager_->GetCache())->AddDevice(device_id_2_, "Bluetooth"));
+ ASSERT_TRUE((policy_manager_->GetCache())
+ ->SetDeviceData(device_id_2_,
+ "hardware IPX",
+ "v.8.0.1",
+ "Android",
+ "4.4.2",
+ "Life",
+ 2,
+ "Bluetooth"));
+ policy_manager_->SetUserConsentForDevice(device_id_2_, true);
+ ::policy::DeviceConsent consent =
+ policy_manager_->GetUserConsentForDevice(device_id_2_);
+ // Check
+ EXPECT_EQ(::policy::DeviceConsent::kDeviceAllowed, consent);
+ EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_2_))
+ .WillRepeatedly(Return(device_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);
+ EXPECT_EQ("LIMITED", default_hmi2);
+}
+
+TEST_F(PolicyManagerImplTest2,
+ GetDefaultPriority_SetDeviceAllowed_ExpectReceivedPriorityCorrect) {
+ // Arrange
+ CreateLocalPT(kPtu2RequestTypeJson);
+ 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;
+ EXPECT_TRUE(policy_manager_->GetPriority(app_id_2_, &priority1));
+ EXPECT_EQ("NONE", priority1);
+ ASSERT_TRUE(
+ (policy_manager_->GetCache())->AddDevice(device_id_2_, "Bluetooth"));
+ ASSERT_TRUE((policy_manager_->GetCache())
+ ->SetDeviceData(device_id_2_,
+ "hardware IPX",
+ "v.8.0.1",
+ "Android",
+ "4.4.2",
+ "Life",
+ 2,
+ "Bluetooth"));
+ policy_manager_->SetUserConsentForDevice(device_id_2_, true);
+ ::policy::DeviceConsent consent =
+ policy_manager_->GetUserConsentForDevice(device_id_2_);
+ // Check
+ EXPECT_EQ(::policy::DeviceConsent::kDeviceAllowed, consent);
+ EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_2_))
+ .WillRepeatedly(Return(device_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));
+ EXPECT_EQ("EMERGENCY", priority2);
+}
+
+TEST_F(PolicyManagerImplTest2,
+ GetUserFirendlyMessages_ExpectReceivedCorrectMessages) {
+ // Arrange
+ CreateLocalPT(preloaded_pt_filename_);
+ ::policy::StringArray message_code;
+ message_code.push_back("SettingEnableUpdates");
+ message_code.push_back("AppPermissions");
+ const std::string language = "en-us";
+ const std::string active_hmi_language = language;
+ std::vector< ::policy::UserFriendlyMessage> result =
+ policy_manager_->GetUserFriendlyMessages(
+ message_code, language, active_hmi_language);
+ uint32_t size = result.size();
+ EXPECT_GT(size, 0u);
+ std::vector< ::policy::UserFriendlyMessage>::iterator result_iter;
+ utils::SharedPtr<policy_table::Table> pt =
+ (policy_manager_->GetCache())->GetPT();
+
+ policy_table::ConsumerFriendlyMessages& consumer_friendly_messages =
+ *(pt->policy_table.consumer_friendly_messages);
+ policy_table::Messages& Messages = *(consumer_friendly_messages.messages);
+
+ policy_table::Messages::const_iterator messages_iter = Messages.begin();
+ // Loop until end of messages
+ for (; messages_iter != Messages.end(); ++messages_iter) {
+ if (messages_iter->first == "AppPermissions") {
+ for (result_iter = result.begin(); result_iter != result.end();
+ ++result_iter) {
+ if (result_iter->message_code == "AppPermissions") {
+ const policy_table::MessageLanguages& MessageLanguages =
+ messages_iter->second;
+ const policy_table::Languages& Languages = MessageLanguages.languages;
+ policy_table::Languages::const_iterator languages_iter =
+ Languages.find("en-us");
+ // If necessary language found
+ if (languages_iter != Languages.end()) {
+ const policy_table::MessageString& MessageString =
+ languages_iter->second;
+ EXPECT_EQ(static_cast<std::string>(*(MessageString.line1)),
+ result_iter->line1);
+ EXPECT_EQ(static_cast<std::string>(*(MessageString.line2)),
+ result_iter->line2);
+ EXPECT_EQ(static_cast<std::string>(*(MessageString.tts)),
+ result_iter->tts);
+ EXPECT_EQ(static_cast<std::string>(*(MessageString.label)),
+ result_iter->label);
+ EXPECT_EQ(static_cast<std::string>(*(MessageString.textBody)),
+ result_iter->text_body);
+ }
+ }
+ }
+ } else if (messages_iter->first == "SettingEnableUpdates") {
+ for (result_iter = result.begin(); result_iter != result.end();
+ ++result_iter) {
+ if (result_iter->message_code == "SettingEnableUpdates") {
+ const policy_table::MessageLanguages& MessageLanguages =
+ messages_iter->second;
+ const policy_table::Languages& Languages = MessageLanguages.languages;
+ policy_table::Languages::const_iterator languages_iter =
+ Languages.find("en-us");
+ // If necessary language found
+ if (languages_iter != Languages.end()) {
+ const policy_table::MessageString& MessageString2 =
+ languages_iter->second;
+ EXPECT_EQ(static_cast<std::string>(*(MessageString2.line1)),
+ result_iter->line1);
+ }
+ }
+ }
+ }
+ }
+}
+
+TEST_F(PolicyManagerImplTest2, SetDeviceInfo_ExpectDevInfoAddedToPT) {
+ // Arrange
+ ::policy::DeviceInfo dev_info;
+ utils::SharedPtr<policy_table::Table> pt =
+ (policy_manager_->GetCache())->GetPT();
+ dev_info.hardware = "hardware IPX";
+ dev_info.firmware_rev = "v.8.0.1";
+ dev_info.os = "Android";
+ dev_info.os_ver = "4.4.2";
+ dev_info.carrier = "Life";
+ dev_info.max_number_rfcom_ports = 2;
+ dev_info.connection_type = "Bluetooth";
+ policy_manager_->AddDevice(device_id_1_, "Bluetooth");
+ policy_manager_->SetDeviceInfo(device_id_1_, dev_info);
+ // Find device in PT
+ policy_table::DeviceData::const_iterator iter =
+ (*(pt->policy_table.device_data)).find(device_id_1_);
+ // Checks
+ ASSERT_TRUE(iter != (*(pt->policy_table.device_data)).end());
+ EXPECT_EQ(static_cast<std::string>(*(*iter).second.hardware),
+ dev_info.hardware);
+ EXPECT_EQ(static_cast<std::string>(*(*iter).second.firmware_rev),
+ dev_info.firmware_rev);
+ EXPECT_EQ(static_cast<std::string>(*(*iter).second.os), dev_info.os);
+ EXPECT_EQ(static_cast<std::string>(*(*iter).second.os_version),
+ dev_info.os_ver);
+ EXPECT_EQ(static_cast<std::string>(*(*iter).second.carrier),
+ dev_info.carrier);
+ EXPECT_EQ(static_cast<std::string>(*(*iter).second.connection_type),
+ dev_info.connection_type);
+ EXPECT_EQ(static_cast<uint8_t>(*(*iter).second.max_number_rfcom_ports),
+ dev_info.max_number_rfcom_ports);
+}
+
+TEST_F(PolicyManagerImplTest2, GetInitialAppData_ExpectReceivedConsentCorrect) {
+ // Arrange
+ 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_EQ(0u, app_nicknames.size());
+ EXPECT_EQ(0u, app_hmi_types.size());
+
+ Json::Value root = GetPTU(kValidSdlPtUpdateJson);
+
+ Json::Value appHmiTypes = Json::Value(Json::arrayValue);
+ appHmiTypes = root["policy_table"]["app_policies"][app_id_2_]["AppHMIType"];
+ const uint32_t appHmiType_size = appHmiTypes.size();
+
+ Json::Value appNicknames = Json::Value(Json::arrayValue);
+ appNicknames = root["policy_table"]["app_policies"][app_id_2_]["nicknames"];
+ const uint32_t appNicknames_size = appNicknames.size();
+
+ ::policy::StringArray app_nicknames1;
+ ::policy::StringArray app_hmi_types1;
+ policy_manager_->GetInitialAppData(
+ app_id_2_, &app_nicknames1, &app_hmi_types1);
+ const uint32_t nick_names_size = app_nicknames1.size();
+ const uint32_t app_hmi_types_size = app_hmi_types1.size();
+ ASSERT_EQ(appHmiType_size, app_hmi_types_size);
+ ASSERT_EQ(appNicknames_size, nick_names_size);
+ ASSERT_GT(nick_names_size, 0u);
+ ASSERT_GT(app_hmi_types_size, 0u);
+ // Check nicknames match
+ for (uint32_t i = 0; i < nick_names_size; ++i) {
+ EXPECT_EQ(app_nicknames1[i], appNicknames[i].asString());
+ }
+ // Check AppHmiTypes match
+ for (uint32_t i = 0; i < app_hmi_types_size; ++i) {
+ EXPECT_EQ(app_hmi_types1[i], appHmiTypes[i].asString());
+ }
+}
+
+TEST_F(
+ PolicyManagerImplTest2,
+ CanAppKeepContext_AddAppFromUnconsentedDevice_ExpectAppCannotKeepContext) {
+ // Arrange
+ 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
+ EXPECT_FALSE(policy_manager_->CanAppKeepContext(app_id_2_));
+}
+
+TEST_F(PolicyManagerImplTest2,
+ CanAppKeepContext_AddAppFromConsentedDevice_ExpectAppCannotKeepContext) {
+ // Arrange
+ CreateLocalPT(preloaded_pt_filename_);
+ ASSERT_TRUE(
+ (policy_manager_->GetCache())->AddDevice(device_id_2_, "Bluetooth"));
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
+ ASSERT_TRUE((policy_manager_->GetCache())
+ ->SetDeviceData(device_id_2_,
+ "hardware IPX",
+ "v.8.0.1",
+ "Android",
+ "4.4.2",
+ "Life",
+ 2,
+ "Bluetooth"));
+ policy_manager_->SetUserConsentForDevice(device_id_2_, true);
+ ::policy::DeviceConsent consent =
+ policy_manager_->GetUserConsentForDevice(device_id_2_);
+ EXPECT_EQ(::policy::DeviceConsent::kDeviceAllowed, consent);
+ EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_2_))
+ .WillRepeatedly(Return(device_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_));
+}
+
+TEST_F(PolicyManagerImplTest2,
+ CanAppStealFocus_AddAppFromUnconsentedDevice_ExpectAppCannotStealFocus) {
+ // Arrange
+ 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
+ EXPECT_FALSE(policy_manager_->CanAppStealFocus(app_id_2_));
+}
+
+TEST_F(PolicyManagerImplTest2,
+ CanAppStealFocus_AddAppFromConsentedDevice_ExpectAppCannotStealFocus) {
+ // Arrange
+ CreateLocalPT(preloaded_pt_filename_);
+ ASSERT_TRUE(
+ (policy_manager_->GetCache())->AddDevice(device_id_2_, "Bluetooth"));
+ policy_manager_->AddApplication(app_id_2_,
+ HmiTypes(policy_table::AHT_DEFAULT));
+ ASSERT_TRUE((policy_manager_->GetCache())
+ ->SetDeviceData(device_id_2_,
+ "hardware IPX",
+ "v.8.0.1",
+ "Android",
+ "4.4.2",
+ "Life",
+ 2,
+ "Bluetooth"));
+ policy_manager_->SetUserConsentForDevice(device_id_2_, true);
+ ::policy::DeviceConsent consent =
+ policy_manager_->GetUserConsentForDevice(device_id_2_);
+ EXPECT_EQ(::policy::DeviceConsent::kDeviceAllowed, consent);
+ EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_2_))
+ .WillRepeatedly(Return(device_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_));
+}
+
+TEST_F(PolicyManagerImplTest2,
+ IsPredataPolicy_SetAppWIthPredataPolicy_ExpectPredataPolicy) {
+ // Arrange
+ 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_));
+}
+
+TEST_F(
+ PolicyManagerImplTest2,
+ SendNotificationOnPermissionsUpdated_SetDeviceAllowed_ExpectNotificationSent) {
+ // Arrange
+ CreateLocalPT(kPtu2RequestTypeJson);
+ 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;
+ policy_manager_->GetDefaultHmi(app_id_2_, &default_hmi1);
+ EXPECT_EQ("NONE", default_hmi1);
+ EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_2_))
+ .WillOnce(Return(""));
+ EXPECT_CALL(listener_, OnPermissionsUpdated(app_id_2_, _, default_hmi1))
+ .Times(0);
+ policy_manager_->SendNotificationOnPermissionsUpdated(app_id_2_);
+
+ ASSERT_TRUE(
+ (policy_manager_->GetCache())->AddDevice(device_id_2_, "Bluetooth"));
+ ASSERT_TRUE((policy_manager_->GetCache())
+ ->SetDeviceData(device_id_2_,
+ "hardware IPX",
+ "v.8.0.1",
+ "Android",
+ "4.4.2",
+ "Life",
+ 2,
+ "Bluetooth"));
+ policy_manager_->SetUserConsentForDevice(device_id_2_, true);
+ ::policy::DeviceConsent consent =
+ policy_manager_->GetUserConsentForDevice(device_id_2_);
+ // Check
+ EXPECT_EQ(::policy::DeviceConsent::kDeviceAllowed, consent);
+ EXPECT_CALL(listener_, OnCurrentDeviceIdUpdateRequired(app_id_2_))
+ .WillRepeatedly(Return(device_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);
+ EXPECT_EQ("LIMITED", default_hmi2);
+ EXPECT_CALL(listener_, OnPermissionsUpdated(app_id_2_, _, default_hmi2));
+ policy_manager_->SendNotificationOnPermissionsUpdated(app_id_2_);
+}
+
+} // namespace policy
+} // namespace components
+} // namespace test