|
1 | 1 | from unittest import mock
|
| 2 | +from unittest.mock import sentinel |
2 | 3 |
|
3 | 4 | import pytest
|
| 5 | +from pretend import stub |
4 | 6 |
|
5 | 7 | from magic_admin.resources.user import User
|
| 8 | +from magic_admin.resources.wallet import WalletType |
6 | 9 | from testing.data.did_token import future_did_token
|
7 |
| -from testing.data.did_token import issuer |
8 | 10 | from testing.data.did_token import public_address
|
9 | 11 |
|
10 | 12 |
|
11 | 13 | class TestUser:
|
12 | 14 |
|
| 15 | + metadata_with_wallets = stub( |
| 16 | + data=stub( |
| 17 | + email=sentinel.email, |
| 18 | + issuer=sentinel.issuer, |
| 19 | + public_address=sentinel.public_address, |
| 20 | + wallets=[ |
| 21 | + stub( |
| 22 | + network=sentinel.network, |
| 23 | + wallet_type=WalletType.ETH.value, |
| 24 | + public_address=sentinel.public_address_1, |
| 25 | + ), |
| 26 | + stub( |
| 27 | + network=sentinel.network, |
| 28 | + wallet_type=WalletType.ETH.value, |
| 29 | + public_address=sentinel.public_address_2, |
| 30 | + ), |
| 31 | + stub( |
| 32 | + network=sentinel.network, |
| 33 | + wallet_type=WalletType.ETH.value, |
| 34 | + public_address=sentinel.public_address_3, |
| 35 | + ), |
| 36 | + ], |
| 37 | + ), |
| 38 | + error_code=sentinel.error_code, |
| 39 | + message=sentinel.message, |
| 40 | + status=sentinel.status, |
| 41 | + ) |
| 42 | + |
| 43 | + metadata_no_wallets = stub( |
| 44 | + data=stub( |
| 45 | + email=sentinel.email, |
| 46 | + issuer=sentinel.issuer, |
| 47 | + public_address=sentinel.public_address, |
| 48 | + ), |
| 49 | + error_code=sentinel.error_code, |
| 50 | + message=sentinel.message, |
| 51 | + status=sentinel.ok, |
| 52 | + ) |
| 53 | + |
13 | 54 | @pytest.fixture(autouse=True)
|
14 | 55 | def setup(self):
|
15 | 56 | self.user = User()
|
| 57 | + self.user.Token = mock.Mock() |
16 | 58 |
|
17 | 59 | @pytest.fixture
|
18 |
| - def mock_get_metadata_by_issuer(self): |
19 |
| - with mock.patch.object( |
20 |
| - self.user, |
21 |
| - 'get_metadata_by_issuer', |
22 |
| - ) as mock_get_metadata_by_issuer: |
23 |
| - yield mock_get_metadata_by_issuer |
24 |
| - |
25 |
| - @pytest.fixture |
26 |
| - def mock_logout_by_issuer(self): |
27 |
| - with mock.patch.object( |
28 |
| - self.user, |
29 |
| - 'logout_by_issuer', |
30 |
| - ) as mock_logout_by_issuer: |
31 |
| - yield mock_logout_by_issuer |
32 |
| - |
33 |
| - @pytest.fixture |
34 |
| - def mock_construct_issuer_with_public_address(self): |
35 |
| - with mock.patch( |
| 60 | + def mock_construct_issuer_with_public_address(self, mocker): |
| 61 | + return mocker.patch( |
36 | 62 | 'magic_admin.resources.user.construct_issuer_with_public_address',
|
37 |
| - ) as mock_construct_issuer_with_public_address: |
38 |
| - yield mock_construct_issuer_with_public_address |
| 63 | + return_value=sentinel.public_address, |
| 64 | + ) |
39 | 65 |
|
40 | 66 | def test_get_metadata_by_issuer(self):
|
41 |
| - with mock.patch.object( |
42 |
| - self.user, |
43 |
| - 'request', |
44 |
| - ) as mock_request: |
45 |
| - assert self.user.get_metadata_by_issuer(issuer) == mock_request.return_value |
| 67 | + self.user.get_metadata_by_issuer_and_wallet = mock.Mock( |
| 68 | + return_value=self.metadata_no_wallets, |
| 69 | + ) |
| 70 | + |
| 71 | + assert self.user.get_metadata_by_issuer( |
| 72 | + sentinel.issuer, |
| 73 | + ) == self.metadata_no_wallets |
| 74 | + |
| 75 | + self.user.get_metadata_by_issuer_and_wallet.assert_called_once_with( |
| 76 | + sentinel.issuer, |
| 77 | + WalletType.NONE, |
| 78 | + ) |
| 79 | + |
| 80 | + def test_get_metadata_by_issuer_and_any_wallet(self): |
| 81 | + self.user.request = mock.Mock(return_value=self.metadata_with_wallets) |
46 | 82 |
|
47 |
| - mock_request.assert_called_once_with( |
| 83 | + assert self.user.get_metadata_by_issuer_and_wallet( |
| 84 | + sentinel.issuer, |
| 85 | + WalletType.ANY, |
| 86 | + ) == self.metadata_with_wallets |
| 87 | + |
| 88 | + self.user.request.assert_called_once_with( |
48 | 89 | 'get',
|
49 | 90 | self.user.v1_user_info,
|
50 |
| - params={'issuer': issuer}, |
| 91 | + params={ |
| 92 | + 'issuer': sentinel.issuer, |
| 93 | + 'wallet_type': WalletType.ANY, |
| 94 | + }, |
| 95 | + ) |
| 96 | + |
| 97 | + def test_get_metadata_by_token(self): |
| 98 | + self.user.get_metadata_by_issuer = mock.Mock(return_value=self.metadata_no_wallets) |
| 99 | + |
| 100 | + assert self.user.get_metadata_by_token( |
| 101 | + future_did_token, |
| 102 | + ) == self.user.get_metadata_by_issuer.return_value |
| 103 | + |
| 104 | + self.user.Token.get_issuer.assert_called_once_with(future_did_token) |
| 105 | + self.user.get_metadata_by_issuer.assert_called_once_with( |
| 106 | + self.user.Token.get_issuer.return_value, |
| 107 | + ) |
| 108 | + |
| 109 | + def test_get_metadata_by_token_and_any_wallet(self): |
| 110 | + self.user.get_metadata_by_issuer_and_wallet = mock.Mock( |
| 111 | + return_value=self.metadata_with_wallets, |
| 112 | + ) |
| 113 | + |
| 114 | + assert self.user.get_metadata_by_token_and_wallet( |
| 115 | + future_did_token, |
| 116 | + WalletType.ANY, |
| 117 | + ) == self.user.get_metadata_by_issuer_and_wallet.return_value |
| 118 | + |
| 119 | + self.user.Token.get_issuer.assert_called_once_with(future_did_token) |
| 120 | + self.user.get_metadata_by_issuer_and_wallet.assert_called_once_with( |
| 121 | + self.user.Token.get_issuer.return_value, |
| 122 | + WalletType.ANY, |
51 | 123 | )
|
52 | 124 |
|
53 | 125 | def test_get_metadata_by_public_address(
|
54 | 126 | self,
|
55 |
| - mock_get_metadata_by_issuer, |
56 | 127 | mock_construct_issuer_with_public_address,
|
57 | 128 | ):
|
| 129 | + self.user.get_metadata_by_issuer = mock.Mock(return_value=self.metadata_no_wallets) |
| 130 | + |
58 | 131 | assert self.user.get_metadata_by_public_address(
|
59 |
| - public_address, |
60 |
| - ) == mock_get_metadata_by_issuer.return_value |
| 132 | + sentinel.public_address, |
| 133 | + ) == self.user.get_metadata_by_issuer.return_value |
61 | 134 |
|
62 | 135 | mock_construct_issuer_with_public_address.assert_called_once_with(
|
63 |
| - public_address, |
| 136 | + sentinel.public_address, |
64 | 137 | )
|
65 |
| - mock_get_metadata_by_issuer.assert_called_once_with( |
| 138 | + self.user.get_metadata_by_issuer.assert_called_once_with( |
66 | 139 | mock_construct_issuer_with_public_address.return_value,
|
67 | 140 | )
|
68 | 141 |
|
69 |
| - def test_get_metadata_by_token(self, mock_get_metadata_by_issuer): |
70 |
| - self.user.Token = mock.Mock() |
| 142 | + def test_get_metadata_by_public_address_and_any_wallet( |
| 143 | + self, |
| 144 | + mock_construct_issuer_with_public_address, |
| 145 | + ): |
| 146 | + self.user.get_metadata_by_issuer_and_wallet = mock.Mock( |
| 147 | + return_value=self.metadata_with_wallets, |
| 148 | + ) |
71 | 149 |
|
72 |
| - assert self.user.get_metadata_by_token( |
73 |
| - future_did_token, |
74 |
| - ) == mock_get_metadata_by_issuer.return_value |
| 150 | + assert self.user.get_metadata_by_public_address_and_wallet( |
| 151 | + sentinel.public_address, |
| 152 | + WalletType.ANY, |
| 153 | + ) == self.user.get_metadata_by_issuer_and_wallet.return_value |
75 | 154 |
|
76 |
| - self.user.Token.get_issuer.assert_called_once_with(future_did_token) |
77 |
| - mock_get_metadata_by_issuer.assert_called_once_with( |
78 |
| - self.user.Token.get_issuer.return_value, |
| 155 | + mock_construct_issuer_with_public_address.assert_called_once_with( |
| 156 | + sentinel.public_address, |
| 157 | + ) |
| 158 | + self.user.get_metadata_by_issuer_and_wallet.assert_called_once_with( |
| 159 | + mock_construct_issuer_with_public_address.return_value, |
| 160 | + WalletType.ANY, |
79 | 161 | )
|
80 | 162 |
|
81 | 163 | def test_logout_by_issuer(self):
|
82 |
| - with mock.patch.object( |
83 |
| - self.user, |
84 |
| - 'request', |
85 |
| - ) as mock_request: |
86 |
| - assert self.user.logout_by_issuer(issuer) == mock_request.return_value |
| 164 | + self.user.request = mock.Mock() |
| 165 | + |
| 166 | + assert self.user.logout_by_issuer( |
| 167 | + sentinel.issuer, |
| 168 | + ) |
87 | 169 |
|
88 |
| - mock_request.assert_called_once_with( |
| 170 | + self.user.request.assert_called_once_with( |
89 | 171 | 'post',
|
90 | 172 | self.user.v2_user_logout,
|
91 |
| - data={'issuer': issuer}, |
| 173 | + data={ |
| 174 | + 'issuer': sentinel.issuer, |
| 175 | + }, |
92 | 176 | )
|
93 | 177 |
|
94 | 178 | def test_logout_by_public_address(
|
95 | 179 | self,
|
96 |
| - mock_logout_by_issuer, |
97 | 180 | mock_construct_issuer_with_public_address,
|
98 | 181 | ):
|
| 182 | + self.user.logout_by_issuer = mock.Mock() |
| 183 | + |
99 | 184 | assert self.user.logout_by_public_address(
|
100 | 185 | public_address,
|
101 |
| - ) == mock_logout_by_issuer.return_value |
| 186 | + ) == self.user.logout_by_issuer.return_value |
102 | 187 |
|
103 | 188 | mock_construct_issuer_with_public_address.assert_called_once_with(
|
104 | 189 | public_address,
|
105 | 190 | )
|
106 |
| - mock_logout_by_issuer.assert_called_once_with( |
| 191 | + self.user.logout_by_issuer.assert_called_once_with( |
107 | 192 | mock_construct_issuer_with_public_address.return_value,
|
108 | 193 | )
|
109 | 194 |
|
110 |
| - def test_logout_by_token(self, mock_logout_by_issuer): |
111 |
| - self.user.Token = mock.Mock() |
| 195 | + def test_logout_by_token(self): |
| 196 | + self.user.logout_by_issuer = mock.Mock() |
112 | 197 |
|
113 | 198 | assert self.user.logout_by_token(
|
114 | 199 | future_did_token,
|
115 |
| - ) == mock_logout_by_issuer.return_value |
| 200 | + ) == self.user.logout_by_issuer.return_value |
116 | 201 |
|
117 | 202 | self.user.Token.get_issuer.assert_called_once_with(future_did_token)
|
118 |
| - mock_logout_by_issuer.assert_called_once_with( |
| 203 | + self.user.logout_by_issuer.assert_called_once_with( |
119 | 204 | self.user.Token.get_issuer.return_value,
|
120 | 205 | )
|
0 commit comments