예제 #1
0
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"
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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")
예제 #5
0
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)
예제 #6
0
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"
예제 #7
0
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()
예제 #8
0
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
예제 #9
0
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
예제 #10
0
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
예제 #11
0
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)
예제 #12
0
async def test_hacs_manifest_no_manifest():
    repository = dummy_repository_base()
    check = HacsManifest(repository)
    await check._async_run_check()
    assert check.failed