47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
"""Common helpers for GitHub integration tests."""
|
|
from __future__ import annotations
|
|
|
|
import json
|
|
|
|
from homeassistant import config_entries
|
|
from homeassistant.components.github.const import CONF_REPOSITORIES, DOMAIN
|
|
from homeassistant.core import HomeAssistant
|
|
|
|
from tests.common import MockConfigEntry, load_fixture
|
|
from tests.test_util.aiohttp import AiohttpClientMocker
|
|
|
|
MOCK_ACCESS_TOKEN = "gho_16C7e42F292c6912E7710c838347Ae178B4a"
|
|
TEST_REPOSITORY = "octocat/Hello-World"
|
|
|
|
|
|
async def setup_github_integration(
|
|
hass: HomeAssistant,
|
|
mock_config_entry: MockConfigEntry,
|
|
aioclient_mock: AiohttpClientMocker,
|
|
) -> None:
|
|
"""Mock setting up the integration."""
|
|
headers = json.loads(load_fixture("base_headers.json", DOMAIN))
|
|
for idx, repository in enumerate(mock_config_entry.options[CONF_REPOSITORIES]):
|
|
aioclient_mock.get(
|
|
f"https://api.github.com/repos/{repository}",
|
|
json={
|
|
**json.loads(load_fixture("repository.json", DOMAIN)),
|
|
"full_name": repository,
|
|
"id": idx,
|
|
},
|
|
headers=headers,
|
|
)
|
|
for endpoint in ("issues", "pulls", "releases", "commits"):
|
|
aioclient_mock.get(
|
|
f"https://api.github.com/repos/{repository}/{endpoint}",
|
|
json=json.loads(load_fixture(f"{endpoint}.json", DOMAIN)),
|
|
headers=headers,
|
|
)
|
|
mock_config_entry.add_to_hass(hass)
|
|
|
|
setup_result = await hass.config_entries.async_setup(mock_config_entry.entry_id)
|
|
await hass.async_block_till_done()
|
|
|
|
assert setup_result
|
|
assert mock_config_entry.state == config_entries.ConfigEntryState.LOADED
|