"""Tests for the NextDNS integration.""" from unittest.mock import patch from nextdns import ( AnalyticsDnssec, AnalyticsEncryption, AnalyticsIpVersions, AnalyticsProtocols, AnalyticsStatus, ConnectionStatus, Settings, ) from homeassistant.components.nextdns.const import CONF_PROFILE_ID, DOMAIN from homeassistant.const import CONF_API_KEY from homeassistant.core import HomeAssistant from tests.common import MockConfigEntry CONNECTION_STATUS = ConnectionStatus(connected=True, profile_id="abcdef") PROFILES = [{"id": "xyz12", "fingerprint": "aabbccdd123", "name": "Fake Profile"}] STATUS = AnalyticsStatus( default_queries=40, allowed_queries=30, blocked_queries=20, relayed_queries=10 ) DNSSEC = AnalyticsDnssec(not_validated_queries=25, validated_queries=75) ENCRYPTION = AnalyticsEncryption(encrypted_queries=60, unencrypted_queries=40) IP_VERSIONS = AnalyticsIpVersions(ipv4_queries=90, ipv6_queries=10) PROTOCOLS = AnalyticsProtocols( doh_queries=20, doh3_queries=15, doq_queries=10, dot_queries=30, tcp_queries=0, udp_queries=40, ) SETTINGS = Settings( ai_threat_detection=True, allow_affiliate=True, anonymized_ecs=True, block_bypass_methods=True, block_csam=True, block_ddns=True, block_disguised_trackers=True, block_nrd=True, block_page=False, block_parked_domains=True, cache_boost=True, cname_flattening=True, cryptojacking_protection=True, dga_protection=True, dns_rebinding_protection=True, google_safe_browsing=False, idn_homograph_attacks_protection=True, logs=True, safesearch=False, threat_intelligence_feeds=True, typosquatting_protection=True, web3=True, youtube_restricted_mode=False, block_9gag=True, block_amazon=True, block_blizzard=True, block_dailymotion=True, block_discord=True, block_disneyplus=True, block_ebay=True, block_facebook=True, block_fortnite=True, block_hulu=True, block_imgur=True, block_instagram=True, block_leagueoflegends=True, block_messenger=True, block_minecraft=True, block_netflix=True, block_pinterest=True, block_primevideo=True, block_reddit=True, block_roblox=True, block_signal=True, block_skype=True, block_snapchat=True, block_spotify=True, block_steam=True, block_telegram=True, block_tiktok=True, block_tinder=True, block_tumblr=True, block_twitch=True, block_twitter=True, block_vimeo=True, block_vk=True, block_whatsapp=True, block_xboxlive=True, block_youtube=True, block_zoom=True, block_dating=True, block_gambling=True, block_piracy=True, block_porn=True, block_social_networks=True, ) async def init_integration(hass: HomeAssistant) -> MockConfigEntry: """Set up the NextDNS integration in Home Assistant.""" entry = MockConfigEntry( domain=DOMAIN, title="Fake Profile", unique_id="xyz12", data={CONF_API_KEY: "fake_api_key", CONF_PROFILE_ID: "xyz12"}, ) with patch( "homeassistant.components.nextdns.NextDns.get_profiles", return_value=PROFILES ), patch( "homeassistant.components.nextdns.NextDns.get_analytics_status", return_value=STATUS, ), patch( "homeassistant.components.nextdns.NextDns.get_analytics_encryption", return_value=ENCRYPTION, ), patch( "homeassistant.components.nextdns.NextDns.get_analytics_dnssec", return_value=DNSSEC, ), patch( "homeassistant.components.nextdns.NextDns.get_analytics_ip_versions", return_value=IP_VERSIONS, ), patch( "homeassistant.components.nextdns.NextDns.get_analytics_protocols", return_value=PROTOCOLS, ), patch( "homeassistant.components.nextdns.NextDns.get_settings", return_value=SETTINGS, ), patch( "homeassistant.components.nextdns.NextDns.connection_status", return_value=CONNECTION_STATUS, ): entry.add_to_hass(hass) await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() return entry