"""Tests for the sigfox sensor.""" from http import HTTPStatus import re import requests_mock from homeassistant.components.sigfox.sensor import ( API_URL, CONF_API_LOGIN, CONF_API_PASSWORD, ) from homeassistant.core import HomeAssistant from homeassistant.setup import async_setup_component TEST_API_LOGIN = "foo" TEST_API_PASSWORD = "ebcd1234" VALID_CONFIG = { "sensor": { "platform": "sigfox", CONF_API_LOGIN: TEST_API_LOGIN, CONF_API_PASSWORD: TEST_API_PASSWORD, } } VALID_MESSAGE = """ {"data":[{ "time":1521879720, "data":"7061796c6f6164", "rinfos":[{"lat":"0.0","lng":"0.0"}], "snr":"50.0"}]} """ async def test_invalid_credentials(hass: HomeAssistant) -> None: """Test for invalid credentials.""" with requests_mock.Mocker() as mock_req: url = re.compile(API_URL + "devicetypes") mock_req.get(url, text="{}", status_code=HTTPStatus.UNAUTHORIZED) assert await async_setup_component(hass, "sensor", VALID_CONFIG) await hass.async_block_till_done() assert len(hass.states.async_entity_ids()) == 0 async def test_valid_credentials(hass: HomeAssistant) -> None: """Test for valid credentials.""" with requests_mock.Mocker() as mock_req: url1 = re.compile(API_URL + "devicetypes") mock_req.get( url1, text='{"data":[{"id":"fake_type"}]}', status_code=HTTPStatus.OK ) url2 = re.compile(API_URL + "devicetypes/fake_type/devices") mock_req.get(url2, text='{"data":[{"id":"fake_id"}]}') url3 = re.compile(API_URL + "devices/fake_id/messages*") mock_req.get(url3, text=VALID_MESSAGE) assert await async_setup_component(hass, "sensor", VALID_CONFIG) await hass.async_block_till_done() assert len(hass.states.async_entity_ids()) == 1 state = hass.states.get("sensor.sigfox_fake_id") assert state.state == "payload" assert state.attributes.get("snr") == "50.0"