def test_info_file_render_readme(): repository = dummy_repository_base() repository.data.render_readme = True repository.treefiles.append("info.md") assert not info_file(repository) repository = dummy_repository_base() repository.data.render_readme = True repository.treefiles.append("readme") assert info_file(repository) == "readme" repository = dummy_repository_base() repository.data.render_readme = True repository.treefiles.append("README") assert info_file(repository) == "README" repository = dummy_repository_base() repository.data.render_readme = True repository.treefiles.append("readme.md") assert info_file(repository) == "readme.md" repository = dummy_repository_base() repository.data.render_readme = True repository.treefiles.append("README.MD") assert info_file(repository) == "README.MD"
async def test_common_base_exception_does_not_exsist(aresponses, event_loop): aresponses.add( "api.github.com", "/rate_limit", "get", aresponses.Response(headers=response_rate_limit_header_with_limit, status=500), ) aresponses.add( "api.github.com", "/repos/test/test", "get", aresponses.Response( body=json.dumps({"message": "X"}), headers=response_rate_limit_header_with_limit, status=500, ), ) async with aiohttp.ClientSession(loop=event_loop) as session: hacs = get_hacs() hacs.session = session hacs.configuration = Configuration() hacs.configuration.token = TOKEN hacs.system.status.startup = False repository = dummy_repository_base() with pytest.raises(HacsException): await common_validate(repository)
async def test_common_blacklist(aresponses, event_loop): aresponses.add( "api.github.com", "/rate_limit", "get", aresponses.Response(body=b"{}", headers=response_rate_limit_header, status=200), ) aresponses.add( "api.github.com", "/repos/test/test", "get", aresponses.Response(body=json.dumps(repository_data), headers=response_rate_limit_header), ) async with aiohttp.ClientSession(loop=event_loop) as session: hacs = get_hacs() hacs.session = session hacs.configuration = Configuration() hacs.configuration.token = TOKEN removed = get_removed("test/test") assert removed.repository == "test/test" repository = dummy_repository_base() with pytest.raises(HacsException): await common_validate(repository)
async def test_download_content(aresponses, tmp_path, event_loop): aresponses.add( "raw.githubusercontent.com", "/test/test/master/test/path/file.file", "get", aresponses.Response(body="test", headers=response_rate_limit_header), ) repository = dummy_repository_base() repository.content.path.remote = "" repository.content.path.local = tmp_path repository.tree = [ AIOGitHubAPIRepositoryTreeContent( { "path": "test/path/file.file", "type": "blob" }, "test/test", "master") ] async with aiohttp.ClientSession(loop=event_loop) as session: hacs = get_hacs() hacs.hass.loop = event_loop hacs.session = session await download_content(repository) assert os.path.exists( f"{repository.content.path.local}/test/path/file.file")
async def test_common_base_exception_tree_issues(aresponses, event_loop): aresponses.add( "api.github.com", "/rate_limit", "get", aresponses.Response(body=b"{}", headers=response_rate_limit_header, status=200), ) aresponses.add( "api.github.com", "/repos/test/test", "get", aresponses.Response(body=json.dumps(repository_data), headers=response_rate_limit_header), ) aresponses.add( "api.github.com", "/rate_limit", "get", aresponses.Response(body=b"{}", headers=response_rate_limit_header, status=200), ) aresponses.add( "api.github.com", "/repos/test/test/releases", "get", aresponses.Response(body=json.dumps(release_data), headers=response_rate_limit_header), ) aresponses.add( "api.github.com", "/rate_limit", "get", aresponses.Response(body=b"{}", headers=response_rate_limit_header, status=200), ) aresponses.add( "api.github.com", "/repos/test/test/git/trees/3", "get", aresponses.Response(body=json.dumps({"message": "X"}), headers=response_rate_limit_header), ) async with aiohttp.ClientSession(loop=event_loop) as session: hacs = get_hacs() hacs.session = session hacs.configuration = Configuration() hacs.configuration.token = TOKEN repository = dummy_repository_base() hacs.common.blacklist = [] hacs.system.status.startup = False with pytest.raises(HacsException): await common_validate(repository)
def test_info_file(): repository = dummy_repository_base() assert not info_file(repository) repository = dummy_repository_base() repository.treefiles.append("info") assert info_file(repository) == "info" repository = dummy_repository_base() repository.treefiles.append("INFO") assert info_file(repository) == "INFO" repository = dummy_repository_base() repository.treefiles.append("info.md") assert info_file(repository) == "info.md" repository = dummy_repository_base() repository.treefiles.append("INFO.MD") assert info_file(repository) == "INFO.MD"
async def test_hacs_data_async_write1(tmpdir): data = HacsData() hacs = get_hacs() repository = dummy_repository_base() repository.data.installed = True repository.data.installed_version = "1" hacs.repositories = [repository] hacs.hass = HomeAssistant() hacs.hass.config.config_dir = tmpdir hacs.configuration = Configuration() await data.async_write()
async def test_hacs_manifest_with_manifest(): repository = dummy_repository_base() repository.tree = [ AIOGitHubAPIRepositoryTreeContent({ "path": "hacs.json", "type": "file" }, "test/test", "master") ] check = HacsManifest(repository) await check._async_run_check() assert not check.failed
def test_version_to_install(): repository = dummy_repository_base() repository.status.selected_tag = "master" assert version_to_install(repository) == "master" repository = dummy_repository_base() repository.information.default_branch = None repository.versions.available = None repository.status.selected_tag = None assert version_to_install(repository) == "master" repository = dummy_repository_base() repository.status.selected_tag = "2" assert version_to_install(repository) == "2" repository = dummy_repository_base() repository.status.selected_tag = None assert version_to_install(repository) == "3" repository = dummy_repository_base() repository.status.selected_tag = None repository.versions.available = None assert version_to_install(repository) == "master" repository = dummy_repository_base() repository.status.selected_tag = "2" repository.versions.available = None assert version_to_install(repository) == "2" repository = dummy_repository_base() repository.status.selected_tag = "master" repository.versions.available = None assert version_to_install(repository) == "master" repository = dummy_repository_base() repository.status.selected_tag = "3" repository.versions.available = "3" version_to_install(repository) assert repository.status.selected_tag is None
async def test_get_releases_exception(aresponses, event_loop): aresponses.add( "api.github.com", "/rate_limit", "get", aresponses.Response(body=b"{}", headers=response_rate_limit_header, status=200), ) aresponses.add( "api.github.com", "/repos/test/test", "get", aresponses.Response(body=json.dumps(repository_data), headers=response_rate_limit_header), ) aresponses.add( "api.github.com", "/rate_limit", "get", aresponses.Response( body=json.dumps({"message": "X"}), headers=response_rate_limit_header_with_limit, status=403, ), ) aresponses.add( "api.github.com", "/rate_limit", "get", aresponses.Response(body=b"{}", headers=response_rate_limit_header, status=200), ) aresponses.add( "api.github.com", "/repos/test/test/git/trees/3", "get", aresponses.Response(body=json.dumps(tree_files_base), headers=response_rate_limit_header), ) aresponses.add( "api.github.com", "/rate_limit", "get", aresponses.Response(body=b"{}", headers=response_rate_limit_header, status=200), ) aresponses.add( "api.github.com", "/repos/test/test/contents/hacs.json", "get", aresponses.Response(body=json.dumps({}), headers=response_rate_limit_header), ) aresponses.add( "api.github.com", "/repos/test/test/releases", "get", aresponses.Response( body=json.dumps(release_data), headers=response_rate_limit_header_with_limit, status=403, ), ) async with aiohttp.ClientSession(loop=event_loop) as session: hacs = get_hacs() hacs.session = session hacs.configuration = Configuration() hacs.configuration.token = TOKEN repository = dummy_repository_base() repository.ref = None await common_validate(repository) assert not repository.data.releases
def test_no_releases(): repository = dummy_repository_base() repository.ref = "dummy" repository.data.category = "plugin" repository.data.releases = False assert not should_try_releases(repository)
async def test_hacs_manifest_no_manifest(): repository = dummy_repository_base() check = HacsManifest(repository) await check._async_run_check() assert check.failed