hass-core/tests/components/hassio/test_auth.py
Pascal Vizeli 3f87d41381
Fix auth for hass.io (#17318)
* Update test_auth.py

* Update auth.py

* Update test_auth.py
2018-10-11 01:02:00 +02:00

95 lines
3 KiB
Python

"""The tests for the hassio component."""
from unittest.mock import patch, Mock
from homeassistant.const import HTTP_HEADER_HA_AUTH
from homeassistant.exceptions import HomeAssistantError
from tests.common import mock_coro, register_auth_provider
from . import API_PASSWORD
async def test_login_success(hass, hassio_client):
"""Test no auth needed for ."""
await register_auth_provider(hass, {'type': 'homeassistant'})
with patch('homeassistant.auth.providers.homeassistant.'
'HassAuthProvider.async_validate_login',
Mock(return_value=mock_coro())) as mock_login:
resp = await hassio_client.post(
'/api/hassio_auth',
json={
"username": "test",
"password": "123456"
},
headers={
HTTP_HEADER_HA_AUTH: API_PASSWORD
}
)
# Check we got right response
assert resp.status == 200
mock_login.assert_called_with("test", "123456")
async def test_login_error(hass, hassio_client):
"""Test no auth needed for error."""
await register_auth_provider(hass, {'type': 'homeassistant'})
with patch('homeassistant.auth.providers.homeassistant.'
'HassAuthProvider.async_validate_login',
Mock(side_effect=HomeAssistantError())) as mock_login:
resp = await hassio_client.post(
'/api/hassio_auth',
json={
"username": "test",
"password": "123456"
},
headers={
HTTP_HEADER_HA_AUTH: API_PASSWORD
}
)
# Check we got right response
assert resp.status == 403
mock_login.assert_called_with("test", "123456")
async def test_login_no_data(hass, hassio_client):
"""Test auth with no data -> error."""
await register_auth_provider(hass, {'type': 'homeassistant'})
with patch('homeassistant.auth.providers.homeassistant.'
'HassAuthProvider.async_validate_login',
Mock(side_effect=HomeAssistantError())) as mock_login:
resp = await hassio_client.post(
'/api/hassio_auth',
headers={
HTTP_HEADER_HA_AUTH: API_PASSWORD
}
)
# Check we got right response
assert resp.status == 400
assert not mock_login.called
async def test_login_no_username(hass, hassio_client):
"""Test auth with no username in data -> error."""
await register_auth_provider(hass, {'type': 'homeassistant'})
with patch('homeassistant.auth.providers.homeassistant.'
'HassAuthProvider.async_validate_login',
Mock(side_effect=HomeAssistantError())) as mock_login:
resp = await hassio_client.post(
'/api/hassio_auth',
json={
"password": "123456"
},
headers={
HTTP_HEADER_HA_AUTH: API_PASSWORD
}
)
# Check we got right response
assert resp.status == 400
assert not mock_login.called