Co-authored-by: alan <alan@lnbits.com> Co-authored-by: Tiago Vasconcelos <talvasconcelos@gmail.com>
58 lines
2.4 KiB
Python
58 lines
2.4 KiB
Python
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
|