Z4nzu / hackingtool

ALL IN ONE Hacking Tool For Hackers
https://forms.gle/ntuAX8BGRR5yAb9ZA
MIT License
43.46k stars 4.78k forks source link

Script git hub #265

Open Hacker202811 opened 1 year ago

Hacker202811 commented 1 year ago

"""Test check_config script.""" from unittest.mock import patch

import pytest

from homeassistant.config import YAML_CONFIG_FILE import homeassistant.scripts.check_config as check_config

from tests.common import get_test_config_dir, patch_yaml_files

BASE_CONFIG = (     "homeassistant:\n"     "  name: Home\n"     "  latitude: -26.107361\n"     "  longitude: 28.054500\n"     "  elevation: 1600\n"     "  unit_system: metric\n"     "  time_zone: GMT\n"     "\n\n" )

BAD_CORE_CONFIG = "homeassistant:\n  unit_system: bad\n\n\n"

@pytest.fixture(autouse=True) async def apply_stop_hass(stop_hass):     """Make sure all hass are stopped."""

@pytest.fixture def mock_is_file():     """Mock is_file."""     # All files exist except for the old entity registry file     with patch(         "os.path.isfile", lambda path: not path.endswith("entity_registry.yaml")     ):         yield

def normalize_yaml_files(check_dict):     """Remove configuration path from ['yaml_files']."""     root = get_test_config_dir()     return [key.replace(root, "...") for key in sorted(check_dict["yaml_files"].keys())]

def test_bad_core_config(mock_is_file, loop):     """Test a bad core config setup."""     files = {YAML_CONFIG_FILE: BAD_CORE_CONFIG}     with patch_yaml_files(files):         res = check_config.check(get_test_config_dir())         assert res["except"].keys() == {"homeassistant"}         assert res["except"]["homeassistant"][1] == {"unit_system": "bad"}

def test_config_platform_valid(mock_is_file, loop):     """Test a valid platform setup."""     files = {YAML_CONFIG_FILE: BASE_CONFIG + "light:\n  platform: demo"}     with patch_yaml_files(files):         res = check_config.check(get_test_config_dir())         assert res["components"].keys() == {"homeassistant", "light"}         assert res["components"]["light"] == [{"platform": "demo"}]         assert res["except"] == {}         assert res["secret_cache"] == {}         assert res["secrets"] == {}         assert len(res["yaml_files"]) == 1

def test_component_platform_not_found(mock_is_file, loop):     """Test errors if component or platform not found."""     # Make sure they don't exist     files = {YAML_CONFIG_FILE: BASE_CONFIG + "beer:"}     with patch_yaml_files(files):         res = check_config.check(get_test_config_dir())         assert res["components"].keys() == {"homeassistant"}         assert res["except"] == {             check_config.ERROR_STR: [                 "Integration error: beer - Integration 'beer' not found."             ]         }         assert res["secret_cache"] == {}         assert res["secrets"] == {}         assert len(res["yaml_files"]) == 1

    files = {YAML_CONFIG_FILE: BASE_CONFIG + "light:\n  platform: beer"}     with patch_yaml_files(files):         res = check_config.check(get_test_config_dir())         assert res["components"].keys() == {"homeassistant", "light"}         assert res["components"]["light"] == []         assert res["except"] == {             check_config.ERROR_STR: [                 "Platform error light.beer - Integration 'beer' not found."             ]         }         assert res["secret_cache"] == {}         assert res["secrets"] == {}         assert len(res["yaml_files"]) == 1

def test_secrets(mock_is_file, loop):     """Test secrets config checking method."""     secrets_path = get_test_config_dir("secrets.yaml")

    files = {         get_test_config_dir(YAML_CONFIG_FILE): BASE_CONFIG         + ("http:\n  cors_allowed_origins: !secret http_pw"),         secrets_path: ("logger: debug\nhttp_pw: http://google.com"),     }

    with patch_yaml_files(files):

        res = check_config.check(get_test_config_dir(), True)

        assert res["except"] == {}         assert res["components"].keys() == {"homeassistant", "http"}         assert res["components"]["http"] == {             "cors_allowed_origins": ["http://google.com"],             "ip_ban_enabled": True,             "login_attempts_threshold": -1,             "server_port": 8123,             "ssl_profile": "modern",         }         assert res["secret_cache"] == {secrets_path: {"http_pw": "http://google.com"}}         assert res["secrets"] == {"http_pw": "http://google.com"}         assert normalize_yaml_files(res) == [             ".../configuration.yaml",             ".../secrets.yaml",         ]

def test_package_invalid(mock_is_file, loop):     """Test an invalid package."""     files = {         YAML_CONFIG_FILE: BASE_CONFIG + ("  packages:\n    p1:\n" '      group: ["a"]')     }     with patch_yaml_files(files):         res = check_config.check(get_test_config_dir())

        assert res["except"].keys() == {"homeassistant.packages.p1.group"}         assert res["except"]["homeassistant.packages.p1.group"][1] == {"group": ["a"]}         assert len(res["except"]) == 1         assert res["components"].keys() == {"homeassistant"}         assert len(res["components"]) == 1         assert res["secret_cache"] == {}         assert res["secrets"] == {}         assert len(res["yaml_files"]) == 1

def test_bootstrap_error(loop):     """Test a valid platform setup."""     files = {YAML_CONFIG_FILE: BASE_CONFIG + "automation: !include no.yaml"}     with patch_yaml_files(files):         res = check_config.check(get_test_config_dir(YAML_CONFIG_FILE))         err = res["except"].pop(check_config.ERROR_STR)         assert len(err) == 1         assert res["except"] == {}         assert res["components"] == {}  # No components, load failed         assert res["secret_cache"] == {}         assert res["secrets"] == {}         assert res["yaml_files"] == {}

cclauss commented 11 months ago

@Hacker202811 Is there a todo for this issue?