82 lines
2.5 KiB
Python
82 lines
2.5 KiB
Python
"""Notify platform tests for mobile_app."""
|
|
# pylint: disable=redefined-outer-name
|
|
import pytest
|
|
|
|
from homeassistant.setup import async_setup_component
|
|
|
|
from homeassistant.components.mobile_app.const import DOMAIN
|
|
|
|
from tests.common import MockConfigEntry
|
|
|
|
|
|
@pytest.fixture
|
|
async def setup_push_receiver(hass, aioclient_mock):
|
|
"""Fixture that sets up a mocked push receiver."""
|
|
push_url = 'https://mobile-push.home-assistant.dev/push'
|
|
|
|
from datetime import datetime, timedelta
|
|
now = (datetime.now() + timedelta(hours=24))
|
|
iso_time = now.strftime("%Y-%m-%dT%H:%M:%SZ")
|
|
|
|
aioclient_mock.post(push_url, json={
|
|
'rateLimits': {
|
|
'attempts': 1,
|
|
'successful': 1,
|
|
'errors': 0,
|
|
'total': 1,
|
|
'maximum': 150,
|
|
'remaining': 149,
|
|
'resetsAt': iso_time
|
|
}
|
|
})
|
|
|
|
entry = MockConfigEntry(
|
|
connection_class="cloud_push",
|
|
data={
|
|
"app_data": {
|
|
"push_token": "PUSH_TOKEN",
|
|
"push_url": push_url
|
|
},
|
|
"app_id": "io.homeassistant.mobile_app",
|
|
"app_name": "mobile_app tests",
|
|
"app_version": "1.0",
|
|
"device_id": "4d5e6f",
|
|
"device_name": "Test",
|
|
"manufacturer": "Home Assistant",
|
|
"model": "mobile_app",
|
|
"os_name": "Linux",
|
|
"os_version": "5.0.6",
|
|
"secret": "123abc",
|
|
"supports_encryption": False,
|
|
"user_id": "1a2b3c",
|
|
"webhook_id": "webhook_id"
|
|
},
|
|
domain=DOMAIN,
|
|
source="registration",
|
|
title="mobile_app test entry",
|
|
version=1
|
|
)
|
|
entry.add_to_hass(hass)
|
|
|
|
await async_setup_component(hass, DOMAIN, {DOMAIN: {}})
|
|
await hass.async_block_till_done()
|
|
|
|
|
|
async def test_notify_works(hass, aioclient_mock, setup_push_receiver):
|
|
"""Test notify works."""
|
|
assert hass.services.has_service('notify', 'mobile_app_test') is True
|
|
assert await hass.services.async_call('notify', 'mobile_app_test',
|
|
{'message': 'Hello world'},
|
|
blocking=True)
|
|
|
|
assert len(aioclient_mock.mock_calls) == 1
|
|
call = aioclient_mock.mock_calls
|
|
|
|
call_json = call[0][2]
|
|
|
|
assert call_json["push_token"] == "PUSH_TOKEN"
|
|
assert call_json["message"] == "Hello world"
|
|
assert call_json["registration_info"]["app_id"] == \
|
|
"io.homeassistant.mobile_app"
|
|
assert call_json["registration_info"]["app_version"] == "1.0"
|