auto result = query_handler.GetResult();
ASSERT_EQ(result, expected_label);
}
+
+TEST_F(ParserDBHandlerTest, QueryDBHandler_GetDataControlAppIdTest) {
+ PkgSetDBHandlerMock pkg_set_db_handler(0, 0);
+ pkg_set_db_handler.SetWriteType(pkgmgr_common::PkgWriteType::Insert);
+ std::unique_ptr<package_x, decltype(pkgmgrinfo_basic_free_package)*> ptr(
+ GetTestPackage("test_package"), pkgmgrinfo_basic_free_package);
+ pkg_set_db_handler.SetPkgInfo(ptr.get());
+
+ EXPECT_CALL(pkg_set_db_handler, Connect()).WillOnce(testing::Return(true));
+ EXPECT_CALL(pkg_set_db_handler, GetConnection())
+ .WillOnce(testing::Return(GetDBHandles()));
+ ASSERT_EQ(pkg_set_db_handler.Execute(), 0);
+
+ std::vector<std::pair<int, std::vector<std::string>>> query_args;
+ std::vector<std::vector<std::string>> expected_appids;
+ std::map<std::string, std::vector<std::string>> provider_map;
+ for (GList* app_list = ptr.get()->application; app_list;
+ app_list = app_list->next) {
+ application_x* app = reinterpret_cast<application_x*>(app_list->data);
+ ASSERT_NE(app, nullptr);
+ ASSERT_NE(app->appid, nullptr);
+ ASSERT_NE(app->datacontrol, nullptr);
+
+ for (GList* dc_list = app->datacontrol; dc_list; dc_list = dc_list->next) {
+ datacontrol_x* dc = reinterpret_cast<datacontrol_x*>(dc_list->data);
+ ASSERT_NE(dc, nullptr);
+ ASSERT_NE(dc->providerid, nullptr);
+ ASSERT_NE(dc->type, nullptr);
+ ASSERT_NE(dc->access, nullptr);
+ provider_map[dc->providerid].emplace_back(app->appid);
+ }
+ }
+
+ for (auto& it : provider_map) {
+ query_args.emplace_back(std::make_pair(
+ QUERY_INDEX_APPINFO_GET_DATACONTROL_APPID,
+ std::vector<std::string>{std::move(it.first)}));
+ expected_appids.emplace_back(std::move(it.second));
+ }
+
+ QueryHandlerMock query_handler(0, 0);
+ query_handler.SetQueryArgs(std::move(query_args));
+ query_handler.SetDBType(pc::DBType::DB_TYPE_FILE_PKGDB);
+ query_handler.SetOpType(pc::DBOperationType::OPERATION_TYPE_READ);
+
+ EXPECT_CALL(query_handler,
+ Connect()).WillOnce(testing::Return(true));
+ EXPECT_CALL(query_handler, GetConnection())
+ .WillOnce(testing::Return(GetDBHandles()));
+ ASSERT_EQ(query_handler.Execute(), 0);
+ auto result = query_handler.GetResult();
+ ASSERT_NE(result.size(), 0);
+ for (auto& it : result)
+ std::sort(it.begin(), it.end());
+ for (auto& it : expected_appids)
+ std::sort(it.begin(), it.end());
+ ASSERT_EQ(result, expected_appids);
+}