5 class AuthEventTest(mocker.Mocker):
7 return arvados_pam.auth_event.AuthEvent(config=self.config, service='test_service', **self.request).can_login()
9 def test_success(self):
10 self.assertTrue(self.attempt())
12 self.api_client.virtual_machines().list.assert_called_with(
13 filters=[['hostname','=',self.config['virtual_machine_hostname']]])
14 self.api.assert_called_with(
16 host=self.config['arvados_api_host'], token=self.request['token'],
19 self.assertEqual(1, len(self.syslogged))
20 for i in ['test_service',
21 self.request['username'],
22 self.config['arvados_api_host'],
23 self.response['virtual_machines']['items'][0]['uuid']]:
24 self.assertRegexpMatches(self.syslogged[0], re.escape(i))
25 self.assertRegexpMatches(self.syslogged[0], re.escape(self.request['token'][0:15]), 'token prefix not logged')
26 self.assertNotRegexpMatches(self.syslogged[0], re.escape(self.request['token'][15:30]), 'too much token logged')
28 def test_fail_vm_lookup(self):
29 self.api_client.virtual_machines().list().execute.side_effect = Exception("Test-induced failure")
30 self.assertFalse(self.attempt())
31 self.assertRegexpMatches(self.syslogged[0], 'Test-induced failure')
33 def test_vm_hostname_not_found(self):
34 self.response['virtual_machines'] = {
38 self.assertFalse(self.attempt())
40 def test_vm_hostname_ambiguous(self):
41 self.response['virtual_machines'] = {
44 'uuid': 'zzzzz-2x53u-382brsig8rp3065',
45 'hostname': 'testvm2.shell',
48 'uuid': 'zzzzz-2x53u-382brsig8rp3065',
49 'hostname': 'testvm2.shell',
54 self.assertFalse(self.attempt())
56 def test_server_ignores_vm_filters(self):
57 self.response['virtual_machines'] = {
60 'uuid': 'zzzzz-2x53u-382brsig8rp3065',
61 'hostname': 'testvm22.shell', # <-----
66 self.assertFalse(self.attempt())
68 def test_fail_user_lookup(self):
69 self.api_client.users().current().execute.side_effect = Exception("Test-induced failure")
70 self.assertFalse(self.attempt())
72 def test_fail_permission_check(self):
73 self.api_client.links().list().execute.side_effect = Exception("Test-induced failure")
74 self.assertFalse(self.attempt())
76 def test_no_login_permission(self):
77 self.response['links'] = {
80 self.assertFalse(self.attempt())
82 def test_server_ignores_permission_filters(self):
83 self.response['links'] = {
85 'uuid': 'zzzzz-o0j2j-rah2ya1ohx9xaev',
86 'tail_uuid': 'zzzzz-tpzed-xurymjxw79nv3jz',
87 'head_uuid': 'zzzzz-2x53u-382brsig8rp3065',
88 'link_class': 'permission',
89 'name': 'CANT_login', # <-----
95 self.assertFalse(self.attempt())