# Mobile Verification Toolkit (MVT)
# Copyright (c) 2021-2023 The MVT Authors.
# Use of this software is governed by the MVT License 1.1 that can be found at
#   https://license.mvt.re/1.1/

import logging

from mvt.common.indicators import Indicators
from mvt.common.module import run_module
from mvt.ios.modules.mixed.tcc import TCC

from ..utils import get_ios_backup_folder


class TestTCCModule:
    def test_tcc(self):
        m = TCC(target_path=get_ios_backup_folder())
        run_module(m)
        assert len(m.results) == 11
        assert len(m.timeline) == 11
        assert len(m.alertstore.alerts) == 0
        assert m.results[0]["service"] == "kTCCServiceUbiquity"
        assert m.results[0]["client"] == "com.apple.Preferences"
        assert m.results[0]["auth_value"] == "allowed"

    def test_tcc_detection(self, indicator_file):
        m = TCC(target_path=get_ios_backup_folder())
        ind = Indicators(log=logging.getLogger())
        ind.parse_stix2(indicator_file)
        m.indicators = ind
        run_module(m)
        assert len(m.results) == 11
        assert len(m.timeline) == 11
        assert len(m.alertstore.alerts) == 1
        assert m.alertstore.alerts[0].event["service"] == "kTCCServiceLiverpool"
        assert m.alertstore.alerts[0].event["client"] == "Launch"
