1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
"""Tests for authentication tools"""
import unittest
import mock
from utility.authentication_tools import check_resource_availability
class TestResponse:
"""Mock Test Response after a request"""
@property
def content(self):
"""Mock the content from Requests.get(params).content"""
return '["foo"]'
class TestUser:
"""Mock user"""
@property
def user_id(self):
"""Mockes user id. Used in Flask.g.user_session.user_id"""
return "Jane"
class TestUserSession:
"""Mock user session"""
@property
def user_session(self):
"""Mock user session. Mocks Flask.g.user_session object"""
return TestUser()
class TestCheckResourceAvailability(unittest.TestCase):
"""Test methods related to checking the resource availability"""
@mock.patch('utility.authentication_tools.add_new_resource')
@mock.patch('utility.authentication_tools.Redis')
@mock.patch('utility.authentication_tools.g')
@mock.patch('utility.authentication_tools.get_resource_id')
def test_check_resource_availability_default_mask(
self,
resource_id_mock,
g_mock,
redis_mock,
add_new_resource_mock):
"""Test the resource availability with default mask"""
resource_id_mock.return_value = 1
g_mock.return_value = mock.Mock()
redis_mock.smembers.return_value = []
test_dataset = mock.MagicMock()
type(test_dataset).type = mock.PropertyMock(return_value="Test")
add_new_resource_mock.return_value = {"default_mask": 2}
self.assertEqual(check_resource_availability(test_dataset), 2)
@mock.patch('utility.authentication_tools.requests.get')
@mock.patch('utility.authentication_tools.add_new_resource')
@mock.patch('utility.authentication_tools.Redis')
@mock.patch('utility.authentication_tools.g')
@mock.patch('utility.authentication_tools.get_resource_id')
def test_check_resource_availability_non_default_mask(
self,
resource_id_mock,
g_mock,
redis_mock,
add_new_resource_mock,
requests_mock):
"""Test the resource availability with default mask"""
resource_id_mock.return_value = 1
g_mock.return_value = mock.Mock()
redis_mock.smembers.return_value = []
add_new_resource_mock.return_value = {"default_mask": 2}
requests_mock.return_value = TestResponse()
test_dataset = mock.MagicMock()
type(test_dataset).type = mock.PropertyMock(return_value="Test")
self.assertEqual(check_resource_availability(test_dataset),
['foo'])
@mock.patch('utility.authentication_tools.webqtlConfig.SUPER_PRIVILEGES',
"SUPERUSER")
@mock.patch('utility.authentication_tools.requests.get')
@mock.patch('utility.authentication_tools.add_new_resource')
@mock.patch('utility.authentication_tools.Redis')
@mock.patch('utility.authentication_tools.g', TestUserSession())
@mock.patch('utility.authentication_tools.get_resource_id')
def test_check_resource_availability_of_super_user(
self,
resource_id_mock,
redis_mock,
add_new_resource_mock,
requests_mock):
"""Test the resource availability if the user is the super user"""
resource_id_mock.return_value = 1
redis_mock.smembers.return_value = ["Jane"]
add_new_resource_mock.return_value = {"default_mask": 2}
requests_mock.return_value = TestResponse()
test_dataset = mock.MagicMock()
type(test_dataset).type = mock.PropertyMock(return_value="Test")
self.assertEqual(check_resource_availability(test_dataset),
"SUPERUSER")
@mock.patch('utility.authentication_tools.webqtlConfig.DEFAULT_PRIVILEGES',
"John Doe")
def test_check_resource_availability_string_dataset(self):
"""Test the resource availability if the dataset is a string"""
self.assertEqual(check_resource_availability("Test"),
"John Doe")
@mock.patch('utility.authentication_tools.webqtlConfig.DEFAULT_PRIVILEGES',
"John Doe")
def test_check_resource_availability_temp(self):
"""Test the resource availability if the dataset is a string"""
test_dataset = mock.MagicMock()
type(test_dataset).type = mock.PropertyMock(return_value="Temp")
self.assertEqual(check_resource_availability(test_dataset),
"John Doe")
|