feat: Extensions for all (#4021)
Co-authored-by: alan <alan@lnbits.com> Co-authored-by: Tiago Vasconcelos <talvasconcelos@gmail.com>
This commit is contained in:
co-authored by
alan
Tiago Vasconcelos
parent
43900dd6da
commit
61ed636df0
@@ -0,0 +1,57 @@
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[2]
|
||||
|
||||
|
||||
def test_wasm_frontend_assets_are_registered_in_component_bundle():
|
||||
package_json = json.loads((ROOT / "package.json").read_text(encoding="utf-8"))
|
||||
components = package_json["bundle"]["components"]
|
||||
|
||||
assert "js/wasm-extension-component.js" in components
|
||||
assert "js/components/lnbits-extension-permissions.js" in components
|
||||
assert "js/components/admin/lnbits-admin-wasm-runtime.js" in components
|
||||
assert "js/components/admin/lnbits-admin-wasm-limit-config.js" in components
|
||||
|
||||
|
||||
def test_wasm_frontend_bridge_restricts_api_routes_and_payment_actions():
|
||||
bridge = (ROOT / "lnbits/static/js/wasm-extension-component.js").read_text(
|
||||
encoding="utf-8"
|
||||
)
|
||||
|
||||
assert "allowedApiRoute(method, path)" in bridge
|
||||
assert "url.origin !== window.location.origin" in bridge
|
||||
assert "Extension API route is not allowed." in bridge
|
||||
assert "message.action === 'payment.subscribe'" in bridge
|
||||
assert "message.action === 'payment.unsubscribe'" in bridge
|
||||
assert "message.action === 'ui.scan_qr'" in bridge
|
||||
|
||||
|
||||
def test_wasm_extension_install_ui_requests_permissions_before_install_paths():
|
||||
extensions_page = (ROOT / "lnbits/static/js/pages/extensions.js").read_text(
|
||||
encoding="utf-8"
|
||||
)
|
||||
wasm_bulk_update_skip_message = (
|
||||
"Skipping ${ext.id}; this extension update requires permission approval."
|
||||
)
|
||||
|
||||
assert "await this.resolveExtensionPermissionGrant(release)" in extensions_page
|
||||
assert "permissions: grantedPermissions" in extensions_page
|
||||
assert "release.extension_type === 'wasm'" in extensions_page
|
||||
assert "this.selectedExtension?.isWasm === true" in extensions_page
|
||||
assert wasm_bulk_update_skip_message in extensions_page
|
||||
|
||||
|
||||
def test_wasm_admin_frontend_calls_runtime_limit_and_invocation_endpoints():
|
||||
runtime = (
|
||||
ROOT / "lnbits/static/js/components/admin/lnbits-admin-wasm-runtime.js"
|
||||
).read_text(encoding="utf-8")
|
||||
limits = (
|
||||
ROOT / "lnbits/static/js/components/admin/lnbits-admin-wasm-limit-config.js"
|
||||
).read_text(encoding="utf-8")
|
||||
|
||||
assert "/api/v1/extension/wasm/invocations/current" in runtime
|
||||
assert "/api/v1/extension/wasm/invocations?" in runtime
|
||||
assert "/api/v1/extension/wasm/invocations/stats?" in runtime
|
||||
assert "/api/v1/extension/wasm/runtime-limits/extensions" in limits
|
||||
assert "/api/v1/extension/wasm/runtime-limits/${encodeURIComponent(" in limits
|
||||
Reference in New Issue
Block a user