railiance-platform/tests/test_operator_browser.py

25 lines
1.5 KiB
Python
Raw Normal View History

import runpy
from pathlib import Path
import unittest
from urllib.parse import urlencode
launcher=runpy.run_path(str(Path(__file__).resolve().parents[1]/'scripts/operator-browser/xdg-open'))
allowed=launcher['allowed']
launch_argv=launcher['launch_argv']
class BrowserBoundary(unittest.TestCase):
def test_approved_flow(self):
self.assertTrue(allowed('https://kc.coulomb.social/authorize?'+urlencode({'redirect_uri':'http://localhost:8250/oidc/callback','state':'test'})))
def test_other_destination_rejected(self):
for host in ['evil.example','kc.coulomb.social.evil.example','user@kc.coulomb.social']:
self.assertFalse(allowed('https://'+host+'/?'+urlencode({'redirect_uri':'http://localhost:8250/oidc/callback'})))
def test_unapproved_callback_rejected(self):
self.assertFalse(allowed('https://kc.coulomb.social/?'+urlencode({'redirect_uri':'https://evil.example'})))
def test_duplicate_callback_rejected(self):
self.assertFalse(allowed('https://kc.coulomb.social/?redirect_uri=http://localhost:8250/oidc/callback&redirect_uri=https://evil.example'))
def test_launch_uses_empty_profile(self):
url='https://kc.coulomb.social/authorize?'+urlencode({'redirect_uri':'http://localhost:8250/oidc/callback'})
argv=launch_argv(r'C:\Edge\msedge.exe', r'C:\fresh\profile', url)
self.assertEqual(argv[0], r'C:\Edge\msedge.exe')
self.assertIn(r'--user-data-dir=C:\fresh\profile', argv)
self.assertEqual(argv[-1], url)
self.assertNotIn('explorer.exe', ' '.join(argv))