mirror of https://github.com/home-assistant/core
60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
"""Test SIP server."""
|
|
|
|
import socket
|
|
|
|
import pytest
|
|
|
|
from homeassistant import config_entries
|
|
from homeassistant.components import voip
|
|
from homeassistant.core import HomeAssistant
|
|
|
|
|
|
@pytest.mark.usefixtures("socket_enabled")
|
|
async def test_create_sip_server(hass: HomeAssistant) -> None:
|
|
"""Tests starting/stopping SIP server."""
|
|
result = await hass.config_entries.flow.async_init(
|
|
voip.DOMAIN, context={"source": config_entries.SOURCE_USER}
|
|
)
|
|
result = await hass.config_entries.flow.async_configure(
|
|
result["flow_id"],
|
|
{},
|
|
)
|
|
entry = result["result"]
|
|
await hass.async_block_till_done()
|
|
|
|
with (
|
|
pytest.raises(OSError),
|
|
socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as sock,
|
|
):
|
|
# Server should have the port
|
|
sock.bind(("127.0.0.1", 5060))
|
|
|
|
# Configure different port
|
|
result = await hass.config_entries.options.async_init(
|
|
entry.entry_id,
|
|
)
|
|
result = await hass.config_entries.options.async_configure(
|
|
result["flow_id"],
|
|
user_input={"sip_port": 5061},
|
|
)
|
|
await hass.async_block_till_done()
|
|
|
|
# Server should be stopped now on 5060
|
|
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as sock:
|
|
sock.bind(("127.0.0.1", 5060))
|
|
|
|
with (
|
|
pytest.raises(OSError),
|
|
socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as sock,
|
|
):
|
|
# Server should now have the new port
|
|
sock.bind(("127.0.0.1", 5061))
|
|
|
|
# Shut down
|
|
await hass.config_entries.async_remove(entry.entry_id)
|
|
await hass.async_block_till_done()
|
|
|
|
# Server should be stopped
|
|
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as sock:
|
|
sock.bind(("127.0.0.1", 5061))
|