"""Test Nest local auth.""" from homeassistant.components.nest import const, config_flow, local_auth from urllib.parse import parse_qsl import pytest import requests_mock as rmock @pytest.fixture def registered_flow(hass): """Mock a registered flow.""" local_auth.initialize(hass, 'TEST-CLIENT-ID', 'TEST-CLIENT-SECRET') return hass.data[config_flow.DATA_FLOW_IMPL][const.DOMAIN] async def test_generate_auth_url(registered_flow): """Test generating an auth url. Mainly testing that it doesn't blow up. """ url = await registered_flow['gen_authorize_url']('TEST-FLOW-ID') assert url is not None async def test_convert_code(requests_mock, registered_flow): """Test converting a code.""" from nest.nest import ACCESS_TOKEN_URL def token_matcher(request): """Match a fetch token request.""" if request.url != ACCESS_TOKEN_URL: return None assert dict(parse_qsl(request.text)) == { 'client_id': 'TEST-CLIENT-ID', 'client_secret': 'TEST-CLIENT-SECRET', 'code': 'TEST-CODE', 'grant_type': 'authorization_code' } return rmock.create_response(request, json={ 'access_token': 'TEST-ACCESS-TOKEN' }) requests_mock.add_matcher(token_matcher) tokens = await registered_flow['convert_code']('TEST-CODE') assert tokens == { 'access_token': 'TEST-ACCESS-TOKEN' }