moz_permanent.py (2215B)
1 import pytest 2 from support.addons import is_addon_temporary_installed 3 from support.helpers import clear_pref, set_pref 4 from tests.bidi.web_extension import assert_extension_id 5 from webdriver.bidi import error 6 7 pytestmark = pytest.mark.asyncio 8 9 10 @pytest.mark.allow_system_access 11 @pytest.mark.parametrize( 12 "permanent", [None, False, True], ids=["default", "temporary", "permanent"] 13 ) 14 @pytest.mark.parametrize("mode", ["archivePath", "base64", "path"]) 15 @pytest.mark.parametrize("signed", [True, False], ids=["signed", "unsigned"]) 16 async def test_install_with_permanent( 17 bidi_session, current_session, extension_data, mode, permanent, signed 18 ): 19 if mode == "path" and signed: 20 # Unpacked extensions are not signed 21 return 22 data = {"type": mode} 23 unsigned_tag = "" if signed or mode == "path" else "Unsigned" 24 extension_data_value = extension_data[f"{mode}{unsigned_tag}"] 25 if mode == "base64": 26 data.update({"value": extension_data_value}) 27 else: 28 data.update({"path": extension_data_value}) 29 30 extension_params = {"moz:permanent": permanent} if permanent is not None else {} 31 32 if permanent and not signed: 33 try: 34 with pytest.raises(error.InvalidWebExtensionException): 35 set_pref(current_session, "xpinstall.signatures.required", True) 36 await bidi_session.web_extension.install( 37 extension_data=data, 38 _extension_params=extension_params, 39 ) 40 finally: 41 clear_pref(current_session, "xpinstall.signatures.required") 42 return 43 44 try: 45 set_pref(current_session, "xpinstall.signatures.required", True) 46 web_extension = await bidi_session.web_extension.install( 47 extension_data=data, 48 _extension_params=extension_params, 49 ) 50 51 assert_extension_id(web_extension, extension_data) 52 assert is_addon_temporary_installed(current_session, web_extension) is not bool( 53 permanent 54 ) 55 finally: 56 # Clean up the extension. 57 clear_pref(current_session, "xpinstall.signatures.required") 58 await bidi_session.web_extension.uninstall(extension=web_extension)