lazyBoy/scripts/cua-session-test.py

23 lines
1.2 KiB
Python

#!/usr/bin/env python3
"""Exercise recovery from Cua lifecycle-session expiry on a disposable desktop."""
import importlib.machinery
import importlib.util
loader = importlib.machinery.SourceFileLoader('adapter', '/usr/local/bin/lazyboy-cua-adapter-test')
spec = importlib.util.spec_from_loader(loader.name, loader)
adapter = importlib.util.module_from_spec(spec)
loader.exec_module(adapter)
adapter.wait_health()
# Mint and cache a browser binding before the session is lost.
adapter.api('/browser', {'action': 'snapshot', 'ensure': True})
adapter.smoke.cua_call('end_session', {'session': 'lazyboy-1'})
frame = adapter.observe()
assert frame['png_base64'], 'read-only recovery must return a shared-desktop frame'
page = adapter.api('/browser', {'action': 'snapshot', 'ensure': True})
assert page['ok'], 'the cached browser binding must be refreshed after session revival'
# A mutation presented directly after expiry must be rejected, not replayed.
adapter.smoke.cua_call('end_session', {'session': 'lazyboy-1'})
adapter.act({'kind': 'key', 'key': 'a'}, expect_error=True)
adapter.observe()
print('Cua session expiry: observation recovered, browser rebound, mutation not replayed', flush=True)