# Copyright (c) 2023 Huawei Device Co., Ltd.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import("//base/security/security_guard/security_guard.gni")
import("//build/test.gni")

ohos_unittest("data_collect_test") {
  install_enable = true
  part_name = "security_guard"
  subsystem_name = "security"
  module_out_path = part_name + "/" + part_name

  include_dirs = [
    "include",
    "${sg_root_dir}/services/data_collect/collect/hiview",
    "${sg_root_dir}/services/config_manager/include",
    "${sg_root_dir}/interfaces/inner_api/collect/include",
    "${sg_root_dir}/interfaces/inner_api/collector/include",
    "${sg_root_dir}/frameworks/common/interfaces",
    "${sg_root_dir}/services/bigdata/include",
    "${sg_root_dir}/services/data_collect/store/include",
    "${sg_root_dir}/services/risk_collect/include",
    "${sg_root_dir}/services/risk_classify/model_manager/include",
    "${sg_root_dir}/frameworks/common/constants/include",
    "${sg_root_dir}/frameworks/common/json/include",
    "${sg_root_dir}/frameworks/common/task_handler/include",
    "${sg_root_dir}/frameworks/common/database/include",
    "${sg_root_dir}/frameworks/common/log/include",
    "${sg_root_dir}/frameworks/common/utils/include",
    "${sg_root_dir}/services/security_collector/include",
    "${sg_root_dir}/interfaces/inner_api/collector/include",
    "${sg_root_dir}/interfaces/inner_api/common/include",
  ]

  sources = [
    "${sg_root_dir}/services/data_collect/collect/hiview/hiview_listener.cpp",
    "${sg_root_dir}/services/security_collector/src/collector_cfg_marshalling.cpp",
    "${sg_root_dir}/services/security_collector/src/data_collection.cpp",
    "${sg_root_dir}/services/security_collector/src/lib_loader.cpp",
    "${sg_root_dir}/test/unittest/data_collect/src/hiview_listener_test.cpp",
  ]

  deps = [
    "${sg_root_dir}/frameworks/common/task_handler:sg_task_stamp",
    "${sg_root_dir}/services/bigdata:sg_bigdata_stamp",
    "${sg_root_dir}/services/config_manager:sg_config_manager",
    "${sg_root_dir}/services/data_collect:sg_collect_service",
    "${sg_root_dir}/services/data_collect:sg_uevent_listener_stamp",
  ]

  external_deps = [
    "access_token:libaccesstoken_sdk",
    "c_utils:utils",
    "device_manager:devicemanagersdk",
    "hilog:libhilog",
    "hisysevent:libhisysevent",
    "hisysevent:libhisyseventmanager",
    "ipc:ipc_core",
    "json:nlohmann_json_static",
    "os_account:os_account_innerkits",
    "preferences:native_preferences",
    "relational_store:native_rdb",
    "safwk:system_ability_fwk",
    "samgr:samgr_proxy",
  ]
}

ohos_unittest("SecurityGuardDataCollectTest") {
  install_enable = true
  part_name = "security_guard"
  subsystem_name = "security"
  module_out_path = part_name + "/" + part_name

  #resource_config_file = "resource/ohos_test.xml"

  include_dirs = [
    "include",
    "${sg_root_dir}/services/bigdata/include",
    "${sg_root_dir}/frameworks/common/constants/include",
    "${sg_root_dir}/frameworks/common/interfaces",
    "${sg_root_dir}/frameworks/common/json/include",
    "${sg_root_dir}/frameworks/common/task_handler/include",
    "${sg_root_dir}/frameworks/common/database/include",
    "${sg_root_dir}/frameworks/common/log/include",
    "${sg_root_dir}/frameworks/common/utils/include",
    "${sg_root_dir}/test/unittest/mock/account_manager",
    "${sg_root_dir}/test/unittest/mock/config_manager",
    "${sg_root_dir}/test/unittest/mock/device_manager",
    "${sg_root_dir}/test/unittest/mock/preferences",
    "${sg_root_dir}/test/unittest/mock/rdb",
    "${sg_root_dir}/services/security_collector/include",
    "${sg_root_dir}/interfaces/inner_api/collector/include",
  ]

  sources = [
    "${sg_root_dir}/frameworks/common/utils/src/security_guard_utils.cpp",
    "${sg_root_dir}/services/data_collect/store/src/database.cpp",
    "${sg_root_dir}/services/data_collect/store/src/database_helper.cpp",
    "${sg_root_dir}/services/data_collect/store/src/database_manager.cpp",
    "${sg_root_dir}/services/data_collect/store/src/rdb_event_store_callback.cpp",
    "${sg_root_dir}/services/data_collect/store/src/risk_event_rdb_helper.cpp",
    "${sg_root_dir}/services/security_collector/src/collector_cfg_marshalling.cpp",
    "${sg_root_dir}/services/security_collector/src/data_collection.cpp",
    "${sg_root_dir}/services/security_collector/src/lib_loader.cpp",
    "src/security_guard_data_collect_test.cpp",
  ]

  deps = [ "${sg_root_dir}/services/bigdata:sg_bigdata_stamp" ]

  external_deps = [
    "c_utils:utils",
    "googletest:gmock",
    "hilog:libhilog",
    "ipc:ipc_core",
    "json:nlohmann_json_static",
    "safwk:system_ability_fwk",
    "samgr:samgr_proxy",
  ]
}

ohos_unittest("SecurityGuardDatabaseManagerTest") {
  install_enable = true
  part_name = "security_guard"
  subsystem_name = "security"
  module_out_path = part_name + "/" + part_name

  #resource_config_file = "resource/ohos_test.xml"

  include_dirs = [
    "database_manager",
    "${sg_root_dir}/services/bigdata/include",
    "${sg_root_dir}/frameworks/common/constants/include",
    "${sg_root_dir}/frameworks/common/interfaces",
    "${sg_root_dir}/frameworks/common/json/include",
    "${sg_root_dir}/frameworks/common/task_handler/include",
    "${sg_root_dir}/frameworks/common/database/include",
    "${sg_root_dir}/frameworks/common/log/include",
    "${sg_root_dir}/frameworks/common/utils/include",
    "${sg_root_dir}/test/unittest/mock/account_manager",
    "${sg_root_dir}/test/unittest/mock/config_manager",
    "${sg_root_dir}/test/unittest/mock/data_collect",
    "${sg_root_dir}/test/unittest/mock/device_manager",
    "${sg_root_dir}/test/unittest/mock/preferences_wrapper",
    "${sg_root_dir}/test/unittest/mock/rdb",
  ]

  sources = [
    "${sg_root_dir}/frameworks/common/utils/src/security_guard_utils.cpp",
    "${sg_root_dir}/services/data_collect/store/src/database_manager.cpp",
    "database_manager/security_guard_database_manager_test.cpp",
  ]

  deps = [
    "${sg_root_dir}/frameworks/common/task_handler:sg_task_stamp",
    "${sg_root_dir}/services/bigdata:sg_bigdata_stamp",
  ]

  external_deps = [
    "c_utils:utils",
    "googletest:gmock",
    "hilog:libhilog",
    "ipc:ipc_core",
    "json:nlohmann_json_static",
    "safwk:system_ability_fwk",
    "samgr:samgr_proxy",
  ]
}

ohos_unittest("SecurityGuardDataCollectSaTest") {
  install_enable = true
  part_name = "security_guard"
  subsystem_name = "security"
  module_out_path = part_name + "/" + part_name

  include_dirs = [
    "sa",
    "${sg_root_dir}/services/bigdata/include",
    "${sg_root_dir}/frameworks/common/constants/include",
    "${sg_root_dir}/frameworks/common/interfaces",
    "${sg_root_dir}/frameworks/common/json/include",
    "${sg_root_dir}/frameworks/common/task_handler/include",
    "${sg_root_dir}/frameworks/common/database/include",
    "${sg_root_dir}/frameworks/common/log/include",
    "${sg_root_dir}/frameworks/common/utils/include",
    "${sg_root_dir}/test/unittest/mock/accesstoken",
    "${sg_root_dir}/test/unittest/mock/account_manager",
    "${sg_root_dir}/test/unittest/mock/collector_manager",
    "${sg_root_dir}/test/unittest/mock/config_manager",
    "${sg_root_dir}/test/unittest/mock/data_collect",
    "${sg_root_dir}/test/unittest/mock/database_manager",
    "${sg_root_dir}/test/unittest/mock/device_manager",
    "${sg_root_dir}/test/unittest/mock/preferences",
    "${sg_root_dir}/test/unittest/mock/preferences_wrapper",
    "${sg_root_dir}/test/unittest/mock/rdb",
    "${sg_root_dir}/services/security_collector/include",
    "${sg_root_dir}/interfaces/inner_api/collector/include",
    "${sg_root_dir}/services/config_manager/include",
    "${sg_root_dir}/interfaces/inner_api/common/include",
  ]

  sources = [
    "${sg_root_dir}/frameworks/common/json/src/json_cfg.cpp",
    "${sg_root_dir}/frameworks/common/utils/src/security_guard_utils.cpp",
    "${sg_root_dir}/services/data_collect/sa/acquire_data_callback_proxy.cpp",
    "${sg_root_dir}/services/data_collect/sa/acquire_data_subscribe_manager.cpp",
    "${sg_root_dir}/services/data_collect/sa/data_collect_manager_callback_proxy.cpp",
    "${sg_root_dir}/services/data_collect/sa/data_collect_manager_service.cpp",
    "${sg_root_dir}/services/data_collect/sa/data_collect_manager_stub.cpp",
    "${sg_root_dir}/services/data_collect/sa/security_event_query_callback_proxy.cpp",
    "${sg_root_dir}/services/security_collector/src/collector_cfg_marshalling.cpp",
    "${sg_root_dir}/services/security_collector/src/data_collection.cpp",
    "${sg_root_dir}/services/security_collector/src/lib_loader.cpp",
    "sa/security_guard_data_collect_sa_test.cpp",
  ]

  deps = [
    "${sg_root_dir}/frameworks/common/task_handler:sg_task_stamp",
    "${sg_root_dir}/services/bigdata:sg_bigdata_stamp",
    "${sg_root_dir}/services/config_manager:sg_config_manager",
  ]

  external_deps = [
    "c_utils:utils",
    "device_manager:devicemanagersdk",
    "googletest:gmock",
    "hilog:libhilog",
    "hisysevent:libhisysevent",
    "hisysevent:libhisyseventmanager",
    "ipc:ipc_core",
    "json:nlohmann_json_static",
    "safwk:system_ability_fwk",
    "samgr:samgr_proxy",
  ]
}

group("unittest") {
  testonly = true
  deps = [
    ":SecurityGuardDataCollectSaTest",
    ":SecurityGuardDataCollectTest",
    ":SecurityGuardDatabaseManagerTest",
  ]
}