Merge branch '8784-dir-listings'
[arvados.git] / sdk / pam / tests / mocker.py
1 # Copyright (C) The Arvados Authors. All rights reserved.
2 #
3 # SPDX-License-Identifier: Apache-2.0
4
5 import mock
6 import unittest
7
8 class Mocker(unittest.TestCase):
9     ACTIVE_TOKEN = '3kg6k6lzmp9kj5cpkcoxie963cmvjahbt2fod9zru30k1jqdmi'
10
11     default_config = {
12         'arvados_api_host': 'zzzzz.api_host.example',
13         'virtual_machine_hostname': 'testvm2.shell',
14     }
15     default_request = {
16         'client_host': '::1',
17         'token': ACTIVE_TOKEN,
18         'username': 'active',
19     }
20     default_response = {
21         'links': {
22             'items': [{
23                 'uuid': 'zzzzz-o0j2j-rah2ya1ohx9xaev',
24                 'tail_uuid': 'zzzzz-tpzed-xurymjxw79nv3jz',
25                 'head_uuid': 'zzzzz-2x53u-382brsig8rp3065',
26                 'link_class': 'permission',
27                 'name': 'can_login',
28                 'properties': {
29                     'username': 'active',
30                 },
31             }],
32         },
33         'users': {
34             'uuid': 'zzzzz-tpzed-xurymjxw79nv3jz',
35             'full_name': 'Active User',
36         },
37         'virtual_machines': {
38             'items': [{
39                 'uuid': 'zzzzz-2x53u-382brsig8rp3065',
40                 'hostname': 'testvm2.shell',
41             }],
42             'items_available': 1,
43         },
44     }
45
46     def setUp(self):
47         self.config = self.default_config.copy()
48         self.request = self.default_request.copy()
49         self.response = self.default_response.copy()
50         self.api_client = mock.MagicMock(name='api_client')
51         self.api_client.users().current().execute.side_effect = lambda: self.response['users']
52         self.api_client.virtual_machines().list().execute.side_effect = lambda: self.response['virtual_machines']
53         self.api_client.links().list().execute.side_effect = lambda: self.response['links']
54         patcher = mock.patch('arvados.api')
55         self.api = patcher.start()
56         self.addCleanup(patcher.stop)
57         self.api.side_effect = [self.api_client]
58
59         self.syslogged = []
60         patcher = mock.patch('syslog.syslog')
61         self.syslog = patcher.start()
62         self.addCleanup(patcher.stop)
63         self.syslog.side_effect = lambda s: self.syslogged.append(s)