import pytest
from support.addons import get_ids_for_installed_addons
from tests.support.asserts import assert_error, assert_success
from tests.support.helpers import get_base64_for_extension_file

from . import install_addon, uninstall_addon


def test_uninstall_nonexistent_addon(session):
    response = uninstall_addon(session, "i-do-not-exist-as-an-id")
    assert_error(response, "unknown error")


@pytest.mark.allow_system_access
@pytest.mark.parametrize(
    "filename, temporary",
    [("firefox/signed.xpi", True), ("firefox/unsigned.xpi", False)],
)
def test_uninstall_addon(session, filename, temporary):
    response = install_addon(
        session, "addon", get_base64_for_extension_file(filename), temporary
    )
    addon_id = assert_success(response)

    installed_addon_ids = get_ids_for_installed_addons(session)

    assert addon_id in installed_addon_ids

    response = uninstall_addon(session, addon_id)
    assert_success(response)

    installed_addon_ids = get_ids_for_installed_addons(session)

    assert addon_id not in installed_addon_ids
