示例#1
0
async def test_get_deprecated_base_url_external(hass: HomeAssistant):
    """Test getting an external instance URL from the deprecated base_url."""
    # Test with SSL and external domain on standard port
    hass.config.api = Mock(deprecated_base_url="https://example.com:443/")
    assert _get_deprecated_base_url(hass) == "https://example.com"
    assert _get_deprecated_base_url(hass,
                                    require_ssl=True) == "https://example.com"
    assert (_get_deprecated_base_url(
        hass, require_standard_port=True) == "https://example.com")

    # Test without SSL and external domain on non-standard port
    hass.config.api = Mock(deprecated_base_url="http://example.com:8123/")
    assert _get_deprecated_base_url(hass) == "http://example.com:8123"

    with pytest.raises(NoURLAvailableError):
        _get_deprecated_base_url(hass, require_ssl=True)

    with pytest.raises(NoURLAvailableError):
        _get_deprecated_base_url(hass, require_standard_port=True)

    # Test SSL on external IP
    hass.config.api = Mock(deprecated_base_url="https://1.1.1.1")
    assert _get_deprecated_base_url(hass) == "https://1.1.1.1"
    assert _get_deprecated_base_url(hass,
                                    require_ssl=True) == "https://1.1.1.1"
    assert (_get_deprecated_base_url(
        hass, require_standard_port=True) == "https://1.1.1.1")

    with pytest.raises(NoURLAvailableError):
        _get_deprecated_base_url(hass, allow_ip=False)

    # Test with private IP
    hass.config.api = Mock(deprecated_base_url="https://10.10.10.10")
    with pytest.raises(NoURLAvailableError):
        assert _get_deprecated_base_url(hass)

    with pytest.raises(NoURLAvailableError):
        _get_deprecated_base_url(hass, allow_ip=False)

    with pytest.raises(NoURLAvailableError):
        _get_deprecated_base_url(hass, require_ssl=True)

    with pytest.raises(NoURLAvailableError):
        _get_deprecated_base_url(hass, require_standard_port=True)

    # Test with local domain
    hass.config.api = Mock(deprecated_base_url="https://example.local")
    with pytest.raises(NoURLAvailableError):
        assert _get_deprecated_base_url(hass)

    with pytest.raises(NoURLAvailableError):
        _get_deprecated_base_url(hass, allow_ip=False)

    with pytest.raises(NoURLAvailableError):
        _get_deprecated_base_url(hass, require_ssl=True)

    with pytest.raises(NoURLAvailableError):
        _get_deprecated_base_url(hass, require_standard_port=True)

    # Test with loopback
    hass.config.api = Mock(deprecated_base_url="https://127.0.0.42")
    with pytest.raises(NoURLAvailableError):
        assert _get_deprecated_base_url(hass)

    with pytest.raises(NoURLAvailableError):
        _get_deprecated_base_url(hass, allow_ip=False)

    with pytest.raises(NoURLAvailableError):
        _get_deprecated_base_url(hass, require_ssl=True)

    with pytest.raises(NoURLAvailableError):
        _get_deprecated_base_url(hass, require_standard_port=True)
示例#2
0
async def test_get_deprecated_base_url_internal(hass: HomeAssistant):
    """Test getting an internal instance URL from the deprecated base_url."""
    # Test with SSL local URL
    hass.config.api = Mock(deprecated_base_url="https://example.local")
    assert _get_deprecated_base_url(hass,
                                    internal=True) == "https://example.local"
    assert (_get_deprecated_base_url(
        hass, internal=True, allow_ip=False) == "https://example.local")
    assert (_get_deprecated_base_url(
        hass, internal=True, require_ssl=True) == "https://example.local")
    assert (_get_deprecated_base_url(
        hass, internal=True,
        require_standard_port=True) == "https://example.local")

    # Test with no SSL, local IP URL
    hass.config.api = Mock(deprecated_base_url="http://10.10.10.10:8123")
    assert _get_deprecated_base_url(hass,
                                    internal=True) == "http://10.10.10.10:8123"

    with pytest.raises(NoURLAvailableError):
        _get_deprecated_base_url(hass, internal=True, allow_ip=False)

    with pytest.raises(NoURLAvailableError):
        _get_deprecated_base_url(hass, internal=True, require_ssl=True)

    with pytest.raises(NoURLAvailableError):
        _get_deprecated_base_url(hass,
                                 internal=True,
                                 require_standard_port=True)

    # Test with SSL, local IP URL
    hass.config.api = Mock(deprecated_base_url="https://10.10.10.10")
    assert _get_deprecated_base_url(hass,
                                    internal=True) == "https://10.10.10.10"
    assert (_get_deprecated_base_url(
        hass, internal=True, require_ssl=True) == "https://10.10.10.10")
    assert (_get_deprecated_base_url(
        hass, internal=True,
        require_standard_port=True) == "https://10.10.10.10")

    # Test external URL
    hass.config.api = Mock(deprecated_base_url="https://example.com")
    with pytest.raises(NoURLAvailableError):
        _get_deprecated_base_url(hass, internal=True)

    with pytest.raises(NoURLAvailableError):
        _get_deprecated_base_url(hass, internal=True, require_ssl=True)

    with pytest.raises(NoURLAvailableError):
        _get_deprecated_base_url(hass,
                                 internal=True,
                                 require_standard_port=True)

    with pytest.raises(NoURLAvailableError):
        _get_deprecated_base_url(hass, internal=True, allow_ip=False)

    # Test with loopback
    hass.config.api = Mock(deprecated_base_url="https://127.0.0.42")
    with pytest.raises(NoURLAvailableError):
        assert _get_deprecated_base_url(hass, internal=True)

    with pytest.raises(NoURLAvailableError):
        _get_deprecated_base_url(hass, internal=True, allow_ip=False)

    with pytest.raises(NoURLAvailableError):
        _get_deprecated_base_url(hass, internal=True, require_ssl=True)

    with pytest.raises(NoURLAvailableError):
        _get_deprecated_base_url(hass,
                                 internal=True,
                                 require_standard_port=True)