Exemple #1
0
async def async_setup_platform(opp,
                               config,
                               async_add_entities,
                               discovery_info=None):
    """Set up the Version sensor platform."""

    beta = config.get(CONF_BETA)
    image = config.get(CONF_IMAGE)
    name = config.get(CONF_NAME)
    source = config.get(CONF_SOURCE)

    session = async_get_clientsession(opp)

    channel = OpVersionChannel.BETA if beta else OpVersionChannel.STABLE

    if source == "pypi":
        haversion = VersionData(
            OpVersion(session, source=OpVersionSource.PYPI, channel=channel))
    elif source in ["oppio", "supervisor"]:
        haversion = VersionData(
            OpVersion(
                session,
                source=OpVersionSource.SUPERVISOR,
                channel=channel,
                image=image,
            ))
    elif source in ["docker", "container"]:
        if image is not None and image != DEFAULT_IMAGE:
            image = f"{image}-openpeerpower"
        haversion = VersionData(
            OpVersion(session,
                      source=OpVersionSource.CONTAINER,
                      channel=channel,
                      image=image))
    elif source == "opio":
        haversion = VersionData(OpVersion(session,
                                          source=OpVersionSource.OPIO))
    else:
        haversion = VersionData(
            OpVersion(session, source=OpVersionSource.LOCAL))

    if not name:
        if source == DEFAULT_SOURCE:
            name = DEFAULT_NAME_LOCAL
        else:
            name = DEFAULT_NAME_LATEST

    async_add_entities([VersionSensor(haversion, name)], True)
Exemple #2
0
async def test_fetch_exception():
    opversion = OpVersion()

    async def mocked_fetch_ImportError(_args):
        raise ImportError

    async def mocked_fetch_ModuleNotFoundError(_args):
        raise ModuleNotFoundError

    async def mocked_fetch_gaierror(_args):
        raise gaierror

    async def mocked_fetch_ClientError(_args):
        raise ClientError

    with patch("pyopversion.local.OpVersionLocal.fetch",
               mocked_fetch_ImportError):
        with pytest.raises(OpVersionFetchException):
            await opversion.get_version()

    with patch("pyopversion.local.OpVersionLocal.fetch",
               mocked_fetch_ModuleNotFoundError):
        with pytest.raises(OpVersionFetchException):
            await opversion.get_version()

    with patch("pyopversion.local.OpVersionLocal.fetch",
               mocked_fetch_gaierror):
        with pytest.raises(OpVersionFetchException):
            await opversion.get_version()

    with patch("pyopversion.local.OpVersionLocal.fetch",
               mocked_fetch_ClientError):
        with pytest.raises(OpVersionFetchException):
            await opversion.get_version()
async def test_beta_version_beta_week_pagination(aresponses):
    """Test container beta during beta week."""
    aresponses.add(
        "registry.hub.docker.com",
        "/v2/repositories/openpeerpower/openpeerpower/tags",
        "get",
        aresponses.Response(
            text=fixture("container/beta_week_page1", False),
            status=200,
            headers=HEADERS,
        ),
    )
    aresponses.add(
        "registry.hub.docker.com",
        "/v2/repositories/openpeerpower/openpeerpower/tags/page2",
        "get",
        aresponses.Response(
            text=fixture("container/beta_week_page2", False),
            status=200,
            headers=HEADERS,
        ),
    )

    async with aiohttp.ClientSession() as session:
        opversion = OpVersion(
            session=session,
            source=OpVersionSource.CONTAINER,
            channel=OpVersionChannel.BETA,
        )
        await opversion.get_version()
        assert opversion.version == BETA_VERSION_BETA_WEEK
Exemple #4
0
async def test_local():
    """Test ha.io/version.json stable."""
    with patch.dict(
        "sys.modules", {"openpeerpower.const": MagicMock(__version__=STABLE_VERSION)}
    ):
        async with aiohttp.ClientSession() as session:
            opversion = OpVersion(session=session, source=OpVersionSource.LOCAL)
            await opversion.get_version()
            assert opversion.version == STABLE_VERSION
Exemple #5
0
async def test_timeout_exception():
    async def mocked_fetch_TimeoutError(_args):
        raise asyncio.TimeoutError

    with patch("pyopversion.local.OpVersionLocal.fetch",
               mocked_fetch_TimeoutError):
        opversion = OpVersion()
        with pytest.raises(OpVersionFetchException):
            await opversion.get_version()
async def test_stable_version(OpVersion):
    """Test container stable."""
    with patch(
            "pyopversion.container.OpVersionContainer.data",
            fixture("container/default"),
    ):
        async with aiohttp.ClientSession() as session:
            opversion = OpVersion(session=session,
                                  source=OpVersionSource.CONTAINER)
            await opversion.get_version()
            assert opversion.version == STABLE_VERSION
async def test_stable_version_beta_week(OpVersion):
    """Test container stable during beta week."""
    with patch(
            "pyopversion.container.OpVersionContainer.data",
            fixture("container/beta_week"),
    ):
        async with aiohttp.ClientSession() as session:
            opversion = OpVersion(
                session=session,
                source=OpVersionSource.CONTAINER,
            )
            await opversion.get_version()
            assert opversion.version == STABLE_VERSION_BETA_WEEK
Exemple #8
0
async def test_stable_version(OpVersion):
    """Test pypi stable."""
    with patch(
            "pyopversion.pypi.OpVersionPypi.data",
            fixture("pypi/default"),
    ):
        async with aiohttp.ClientSession() as session:
            opversion = OpVersion(
                session=session,
                source=OpVersionSource.PYPI,
            )
            await opversion.get_version()
            assert opversion.version == STABLE_VERSION
async def test_dev_version(OpVersion):
    """Test container dev."""
    with patch(
            "pyopversion.container.OpVersionContainer.data",
            fixture("container/default"),
    ):
        async with aiohttp.ClientSession() as session:
            opversion = OpVersion(
                session=session,
                source=OpVersionSource.CONTAINER,
                channel=OpVersionChannel.DEV,
            )
            await opversion.get_version()
            assert opversion.version == DEV_VERSION
async def test_stable_version(aresponses):
    """Test Oppio stable."""
    aresponses.add(
        "version.openpeerpower.io",
        "/stable.json",
        "get",
        aresponses.Response(
            text=fixture("supervisor/default", False), status=200, headers=HEADERS
        ),
    )
    async with aiohttp.ClientSession() as session:
        opversion = OpVersion(session=session, source=OpVersionSource.SUPERVISOR)
        await opversion.get_version()
        assert opversion.version == STABLE_VERSION
Exemple #11
0
async def test_beta_version(OpVersion):
    """Test pypi beta."""
    with patch(
            "pyopversion.pypi.OpVersionPypi.data",
            fixture("pypi/beta"),
    ):
        async with aiohttp.ClientSession() as session:
            opversion = OpVersion(
                session=session,
                source=OpVersionSource.PYPI,
                channel=OpVersionChannel.BETA,
            )
            await opversion.get_version()
            assert opversion.version == BETA_VERSION
async def test_beta_version(OpVersion):
    """Test container beta."""
    with patch(
            "pyopversion.container.OpVersionContainer.data",
            fixture("container/beta_week"),
    ):
        async with aiohttp.ClientSession() as session:
            opversion = OpVersion(
                session=session,
                source=OpVersionSource.CONTAINER,
                channel=OpVersionChannel.BETA,
            )
            await opversion.get_version()
            assert opversion.version == BETA_VERSION
async def test_beta_version(OpVersion):
    """Test Oppio beta."""
    with patch(
        "pyopversion.supervisor.OpVersionSupervisor.data",
        fixture("supervisor/default"),
    ):
        async with aiohttp.ClientSession() as session:
            opversion = OpVersion(
                session=session,
                source=OpVersionSource.SUPERVISOR,
                channel=OpVersionChannel.BETA,
                board="test",
                image="test",
            )
            await opversion.get_version()
            assert opversion.version == STABLE_VERSION
Exemple #14
0
async def test_stable_version_beta_week(aresponses):
    """Test pypi stable during beta week."""
    aresponses.add(
        "pypi.org",
        "/pypi/openpeerpower/json",
        "get",
        aresponses.Response(text=fixture("pypi/beta", False),
                            status=200,
                            headers=HEADERS),
    )
    async with aiohttp.ClientSession() as session:
        opversion = OpVersion(
            session=session,
            source=OpVersionSource.PYPI,
        )
        await opversion.get_version()
        assert opversion.version == STABLE_VERSION_BETA_WEEK
Exemple #15
0
async def test_parse_exception():
    opversion = OpVersion()

    async def mocked_fetch(_args):
        pass

    def mocked_parse_KeyError(_args):
        raise KeyError

    def mocked_parse_TypeError(_args):
        raise TypeError

    with patch("pyopversion.local.OpVersionLocal.fetch", mocked_fetch):
        with patch("pyopversion.local.OpVersionLocal.parse",
                   mocked_parse_KeyError):
            with pytest.raises(OpVersionParseException):
                await opversion.get_version()

        with patch("pyopversion.local.OpVersionLocal.parse",
                   mocked_parse_TypeError):
            with pytest.raises(OpVersionParseException):
                await opversion.get_version()
async def test_input_exception(OpVersion):
    with pytest.raises(OpVersionInputException):
        OpVersion(source=OpVersionSource.SUPERVISOR)
async def test_input_exception(OpVersion):
    with pytest.raises(OpVersionInputException):
        OpVersion(source=OpVersionSource.CONTAINER)