aa-ledger 0.9.9__py3-none-any.whl → 0.9.9.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {aa_ledger-0.9.9.dist-info → aa_ledger-0.9.9.1.dist-info}/METADATA +1 -1
- {aa_ledger-0.9.9.dist-info → aa_ledger-0.9.9.1.dist-info}/RECORD +77 -77
- ledger/__init__.py +9 -9
- ledger/api/api_helper/billboard_helper.py +277 -277
- ledger/api/ledger/admin.py +289 -289
- ledger/app_settings.py +50 -50
- ledger/constants.py +5 -0
- ledger/decorators.py +92 -11
- ledger/helpers/alliance.py +353 -334
- ledger/helpers/character.py +260 -260
- ledger/helpers/core.py +565 -565
- ledger/helpers/corporation.py +455 -421
- ledger/helpers/etag.py +237 -237
- ledger/helpers/ref_type.py +475 -475
- ledger/locale/cs_CZ/LC_MESSAGES/django.po +942 -942
- ledger/locale/de/LC_MESSAGES/django.po +961 -961
- ledger/locale/django.pot +942 -942
- ledger/locale/es/LC_MESSAGES/django.po +943 -943
- ledger/locale/fr_FR/LC_MESSAGES/django.po +942 -942
- ledger/locale/it_IT/LC_MESSAGES/django.po +942 -942
- ledger/locale/ja/LC_MESSAGES/django.po +943 -943
- ledger/locale/ko_KR/LC_MESSAGES/django.po +942 -942
- ledger/locale/nl_NL/LC_MESSAGES/django.po +942 -942
- ledger/locale/pl_PL/LC_MESSAGES/django.po +942 -942
- ledger/locale/ru/LC_MESSAGES/django.po +945 -945
- ledger/locale/sk/LC_MESSAGES/django.po +944 -944
- ledger/locale/uk/LC_MESSAGES/django.po +946 -946
- ledger/locale/zh_Hans/LC_MESSAGES/django.po +943 -943
- ledger/managers/character_mining_manager.py +239 -239
- ledger/managers/character_planetary_manager.py +1 -1
- ledger/migrations/0016_characterminingledger_price_per_unit.py +21 -21
- ledger/models/characteraudit.py +496 -496
- ledger/static/ledger/css/cards.css +1 -1
- ledger/static/ledger/css/table.css +1 -1
- ledger/static/ledger/js/charts.js +221 -221
- ledger/static/ledger/js/planetary.js +143 -143
- ledger/tasks.py +442 -449
- ledger/templates/ledger/allyledger/admin/alliance_administration.html +46 -46
- ledger/templates/ledger/allyledger/admin/alliance_overview.html +108 -108
- ledger/templates/ledger/allyledger/alliance_ledger.html +86 -86
- ledger/templates/ledger/bundles/ally-administration-bundles.html +59 -59
- ledger/templates/ledger/bundles/char-administration-bundles.html +66 -66
- ledger/templates/ledger/bundles/character-ledger-bundles.html +66 -66
- ledger/templates/ledger/bundles/corp-administration-bundles.html +68 -68
- ledger/templates/ledger/bundles/corporation-ledger-bundles.html +75 -75
- ledger/templates/ledger/charledger/admin/character_administration.html +39 -39
- ledger/templates/ledger/charledger/admin/character_overview.html +106 -106
- ledger/templates/ledger/charledger/character_ledger.html +94 -94
- ledger/templates/ledger/charledger/planetary/planetary_ledger.html +54 -54
- ledger/templates/ledger/corpledger/admin/corporation_administration.html +39 -39
- ledger/templates/ledger/corpledger/admin/corporation_overview.html +108 -108
- ledger/templates/ledger/corpledger/corporation_ledger.html +129 -86
- ledger/templates/ledger/partials/administration/alliance.html +37 -37
- ledger/templates/ledger/partials/administration/alliance_corporations.html +58 -58
- ledger/templates/ledger/partials/administration/corporation_characters.html +34 -34
- ledger/templates/ledger/partials/information/daily.html +56 -56
- ledger/templates/ledger/partials/information/day.html +48 -48
- ledger/templates/ledger/partials/information/hourly.html +53 -53
- ledger/templates/ledger/partials/information/summary.html +88 -88
- ledger/templates/ledger/partials/information/view_character_content.html +35 -35
- ledger/templates/ledger/partials/table/char-ledger.html +85 -85
- ledger/templates/ledger/partials/table/corp-ledger.html +66 -66
- ledger/templates/ledger/partials/view/card.html +160 -160
- ledger/tests/test_decarators.py +102 -17
- ledger/tests/test_helpers/test_etag.py +149 -149
- ledger/tests/test_managers/test_character_mining_manager.py +54 -54
- ledger/tests/test_models/test_characterminingledger.py +107 -106
- ledger/tests/test_tasks.py +282 -282
- ledger/tests/test_templatetags.py +5 -2
- ledger/tests/test_views/test_access.py +852 -852
- ledger/tests/testdata/esi.json +1 -2
- ledger/tests/testdata/eveuniverse.json +391 -391
- ledger/urls.py +66 -21
- ledger/views/alliance/alliance_ledger.py +203 -203
- ledger/views/corporation/corporation_ledger.py +25 -9
- {aa_ledger-0.9.9.dist-info → aa_ledger-0.9.9.1.dist-info}/WHEEL +0 -0
- {aa_ledger-0.9.9.dist-info → aa_ledger-0.9.9.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,852 +1,852 @@
|
|
|
1
|
-
"""TestView class."""
|
|
2
|
-
|
|
3
|
-
# Standard Library
|
|
4
|
-
from http import HTTPStatus
|
|
5
|
-
from unittest.mock import Mock, patch
|
|
6
|
-
|
|
7
|
-
# Django
|
|
8
|
-
from django.contrib.messages.middleware import MessageMiddleware
|
|
9
|
-
from django.contrib.sessions.middleware import SessionMiddleware
|
|
10
|
-
from django.test import RequestFactory, TestCase
|
|
11
|
-
from django.urls import reverse
|
|
12
|
-
|
|
13
|
-
# Alliance Auth (External Libs)
|
|
14
|
-
from app_utils.testing import (
|
|
15
|
-
create_user_from_evecharacter,
|
|
16
|
-
)
|
|
17
|
-
|
|
18
|
-
# AA Ledger
|
|
19
|
-
from ledger.tests.testdata.generate_characteraudit import (
|
|
20
|
-
add_characteraudit_character_to_user,
|
|
21
|
-
create_user_from_evecharacter_with_access,
|
|
22
|
-
)
|
|
23
|
-
from ledger.tests.testdata.generate_corporationaudit import (
|
|
24
|
-
add_corporationaudit_corporation_to_user,
|
|
25
|
-
)
|
|
26
|
-
from ledger.tests.testdata.load_allianceauth import load_allianceauth
|
|
27
|
-
from ledger.tests.testdata.load_eveuniverse import load_eveuniverse
|
|
28
|
-
from ledger.views import index
|
|
29
|
-
from ledger.views.alliance import alliance_ledger
|
|
30
|
-
from ledger.views.character import character_ledger, planetary
|
|
31
|
-
from ledger.views.corporation import corporation_ledger
|
|
32
|
-
|
|
33
|
-
INDEX_PATH = "ledger.views.index"
|
|
34
|
-
CHARLEDGER_PATH = "ledger.views.character.character_ledger"
|
|
35
|
-
CORPLEDGER_PATH = "ledger.views.corporation.corporation_ledger"
|
|
36
|
-
ALLYLEDGER_PATH = "ledger.views.alliance.alliance_ledger"
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
@patch(INDEX_PATH + ".messages")
|
|
40
|
-
class TestViewIndexAccess(TestCase):
|
|
41
|
-
@classmethod
|
|
42
|
-
def setUpClass(cls):
|
|
43
|
-
super().setUpClass()
|
|
44
|
-
load_allianceauth()
|
|
45
|
-
load_eveuniverse()
|
|
46
|
-
|
|
47
|
-
cls.factory = RequestFactory()
|
|
48
|
-
cls.user, cls.character_ownership = create_user_from_evecharacter_with_access(
|
|
49
|
-
1002
|
|
50
|
-
)
|
|
51
|
-
cls.superuser, cls.character_ownership = (
|
|
52
|
-
create_user_from_evecharacter_with_access(1001)
|
|
53
|
-
)
|
|
54
|
-
|
|
55
|
-
def test_admin(self, mock_messages):
|
|
56
|
-
"""Test admin access."""
|
|
57
|
-
# given
|
|
58
|
-
self.superuser.is_superuser = True
|
|
59
|
-
self.superuser.save()
|
|
60
|
-
|
|
61
|
-
request = self.factory.get(reverse("ledger:admin"))
|
|
62
|
-
request.user = self.superuser
|
|
63
|
-
# when
|
|
64
|
-
response = index.admin(request)
|
|
65
|
-
# then
|
|
66
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
67
|
-
self.assertContains(response, "Administration")
|
|
68
|
-
|
|
69
|
-
def test_admin_no_access(self, mock_messages):
|
|
70
|
-
"""Test admin access."""
|
|
71
|
-
# given
|
|
72
|
-
request = self.factory.get(reverse("ledger:admin"))
|
|
73
|
-
request.user = self.user
|
|
74
|
-
|
|
75
|
-
middleware = SessionMiddleware(Mock())
|
|
76
|
-
middleware.process_request(request)
|
|
77
|
-
# when
|
|
78
|
-
response = index.admin(request)
|
|
79
|
-
# then
|
|
80
|
-
self.assertEqual(response.status_code, HTTPStatus.FOUND)
|
|
81
|
-
self.assertTrue(mock_messages.error.called)
|
|
82
|
-
|
|
83
|
-
def test_admin_clear_all_etags(self, mock_messages):
|
|
84
|
-
"""Test clear all etags."""
|
|
85
|
-
# given
|
|
86
|
-
self.superuser.is_superuser = True
|
|
87
|
-
self.superuser.save()
|
|
88
|
-
request = self.factory.post(
|
|
89
|
-
reverse("ledger:admin"), data={"run_clear_etag": True}
|
|
90
|
-
)
|
|
91
|
-
request.user = self.superuser
|
|
92
|
-
|
|
93
|
-
middleware = SessionMiddleware(Mock())
|
|
94
|
-
middleware.process_request(request)
|
|
95
|
-
# when
|
|
96
|
-
response = index.admin(request)
|
|
97
|
-
# then
|
|
98
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
99
|
-
mock_messages.info.assert_called_once_with(request, "Queued Clear All ETags")
|
|
100
|
-
|
|
101
|
-
def test_force_refresh(self, mock_messages):
|
|
102
|
-
"""Test force refresh."""
|
|
103
|
-
# given
|
|
104
|
-
self.superuser.is_superuser = True
|
|
105
|
-
self.superuser.save()
|
|
106
|
-
request = self.factory.post(
|
|
107
|
-
reverse("ledger:admin"), data={"force_refresh": True}
|
|
108
|
-
)
|
|
109
|
-
request.user = self.superuser
|
|
110
|
-
|
|
111
|
-
middleware = SessionMiddleware(Mock())
|
|
112
|
-
middleware.process_request(request)
|
|
113
|
-
# when
|
|
114
|
-
response = index.admin(request)
|
|
115
|
-
# then
|
|
116
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
117
|
-
|
|
118
|
-
def test_run_char_updates(self, mock_messages):
|
|
119
|
-
"""Test run char updates."""
|
|
120
|
-
# given
|
|
121
|
-
self.superuser.is_superuser = True
|
|
122
|
-
self.superuser.save()
|
|
123
|
-
request = self.factory.post(
|
|
124
|
-
reverse("ledger:admin"), data={"run_char_updates": True}
|
|
125
|
-
)
|
|
126
|
-
request.user = self.superuser
|
|
127
|
-
|
|
128
|
-
middleware = SessionMiddleware(Mock())
|
|
129
|
-
middleware.process_request(request)
|
|
130
|
-
# when
|
|
131
|
-
response = index.admin(request)
|
|
132
|
-
# then
|
|
133
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
134
|
-
mock_messages.info.assert_called_once_with(
|
|
135
|
-
request, "Queued Update All Characters"
|
|
136
|
-
)
|
|
137
|
-
|
|
138
|
-
def test_run_corp_updates(self, mock_messages):
|
|
139
|
-
"""Test Run corp updates."""
|
|
140
|
-
# given
|
|
141
|
-
self.superuser.is_superuser = True
|
|
142
|
-
self.superuser.save()
|
|
143
|
-
request = self.factory.post(
|
|
144
|
-
reverse("ledger:admin"), data={"run_corp_updates": True}
|
|
145
|
-
)
|
|
146
|
-
request.user = self.superuser
|
|
147
|
-
|
|
148
|
-
middleware = SessionMiddleware(Mock())
|
|
149
|
-
middleware.process_request(request)
|
|
150
|
-
# when
|
|
151
|
-
response = index.admin(request)
|
|
152
|
-
# then
|
|
153
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
154
|
-
mock_messages.info.assert_called_once_with(
|
|
155
|
-
request, "Queued Update All Corporations"
|
|
156
|
-
)
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
class TestViewCharacterLedgerAccess(TestCase):
|
|
160
|
-
@classmethod
|
|
161
|
-
def setUpClass(cls):
|
|
162
|
-
super().setUpClass()
|
|
163
|
-
load_allianceauth()
|
|
164
|
-
load_eveuniverse()
|
|
165
|
-
|
|
166
|
-
cls.factory = RequestFactory()
|
|
167
|
-
cls.user, cls.character_ownership = create_user_from_evecharacter_with_access(
|
|
168
|
-
1001
|
|
169
|
-
)
|
|
170
|
-
cls.user2, cls.character_ownership2 = create_user_from_evecharacter_with_access(
|
|
171
|
-
1002
|
|
172
|
-
)
|
|
173
|
-
cls.audit = add_characteraudit_character_to_user(
|
|
174
|
-
cls.user, cls.character_ownership.character.character_id
|
|
175
|
-
)
|
|
176
|
-
|
|
177
|
-
def test_view_character_ledger(self):
|
|
178
|
-
"""Test view character ledger."""
|
|
179
|
-
# given
|
|
180
|
-
request = self.factory.get(
|
|
181
|
-
reverse(
|
|
182
|
-
"ledger:character_ledger",
|
|
183
|
-
args=[self.character_ownership.character.character_id],
|
|
184
|
-
)
|
|
185
|
-
)
|
|
186
|
-
request.user = self.user
|
|
187
|
-
# when
|
|
188
|
-
response = character_ledger.character_ledger(
|
|
189
|
-
request, self.character_ownership.character.character_id
|
|
190
|
-
)
|
|
191
|
-
# then
|
|
192
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
193
|
-
self.assertContains(response, "Character Ledger")
|
|
194
|
-
|
|
195
|
-
@patch(CHARLEDGER_PATH + ".messages")
|
|
196
|
-
def test_view_character_ledger_without_permission(self, mock_messages):
|
|
197
|
-
"""Test view character ledger without permission."""
|
|
198
|
-
# given
|
|
199
|
-
request = self.factory.get(reverse("ledger:character_ledger", args=[1003]))
|
|
200
|
-
request.user = self.user
|
|
201
|
-
|
|
202
|
-
# Add session middleware to process the request
|
|
203
|
-
middleware = SessionMiddleware(Mock())
|
|
204
|
-
middleware.process_request(request)
|
|
205
|
-
message_middleware = MessageMiddleware(Mock())
|
|
206
|
-
message_middleware.process_request(request)
|
|
207
|
-
# when
|
|
208
|
-
response = character_ledger.character_ledger(request, 1003)
|
|
209
|
-
# then
|
|
210
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
211
|
-
self.assertContains(response, "Character Ledger")
|
|
212
|
-
self.assertTrue(mock_messages.error.called)
|
|
213
|
-
|
|
214
|
-
def test_view_character_details(self):
|
|
215
|
-
"""Test view character details."""
|
|
216
|
-
# given
|
|
217
|
-
request = self.factory.get(
|
|
218
|
-
reverse(
|
|
219
|
-
"ledger:
|
|
220
|
-
args=[self.character_ownership.character.character_id, 2025],
|
|
221
|
-
)
|
|
222
|
-
)
|
|
223
|
-
request.user = self.user
|
|
224
|
-
# when
|
|
225
|
-
response = character_ledger.character_details(
|
|
226
|
-
request, self.character_ownership.character.character_id, year=2025
|
|
227
|
-
)
|
|
228
|
-
# then
|
|
229
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
230
|
-
self.assertContains(
|
|
231
|
-
response,
|
|
232
|
-
"No ratting data found...",
|
|
233
|
-
)
|
|
234
|
-
|
|
235
|
-
def test_view_character_details_no_permission(self):
|
|
236
|
-
"""Test view character details."""
|
|
237
|
-
# given
|
|
238
|
-
request = self.factory.get(
|
|
239
|
-
reverse(
|
|
240
|
-
"ledger:
|
|
241
|
-
args=[self.character_ownership.character.character_id, 2025],
|
|
242
|
-
)
|
|
243
|
-
)
|
|
244
|
-
request.user = self.user2
|
|
245
|
-
|
|
246
|
-
# when
|
|
247
|
-
response = character_ledger.character_details(
|
|
248
|
-
request, self.character_ownership.character.character_id, year=2025
|
|
249
|
-
)
|
|
250
|
-
# then
|
|
251
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
252
|
-
self.assertContains(response, "Permission Denied")
|
|
253
|
-
|
|
254
|
-
def test_view_character_overview(self):
|
|
255
|
-
"""Test view character overview."""
|
|
256
|
-
# given
|
|
257
|
-
request = self.factory.get(reverse("ledger:character_overview"))
|
|
258
|
-
request.user = self.user
|
|
259
|
-
# when
|
|
260
|
-
response = character_ledger.character_overview(request)
|
|
261
|
-
# then
|
|
262
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
263
|
-
self.assertContains(response, "Character Overview")
|
|
264
|
-
|
|
265
|
-
def test_view_character_administration(self):
|
|
266
|
-
"""Test view character administration."""
|
|
267
|
-
# given
|
|
268
|
-
request = self.factory.get(
|
|
269
|
-
reverse(
|
|
270
|
-
"ledger:character_administration",
|
|
271
|
-
args=[self.character_ownership.character.character_id],
|
|
272
|
-
)
|
|
273
|
-
)
|
|
274
|
-
request.user = self.user
|
|
275
|
-
# when
|
|
276
|
-
response = character_ledger.character_administration(
|
|
277
|
-
request, self.character_ownership.character.character_id
|
|
278
|
-
)
|
|
279
|
-
# then
|
|
280
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
281
|
-
self.assertContains(response, "Administration")
|
|
282
|
-
|
|
283
|
-
def test_view_character_administration_withouth_character_id(self):
|
|
284
|
-
"""Test view character administration."""
|
|
285
|
-
# given
|
|
286
|
-
request = self.factory.get(
|
|
287
|
-
reverse(
|
|
288
|
-
"ledger:character_administration",
|
|
289
|
-
args=[self.character_ownership.character.character_id],
|
|
290
|
-
)
|
|
291
|
-
)
|
|
292
|
-
request.user = self.user
|
|
293
|
-
# when
|
|
294
|
-
response = character_ledger.character_administration(request)
|
|
295
|
-
# then
|
|
296
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
297
|
-
self.assertContains(response, "Administration")
|
|
298
|
-
|
|
299
|
-
@patch(CHARLEDGER_PATH + ".messages")
|
|
300
|
-
def test_view_character_administration_no_permission(self, mock_messages):
|
|
301
|
-
"""Test view character administration."""
|
|
302
|
-
# given
|
|
303
|
-
request = self.factory.get(
|
|
304
|
-
reverse("ledger:character_administration", args=[1002])
|
|
305
|
-
)
|
|
306
|
-
request.user = self.user
|
|
307
|
-
middleware = SessionMiddleware(Mock())
|
|
308
|
-
middleware.process_request(request)
|
|
309
|
-
# when
|
|
310
|
-
response = character_ledger.character_administration(request, 1002)
|
|
311
|
-
# then
|
|
312
|
-
self.assertEqual(response.status_code, HTTPStatus.FOUND)
|
|
313
|
-
mock_messages.error.assert_called_once_with(request, "Permission Denied")
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
class TestViewCorporationLedgerAccess(TestCase):
|
|
317
|
-
@classmethod
|
|
318
|
-
def setUpClass(cls):
|
|
319
|
-
super().setUpClass()
|
|
320
|
-
load_allianceauth()
|
|
321
|
-
load_eveuniverse()
|
|
322
|
-
|
|
323
|
-
cls.factory = RequestFactory()
|
|
324
|
-
cls.user, cls.character_ownership = create_user_from_evecharacter(
|
|
325
|
-
1001,
|
|
326
|
-
permissions=[
|
|
327
|
-
"ledger.basic_access",
|
|
328
|
-
"ledger.advanced_access",
|
|
329
|
-
"ledger.manage_access",
|
|
330
|
-
"ledger.corp_audit_manager",
|
|
331
|
-
],
|
|
332
|
-
)
|
|
333
|
-
cls.user_no_perm, cls.character_ownership_no_perm = (
|
|
334
|
-
create_user_from_evecharacter(
|
|
335
|
-
1002,
|
|
336
|
-
permissions=[
|
|
337
|
-
"ledger.basic_access",
|
|
338
|
-
"ledger.advanced_access",
|
|
339
|
-
"ledger.manage_access",
|
|
340
|
-
],
|
|
341
|
-
)
|
|
342
|
-
)
|
|
343
|
-
cls.audit = add_corporationaudit_corporation_to_user(cls.user, 1001)
|
|
344
|
-
|
|
345
|
-
def test_view_corporation_ledger_index(self):
|
|
346
|
-
"""Test view corporation ledger index."""
|
|
347
|
-
# given
|
|
348
|
-
request = self.factory.get(reverse("ledger:corporation_ledger_index"))
|
|
349
|
-
request.user = self.user
|
|
350
|
-
# when
|
|
351
|
-
response = corporation_ledger.corporation_ledger_index(request)
|
|
352
|
-
# then
|
|
353
|
-
self.assertEqual(response.status_code, HTTPStatus.FOUND)
|
|
354
|
-
|
|
355
|
-
def test_view_corporation_ledger(self):
|
|
356
|
-
"""Test view corporation ledger."""
|
|
357
|
-
# given
|
|
358
|
-
request = self.factory.get(
|
|
359
|
-
reverse(
|
|
360
|
-
"ledger:corporation_ledger",
|
|
361
|
-
args=[self.character_ownership.character.corporation_id],
|
|
362
|
-
)
|
|
363
|
-
)
|
|
364
|
-
request.user = self.user
|
|
365
|
-
# when
|
|
366
|
-
response = corporation_ledger.corporation_ledger(
|
|
367
|
-
request, self.character_ownership.character.corporation_id
|
|
368
|
-
)
|
|
369
|
-
# then
|
|
370
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
371
|
-
self.assertContains(response, "Corporation Ledger")
|
|
372
|
-
|
|
373
|
-
@patch(CORPLEDGER_PATH + ".messages")
|
|
374
|
-
def test_view_corporation_ledger_not_found(self, mock_messages):
|
|
375
|
-
"""Test view corporation ledger not found."""
|
|
376
|
-
# given
|
|
377
|
-
request = self.factory.get(reverse("ledger:corporation_ledger", args=[9999]))
|
|
378
|
-
request.user = self.user
|
|
379
|
-
|
|
380
|
-
# Add session middleware to process the request
|
|
381
|
-
middleware = SessionMiddleware(Mock())
|
|
382
|
-
middleware.process_request(request)
|
|
383
|
-
message_middleware = MessageMiddleware(Mock())
|
|
384
|
-
message_middleware.process_request(request)
|
|
385
|
-
# when
|
|
386
|
-
response = corporation_ledger.corporation_ledger(request, 9999)
|
|
387
|
-
# then
|
|
388
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
389
|
-
self.assertContains(response, "Corporation Ledger")
|
|
390
|
-
self.assertTrue(mock_messages.info.called)
|
|
391
|
-
|
|
392
|
-
@patch(CORPLEDGER_PATH + ".messages")
|
|
393
|
-
def test_view_corporation_ledger_without_permission(self, mock_messages):
|
|
394
|
-
"""Test view corporation ledger without permission."""
|
|
395
|
-
# given
|
|
396
|
-
request = self.factory.get(reverse("ledger:corporation_ledger", args=[2001]))
|
|
397
|
-
request.user = self.user_no_perm
|
|
398
|
-
|
|
399
|
-
# Add session middleware to process the request
|
|
400
|
-
middleware = SessionMiddleware(Mock())
|
|
401
|
-
middleware.process_request(request)
|
|
402
|
-
message_middleware = MessageMiddleware(Mock())
|
|
403
|
-
message_middleware.process_request(request)
|
|
404
|
-
# when
|
|
405
|
-
response = corporation_ledger.corporation_ledger(request, 2001)
|
|
406
|
-
# then
|
|
407
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
408
|
-
self.assertContains(response, "Corporation Ledger")
|
|
409
|
-
self.assertTrue(mock_messages.error.called)
|
|
410
|
-
|
|
411
|
-
def test_view_corporation_details(self):
|
|
412
|
-
"""Test view corporation details."""
|
|
413
|
-
# given
|
|
414
|
-
request = self.factory.get(
|
|
415
|
-
reverse(
|
|
416
|
-
"ledger:
|
|
417
|
-
args=[self.character_ownership.character.corporation_id, 2025, 1001],
|
|
418
|
-
)
|
|
419
|
-
)
|
|
420
|
-
request.user = self.user
|
|
421
|
-
# when
|
|
422
|
-
response = corporation_ledger.corporation_details(
|
|
423
|
-
request,
|
|
424
|
-
self.character_ownership.character.corporation_id,
|
|
425
|
-
entity_id=1001,
|
|
426
|
-
year=2025,
|
|
427
|
-
)
|
|
428
|
-
# then
|
|
429
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
430
|
-
self.assertContains(response, "No ratting data found...")
|
|
431
|
-
|
|
432
|
-
def test_view_corporation_details_no_permission(self):
|
|
433
|
-
"""Test view corporation details."""
|
|
434
|
-
# given
|
|
435
|
-
request = self.factory.get(
|
|
436
|
-
reverse(
|
|
437
|
-
"ledger:
|
|
438
|
-
args=[2001, 2025, 1001],
|
|
439
|
-
)
|
|
440
|
-
)
|
|
441
|
-
request.user = self.user_no_perm
|
|
442
|
-
|
|
443
|
-
# when
|
|
444
|
-
response = corporation_ledger.corporation_details(
|
|
445
|
-
request, 2001, entity_id=1001, year=2025
|
|
446
|
-
)
|
|
447
|
-
# then
|
|
448
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
449
|
-
self.assertContains(response, "Permission Denied")
|
|
450
|
-
|
|
451
|
-
def test_view_corporation_details_not_found(self):
|
|
452
|
-
"""Test view corporation details."""
|
|
453
|
-
# given
|
|
454
|
-
request = self.factory.get(
|
|
455
|
-
reverse(
|
|
456
|
-
"ledger:
|
|
457
|
-
args=[9999, 2025, 9999],
|
|
458
|
-
)
|
|
459
|
-
)
|
|
460
|
-
request.user = self.user_no_perm
|
|
461
|
-
|
|
462
|
-
# when
|
|
463
|
-
response = corporation_ledger.corporation_details(
|
|
464
|
-
request, 9999, entity_id=9999, year=2025
|
|
465
|
-
)
|
|
466
|
-
# then
|
|
467
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
468
|
-
self.assertContains(response, "Corporation not found")
|
|
469
|
-
|
|
470
|
-
def test_view_corporation_overview(self):
|
|
471
|
-
"""Test view corporation overview."""
|
|
472
|
-
# given
|
|
473
|
-
request = self.factory.get(reverse("ledger:corporation_overview"))
|
|
474
|
-
request.user = self.user
|
|
475
|
-
# when
|
|
476
|
-
response = corporation_ledger.corporation_overview(request)
|
|
477
|
-
# then
|
|
478
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
479
|
-
self.assertContains(response, "Corporation Overview")
|
|
480
|
-
|
|
481
|
-
def test_view_corporation_administration(self):
|
|
482
|
-
"""Test view corporation administration."""
|
|
483
|
-
# given
|
|
484
|
-
request = self.factory.get(
|
|
485
|
-
reverse(
|
|
486
|
-
"ledger:corporation_administration",
|
|
487
|
-
args=[self.character_ownership.character.corporation_id],
|
|
488
|
-
)
|
|
489
|
-
)
|
|
490
|
-
request.user = self.user
|
|
491
|
-
# when
|
|
492
|
-
response = corporation_ledger.corporation_administration(
|
|
493
|
-
request, self.character_ownership.character.corporation_id
|
|
494
|
-
)
|
|
495
|
-
# then
|
|
496
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
497
|
-
self.assertContains(response, "Administration")
|
|
498
|
-
|
|
499
|
-
@patch(CORPLEDGER_PATH + ".messages")
|
|
500
|
-
def test_view_corporation_administration_no_permission(self, mock_messages):
|
|
501
|
-
"""Test view corporation administration."""
|
|
502
|
-
# given
|
|
503
|
-
request = self.factory.get(
|
|
504
|
-
reverse("ledger:corporation_administration", args=[2001])
|
|
505
|
-
)
|
|
506
|
-
request.user = self.user_no_perm
|
|
507
|
-
middleware = SessionMiddleware(Mock())
|
|
508
|
-
middleware.process_request(request)
|
|
509
|
-
# when
|
|
510
|
-
response = corporation_ledger.corporation_administration(request, 2001)
|
|
511
|
-
# then
|
|
512
|
-
self.assertEqual(response.status_code, HTTPStatus.FOUND)
|
|
513
|
-
mock_messages.error.assert_called_once_with(request, "Permission Denied")
|
|
514
|
-
|
|
515
|
-
@patch(CORPLEDGER_PATH + ".messages")
|
|
516
|
-
def test_view_corporation_administration_corporation_not_found(self, mock_messages):
|
|
517
|
-
"""Test view corporation administration."""
|
|
518
|
-
# given
|
|
519
|
-
request = self.factory.get(
|
|
520
|
-
reverse("ledger:corporation_administration", args=[6666])
|
|
521
|
-
)
|
|
522
|
-
request.user = self.user
|
|
523
|
-
middleware = SessionMiddleware(Mock())
|
|
524
|
-
middleware.process_request(request)
|
|
525
|
-
# when
|
|
526
|
-
response = corporation_ledger.corporation_administration(request, 6666)
|
|
527
|
-
# then
|
|
528
|
-
self.assertEqual(response.status_code, HTTPStatus.FOUND)
|
|
529
|
-
mock_messages.info.assert_called_once_with(request, "Corporation not found")
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
class TestViewAllianceLedgerAccess(TestCase):
|
|
533
|
-
@classmethod
|
|
534
|
-
def setUpClass(cls):
|
|
535
|
-
super().setUpClass()
|
|
536
|
-
load_allianceauth()
|
|
537
|
-
load_eveuniverse()
|
|
538
|
-
|
|
539
|
-
cls.factory = RequestFactory()
|
|
540
|
-
cls.user, cls.character_ownership = create_user_from_evecharacter(
|
|
541
|
-
1001,
|
|
542
|
-
permissions=[
|
|
543
|
-
"ledger.basic_access",
|
|
544
|
-
"ledger.advanced_access",
|
|
545
|
-
],
|
|
546
|
-
)
|
|
547
|
-
cls.user_no_perm, cls.character_ownership_no_perm = (
|
|
548
|
-
create_user_from_evecharacter(
|
|
549
|
-
1003,
|
|
550
|
-
permissions=[
|
|
551
|
-
"ledger.basic_access",
|
|
552
|
-
"ledger.advanced_access",
|
|
553
|
-
],
|
|
554
|
-
)
|
|
555
|
-
)
|
|
556
|
-
cls.user_admin, cls.character_ownership_admin = create_user_from_evecharacter(
|
|
557
|
-
1002,
|
|
558
|
-
permissions=[
|
|
559
|
-
"ledger.basic_access",
|
|
560
|
-
"ledger.advanced_access",
|
|
561
|
-
"ledger.manage_access",
|
|
562
|
-
],
|
|
563
|
-
)
|
|
564
|
-
cls.audit = add_corporationaudit_corporation_to_user(cls.user, 1001)
|
|
565
|
-
cls.audit_admin = add_corporationaudit_corporation_to_user(cls.user_admin, 1002)
|
|
566
|
-
cls.user_has_no_alliance, cls.character_ownership_no_alliance = (
|
|
567
|
-
create_user_from_evecharacter(
|
|
568
|
-
1000,
|
|
569
|
-
permissions=[
|
|
570
|
-
"ledger.basic_access",
|
|
571
|
-
"ledger.advanced_access",
|
|
572
|
-
],
|
|
573
|
-
)
|
|
574
|
-
)
|
|
575
|
-
|
|
576
|
-
def test_view_alliance_ledger_index(self):
|
|
577
|
-
"""Test view alliance ledger index."""
|
|
578
|
-
# given
|
|
579
|
-
request = self.factory.get(reverse("ledger:alliance_ledger_index"))
|
|
580
|
-
request.user = self.user
|
|
581
|
-
# when
|
|
582
|
-
response = alliance_ledger.alliance_ledger_index(request)
|
|
583
|
-
# then
|
|
584
|
-
self.assertEqual(response.status_code, HTTPStatus.FOUND)
|
|
585
|
-
|
|
586
|
-
@patch(ALLYLEDGER_PATH + ".messages")
|
|
587
|
-
def test_view_alliance_ledger_index_exception(self, mock_messages):
|
|
588
|
-
"""Test view alliance ledger."""
|
|
589
|
-
# given
|
|
590
|
-
request = self.factory.get(
|
|
591
|
-
reverse(
|
|
592
|
-
"ledger:alliance_ledger_index",
|
|
593
|
-
)
|
|
594
|
-
)
|
|
595
|
-
middleware = SessionMiddleware(Mock())
|
|
596
|
-
middleware.process_request(request)
|
|
597
|
-
request.user = self.user_has_no_alliance
|
|
598
|
-
# when
|
|
599
|
-
response = alliance_ledger.alliance_ledger_index(request)
|
|
600
|
-
# then
|
|
601
|
-
self.assertEqual(response.status_code, HTTPStatus.FOUND)
|
|
602
|
-
mock_messages.error.assert_called_once_with(
|
|
603
|
-
request, "You do not have an alliance."
|
|
604
|
-
)
|
|
605
|
-
|
|
606
|
-
def test_view_alliance_ledger(self):
|
|
607
|
-
"""Test view alliance ledger."""
|
|
608
|
-
# given
|
|
609
|
-
request = self.factory.get(
|
|
610
|
-
reverse(
|
|
611
|
-
"ledger:alliance_ledger",
|
|
612
|
-
args=[self.character_ownership.character.alliance_id],
|
|
613
|
-
)
|
|
614
|
-
)
|
|
615
|
-
request.user = self.user
|
|
616
|
-
# when
|
|
617
|
-
response = alliance_ledger.alliance_ledger(
|
|
618
|
-
request, self.character_ownership.character.alliance_id
|
|
619
|
-
)
|
|
620
|
-
# then
|
|
621
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
622
|
-
self.assertContains(response, "Alliance Ledger")
|
|
623
|
-
|
|
624
|
-
@patch(ALLYLEDGER_PATH + ".messages")
|
|
625
|
-
def test_view_alliance_ledger_not_found(self, mock_messages):
|
|
626
|
-
"""Test view alliance ledger not found."""
|
|
627
|
-
# given
|
|
628
|
-
request = self.factory.get(reverse("ledger:alliance_ledger", args=[9999]))
|
|
629
|
-
request.user = self.user
|
|
630
|
-
|
|
631
|
-
# Add session middleware to process the request
|
|
632
|
-
middleware = SessionMiddleware(Mock())
|
|
633
|
-
middleware.process_request(request)
|
|
634
|
-
message_middleware = MessageMiddleware(Mock())
|
|
635
|
-
message_middleware.process_request(request)
|
|
636
|
-
# when
|
|
637
|
-
response = alliance_ledger.alliance_ledger(request, 9999)
|
|
638
|
-
# then
|
|
639
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
640
|
-
self.assertContains(response, "Alliance Ledger")
|
|
641
|
-
self.assertTrue(mock_messages.info.called)
|
|
642
|
-
|
|
643
|
-
@patch(ALLYLEDGER_PATH + ".messages")
|
|
644
|
-
def test_view_alliance_ledger_without_permission(self, mock_messages):
|
|
645
|
-
"""Test view alliance ledger without permission."""
|
|
646
|
-
# given
|
|
647
|
-
request = self.factory.get(reverse("ledger:alliance_ledger", args=[3001]))
|
|
648
|
-
request.user = self.user_no_perm
|
|
649
|
-
|
|
650
|
-
# Add session middleware to process the request
|
|
651
|
-
middleware = SessionMiddleware(Mock())
|
|
652
|
-
middleware.process_request(request)
|
|
653
|
-
message_middleware = MessageMiddleware(Mock())
|
|
654
|
-
message_middleware.process_request(request)
|
|
655
|
-
# when
|
|
656
|
-
response = alliance_ledger.alliance_ledger(request, 3001)
|
|
657
|
-
# then
|
|
658
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
659
|
-
self.assertContains(response, "Alliance Ledger")
|
|
660
|
-
self.assertTrue(mock_messages.error.called)
|
|
661
|
-
|
|
662
|
-
def test_view_alliance_details(self):
|
|
663
|
-
"""Test view alliance details."""
|
|
664
|
-
# given
|
|
665
|
-
request = self.factory.get(
|
|
666
|
-
reverse(
|
|
667
|
-
"ledger:
|
|
668
|
-
args=[self.character_ownership.character.alliance_id, 2025, 1001],
|
|
669
|
-
)
|
|
670
|
-
)
|
|
671
|
-
request.user = self.user
|
|
672
|
-
# when
|
|
673
|
-
response = alliance_ledger.alliance_details(
|
|
674
|
-
request,
|
|
675
|
-
self.character_ownership.character.alliance_id,
|
|
676
|
-
entity_id=1001,
|
|
677
|
-
year=2025,
|
|
678
|
-
)
|
|
679
|
-
# then
|
|
680
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
681
|
-
self.assertContains(response, "No ratting data found...")
|
|
682
|
-
|
|
683
|
-
def test_view_alliance_details_no_permission(self):
|
|
684
|
-
"""Test view alliance details without permission."""
|
|
685
|
-
# given
|
|
686
|
-
request = self.factory.get(
|
|
687
|
-
reverse(
|
|
688
|
-
"ledger:
|
|
689
|
-
args=[3001, 2025, 2001],
|
|
690
|
-
)
|
|
691
|
-
)
|
|
692
|
-
request.user = self.user_no_perm
|
|
693
|
-
|
|
694
|
-
# when
|
|
695
|
-
response = alliance_ledger.alliance_details(
|
|
696
|
-
request, 3001, entity_id=2001, year=2025
|
|
697
|
-
)
|
|
698
|
-
# then
|
|
699
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
700
|
-
self.assertContains(response, "Permission Denied")
|
|
701
|
-
|
|
702
|
-
def test_view_alliance_details_not_found(self):
|
|
703
|
-
"""Test view alliance details not found."""
|
|
704
|
-
# given
|
|
705
|
-
request = self.factory.get(
|
|
706
|
-
reverse(
|
|
707
|
-
"ledger:
|
|
708
|
-
args=[9999, 2025, 9999],
|
|
709
|
-
)
|
|
710
|
-
)
|
|
711
|
-
request.user = self.user_no_perm
|
|
712
|
-
|
|
713
|
-
# when
|
|
714
|
-
response = alliance_ledger.alliance_details(
|
|
715
|
-
request, 9999, entity_id=9999, year=2025
|
|
716
|
-
)
|
|
717
|
-
# then
|
|
718
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
719
|
-
self.assertContains(response, "Alliance not found.")
|
|
720
|
-
|
|
721
|
-
def test_view_alliance_overview(self):
|
|
722
|
-
"""Test view alliance overview."""
|
|
723
|
-
# given
|
|
724
|
-
request = self.factory.get(reverse("ledger:alliance_overview"))
|
|
725
|
-
request.user = self.user
|
|
726
|
-
# when
|
|
727
|
-
response = alliance_ledger.alliance_overview(request)
|
|
728
|
-
# then
|
|
729
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
730
|
-
self.assertContains(response, "Alliance Overview")
|
|
731
|
-
|
|
732
|
-
def test_view_alliance_administration(self):
|
|
733
|
-
"""Test view alliance administration."""
|
|
734
|
-
# given
|
|
735
|
-
request = self.factory.get(
|
|
736
|
-
reverse(
|
|
737
|
-
"ledger:alliance_administration",
|
|
738
|
-
args=[self.character_ownership_admin.character.alliance_id],
|
|
739
|
-
)
|
|
740
|
-
)
|
|
741
|
-
request.user = self.user_admin
|
|
742
|
-
# when
|
|
743
|
-
response = alliance_ledger.alliance_administration(
|
|
744
|
-
request, self.character_ownership_admin.character.alliance_id
|
|
745
|
-
)
|
|
746
|
-
# then
|
|
747
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
748
|
-
self.assertContains(response, "Administration")
|
|
749
|
-
|
|
750
|
-
@patch(ALLYLEDGER_PATH + ".messages")
|
|
751
|
-
def test_view_alliance_administration_no_permission(self, mock_messages):
|
|
752
|
-
"""Test view alliance administration."""
|
|
753
|
-
# given
|
|
754
|
-
request = self.factory.get(
|
|
755
|
-
reverse("ledger:alliance_administration", args=[3001])
|
|
756
|
-
)
|
|
757
|
-
request.user = self.user_admin
|
|
758
|
-
middleware = SessionMiddleware(Mock())
|
|
759
|
-
middleware.process_request(request)
|
|
760
|
-
# when
|
|
761
|
-
response = alliance_ledger.alliance_administration(request, 3001)
|
|
762
|
-
# then
|
|
763
|
-
self.assertEqual(response.status_code, HTTPStatus.FOUND)
|
|
764
|
-
mock_messages.error.assert_called_once_with(request, "Permission Denied")
|
|
765
|
-
|
|
766
|
-
@patch(ALLYLEDGER_PATH + ".messages")
|
|
767
|
-
def test_view_alliance_administration_alliance_not_found(self, mock_messages):
|
|
768
|
-
"""Test view alliance administration."""
|
|
769
|
-
# given
|
|
770
|
-
request = self.factory.get(
|
|
771
|
-
reverse("ledger:alliance_administration", args=[6666])
|
|
772
|
-
)
|
|
773
|
-
request.user = self.user_admin
|
|
774
|
-
middleware = SessionMiddleware(Mock())
|
|
775
|
-
middleware.process_request(request)
|
|
776
|
-
# when
|
|
777
|
-
response = alliance_ledger.alliance_administration(request, 6666)
|
|
778
|
-
# then
|
|
779
|
-
self.assertEqual(response.status_code, HTTPStatus.FOUND)
|
|
780
|
-
mock_messages.info.assert_called_once_with(request, "Alliance not found.")
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
class TestViewPlanetaryLedgerAccess(TestCase):
|
|
784
|
-
@classmethod
|
|
785
|
-
def setUpClass(cls):
|
|
786
|
-
super().setUpClass()
|
|
787
|
-
load_allianceauth()
|
|
788
|
-
load_eveuniverse()
|
|
789
|
-
|
|
790
|
-
cls.factory = RequestFactory()
|
|
791
|
-
cls.user, cls.character_ownership = create_user_from_evecharacter(
|
|
792
|
-
1001,
|
|
793
|
-
permissions=[
|
|
794
|
-
"ledger.basic_access",
|
|
795
|
-
"ledger.advanced_access",
|
|
796
|
-
],
|
|
797
|
-
)
|
|
798
|
-
|
|
799
|
-
def test_view_planetary_ledger_index(self):
|
|
800
|
-
"""Test view planetary ledger index."""
|
|
801
|
-
# given
|
|
802
|
-
request = self.factory.get(reverse("ledger:planetary_ledger_index"))
|
|
803
|
-
request.user = self.user
|
|
804
|
-
# when
|
|
805
|
-
response = planetary.planetary_ledger_index(request)
|
|
806
|
-
# then
|
|
807
|
-
self.assertEqual(response.status_code, HTTPStatus.FOUND)
|
|
808
|
-
|
|
809
|
-
def test_view_planetary_ledger(self):
|
|
810
|
-
"""Test view planetary ledger."""
|
|
811
|
-
# given
|
|
812
|
-
request = self.factory.get(
|
|
813
|
-
reverse(
|
|
814
|
-
"ledger:planetary_ledger",
|
|
815
|
-
args=[self.character_ownership.character.character_id],
|
|
816
|
-
)
|
|
817
|
-
)
|
|
818
|
-
request.user = self.user
|
|
819
|
-
# when
|
|
820
|
-
response = planetary.planetary_ledger(
|
|
821
|
-
request, self.character_ownership.character.character_id
|
|
822
|
-
)
|
|
823
|
-
# then
|
|
824
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
825
|
-
self.assertContains(response, "Planetary Details")
|
|
826
|
-
|
|
827
|
-
def test_view_planetary_ledger_without_character_id(self):
|
|
828
|
-
"""Test view character ledger."""
|
|
829
|
-
# given
|
|
830
|
-
request = self.factory.get(
|
|
831
|
-
reverse(
|
|
832
|
-
"ledger:planetary_ledger",
|
|
833
|
-
args=[self.character_ownership.character.character_id],
|
|
834
|
-
)
|
|
835
|
-
)
|
|
836
|
-
request.user = self.user
|
|
837
|
-
# when
|
|
838
|
-
response = planetary.planetary_ledger(request)
|
|
839
|
-
# then
|
|
840
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
841
|
-
self.assertContains(response, "Planetary Details")
|
|
842
|
-
|
|
843
|
-
def test_view_planetary_overview(self):
|
|
844
|
-
"""Test view planetary overview."""
|
|
845
|
-
# given
|
|
846
|
-
request = self.factory.get(reverse("ledger:planetary_overview"))
|
|
847
|
-
request.user = self.user
|
|
848
|
-
# when
|
|
849
|
-
response = planetary.planetary_overview(request)
|
|
850
|
-
# then
|
|
851
|
-
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
852
|
-
self.assertContains(response, "Planetary Overview")
|
|
1
|
+
"""TestView class."""
|
|
2
|
+
|
|
3
|
+
# Standard Library
|
|
4
|
+
from http import HTTPStatus
|
|
5
|
+
from unittest.mock import Mock, patch
|
|
6
|
+
|
|
7
|
+
# Django
|
|
8
|
+
from django.contrib.messages.middleware import MessageMiddleware
|
|
9
|
+
from django.contrib.sessions.middleware import SessionMiddleware
|
|
10
|
+
from django.test import RequestFactory, TestCase
|
|
11
|
+
from django.urls import reverse
|
|
12
|
+
|
|
13
|
+
# Alliance Auth (External Libs)
|
|
14
|
+
from app_utils.testing import (
|
|
15
|
+
create_user_from_evecharacter,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
# AA Ledger
|
|
19
|
+
from ledger.tests.testdata.generate_characteraudit import (
|
|
20
|
+
add_characteraudit_character_to_user,
|
|
21
|
+
create_user_from_evecharacter_with_access,
|
|
22
|
+
)
|
|
23
|
+
from ledger.tests.testdata.generate_corporationaudit import (
|
|
24
|
+
add_corporationaudit_corporation_to_user,
|
|
25
|
+
)
|
|
26
|
+
from ledger.tests.testdata.load_allianceauth import load_allianceauth
|
|
27
|
+
from ledger.tests.testdata.load_eveuniverse import load_eveuniverse
|
|
28
|
+
from ledger.views import index
|
|
29
|
+
from ledger.views.alliance import alliance_ledger
|
|
30
|
+
from ledger.views.character import character_ledger, planetary
|
|
31
|
+
from ledger.views.corporation import corporation_ledger
|
|
32
|
+
|
|
33
|
+
INDEX_PATH = "ledger.views.index"
|
|
34
|
+
CHARLEDGER_PATH = "ledger.views.character.character_ledger"
|
|
35
|
+
CORPLEDGER_PATH = "ledger.views.corporation.corporation_ledger"
|
|
36
|
+
ALLYLEDGER_PATH = "ledger.views.alliance.alliance_ledger"
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@patch(INDEX_PATH + ".messages")
|
|
40
|
+
class TestViewIndexAccess(TestCase):
|
|
41
|
+
@classmethod
|
|
42
|
+
def setUpClass(cls):
|
|
43
|
+
super().setUpClass()
|
|
44
|
+
load_allianceauth()
|
|
45
|
+
load_eveuniverse()
|
|
46
|
+
|
|
47
|
+
cls.factory = RequestFactory()
|
|
48
|
+
cls.user, cls.character_ownership = create_user_from_evecharacter_with_access(
|
|
49
|
+
1002
|
|
50
|
+
)
|
|
51
|
+
cls.superuser, cls.character_ownership = (
|
|
52
|
+
create_user_from_evecharacter_with_access(1001)
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
def test_admin(self, mock_messages):
|
|
56
|
+
"""Test admin access."""
|
|
57
|
+
# given
|
|
58
|
+
self.superuser.is_superuser = True
|
|
59
|
+
self.superuser.save()
|
|
60
|
+
|
|
61
|
+
request = self.factory.get(reverse("ledger:admin"))
|
|
62
|
+
request.user = self.superuser
|
|
63
|
+
# when
|
|
64
|
+
response = index.admin(request)
|
|
65
|
+
# then
|
|
66
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
67
|
+
self.assertContains(response, "Administration")
|
|
68
|
+
|
|
69
|
+
def test_admin_no_access(self, mock_messages):
|
|
70
|
+
"""Test admin access."""
|
|
71
|
+
# given
|
|
72
|
+
request = self.factory.get(reverse("ledger:admin"))
|
|
73
|
+
request.user = self.user
|
|
74
|
+
|
|
75
|
+
middleware = SessionMiddleware(Mock())
|
|
76
|
+
middleware.process_request(request)
|
|
77
|
+
# when
|
|
78
|
+
response = index.admin(request)
|
|
79
|
+
# then
|
|
80
|
+
self.assertEqual(response.status_code, HTTPStatus.FOUND)
|
|
81
|
+
self.assertTrue(mock_messages.error.called)
|
|
82
|
+
|
|
83
|
+
def test_admin_clear_all_etags(self, mock_messages):
|
|
84
|
+
"""Test clear all etags."""
|
|
85
|
+
# given
|
|
86
|
+
self.superuser.is_superuser = True
|
|
87
|
+
self.superuser.save()
|
|
88
|
+
request = self.factory.post(
|
|
89
|
+
reverse("ledger:admin"), data={"run_clear_etag": True}
|
|
90
|
+
)
|
|
91
|
+
request.user = self.superuser
|
|
92
|
+
|
|
93
|
+
middleware = SessionMiddleware(Mock())
|
|
94
|
+
middleware.process_request(request)
|
|
95
|
+
# when
|
|
96
|
+
response = index.admin(request)
|
|
97
|
+
# then
|
|
98
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
99
|
+
mock_messages.info.assert_called_once_with(request, "Queued Clear All ETags")
|
|
100
|
+
|
|
101
|
+
def test_force_refresh(self, mock_messages):
|
|
102
|
+
"""Test force refresh."""
|
|
103
|
+
# given
|
|
104
|
+
self.superuser.is_superuser = True
|
|
105
|
+
self.superuser.save()
|
|
106
|
+
request = self.factory.post(
|
|
107
|
+
reverse("ledger:admin"), data={"force_refresh": True}
|
|
108
|
+
)
|
|
109
|
+
request.user = self.superuser
|
|
110
|
+
|
|
111
|
+
middleware = SessionMiddleware(Mock())
|
|
112
|
+
middleware.process_request(request)
|
|
113
|
+
# when
|
|
114
|
+
response = index.admin(request)
|
|
115
|
+
# then
|
|
116
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
117
|
+
|
|
118
|
+
def test_run_char_updates(self, mock_messages):
|
|
119
|
+
"""Test run char updates."""
|
|
120
|
+
# given
|
|
121
|
+
self.superuser.is_superuser = True
|
|
122
|
+
self.superuser.save()
|
|
123
|
+
request = self.factory.post(
|
|
124
|
+
reverse("ledger:admin"), data={"run_char_updates": True}
|
|
125
|
+
)
|
|
126
|
+
request.user = self.superuser
|
|
127
|
+
|
|
128
|
+
middleware = SessionMiddleware(Mock())
|
|
129
|
+
middleware.process_request(request)
|
|
130
|
+
# when
|
|
131
|
+
response = index.admin(request)
|
|
132
|
+
# then
|
|
133
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
134
|
+
mock_messages.info.assert_called_once_with(
|
|
135
|
+
request, "Queued Update All Characters"
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
def test_run_corp_updates(self, mock_messages):
|
|
139
|
+
"""Test Run corp updates."""
|
|
140
|
+
# given
|
|
141
|
+
self.superuser.is_superuser = True
|
|
142
|
+
self.superuser.save()
|
|
143
|
+
request = self.factory.post(
|
|
144
|
+
reverse("ledger:admin"), data={"run_corp_updates": True}
|
|
145
|
+
)
|
|
146
|
+
request.user = self.superuser
|
|
147
|
+
|
|
148
|
+
middleware = SessionMiddleware(Mock())
|
|
149
|
+
middleware.process_request(request)
|
|
150
|
+
# when
|
|
151
|
+
response = index.admin(request)
|
|
152
|
+
# then
|
|
153
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
154
|
+
mock_messages.info.assert_called_once_with(
|
|
155
|
+
request, "Queued Update All Corporations"
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
class TestViewCharacterLedgerAccess(TestCase):
|
|
160
|
+
@classmethod
|
|
161
|
+
def setUpClass(cls):
|
|
162
|
+
super().setUpClass()
|
|
163
|
+
load_allianceauth()
|
|
164
|
+
load_eveuniverse()
|
|
165
|
+
|
|
166
|
+
cls.factory = RequestFactory()
|
|
167
|
+
cls.user, cls.character_ownership = create_user_from_evecharacter_with_access(
|
|
168
|
+
1001
|
|
169
|
+
)
|
|
170
|
+
cls.user2, cls.character_ownership2 = create_user_from_evecharacter_with_access(
|
|
171
|
+
1002
|
|
172
|
+
)
|
|
173
|
+
cls.audit = add_characteraudit_character_to_user(
|
|
174
|
+
cls.user, cls.character_ownership.character.character_id
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
def test_view_character_ledger(self):
|
|
178
|
+
"""Test view character ledger."""
|
|
179
|
+
# given
|
|
180
|
+
request = self.factory.get(
|
|
181
|
+
reverse(
|
|
182
|
+
"ledger:character_ledger",
|
|
183
|
+
args=[self.character_ownership.character.character_id],
|
|
184
|
+
)
|
|
185
|
+
)
|
|
186
|
+
request.user = self.user
|
|
187
|
+
# when
|
|
188
|
+
response = character_ledger.character_ledger(
|
|
189
|
+
request, self.character_ownership.character.character_id
|
|
190
|
+
)
|
|
191
|
+
# then
|
|
192
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
193
|
+
self.assertContains(response, "Character Ledger")
|
|
194
|
+
|
|
195
|
+
@patch(CHARLEDGER_PATH + ".messages")
|
|
196
|
+
def test_view_character_ledger_without_permission(self, mock_messages):
|
|
197
|
+
"""Test view character ledger without permission."""
|
|
198
|
+
# given
|
|
199
|
+
request = self.factory.get(reverse("ledger:character_ledger", args=[1003]))
|
|
200
|
+
request.user = self.user
|
|
201
|
+
|
|
202
|
+
# Add session middleware to process the request
|
|
203
|
+
middleware = SessionMiddleware(Mock())
|
|
204
|
+
middleware.process_request(request)
|
|
205
|
+
message_middleware = MessageMiddleware(Mock())
|
|
206
|
+
message_middleware.process_request(request)
|
|
207
|
+
# when
|
|
208
|
+
response = character_ledger.character_ledger(request, 1003)
|
|
209
|
+
# then
|
|
210
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
211
|
+
self.assertContains(response, "Character Ledger")
|
|
212
|
+
self.assertTrue(mock_messages.error.called)
|
|
213
|
+
|
|
214
|
+
def test_view_character_details(self):
|
|
215
|
+
"""Test view character details."""
|
|
216
|
+
# given
|
|
217
|
+
request = self.factory.get(
|
|
218
|
+
reverse(
|
|
219
|
+
"ledger:character_details",
|
|
220
|
+
args=[self.character_ownership.character.character_id, 2025],
|
|
221
|
+
)
|
|
222
|
+
)
|
|
223
|
+
request.user = self.user
|
|
224
|
+
# when
|
|
225
|
+
response = character_ledger.character_details(
|
|
226
|
+
request, self.character_ownership.character.character_id, year=2025
|
|
227
|
+
)
|
|
228
|
+
# then
|
|
229
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
230
|
+
self.assertContains(
|
|
231
|
+
response,
|
|
232
|
+
"No ratting data found...",
|
|
233
|
+
)
|
|
234
|
+
|
|
235
|
+
def test_view_character_details_no_permission(self):
|
|
236
|
+
"""Test view character details."""
|
|
237
|
+
# given
|
|
238
|
+
request = self.factory.get(
|
|
239
|
+
reverse(
|
|
240
|
+
"ledger:character_details",
|
|
241
|
+
args=[self.character_ownership.character.character_id, 2025],
|
|
242
|
+
)
|
|
243
|
+
)
|
|
244
|
+
request.user = self.user2
|
|
245
|
+
|
|
246
|
+
# when
|
|
247
|
+
response = character_ledger.character_details(
|
|
248
|
+
request, self.character_ownership.character.character_id, year=2025
|
|
249
|
+
)
|
|
250
|
+
# then
|
|
251
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
252
|
+
self.assertContains(response, "Permission Denied")
|
|
253
|
+
|
|
254
|
+
def test_view_character_overview(self):
|
|
255
|
+
"""Test view character overview."""
|
|
256
|
+
# given
|
|
257
|
+
request = self.factory.get(reverse("ledger:character_overview"))
|
|
258
|
+
request.user = self.user
|
|
259
|
+
# when
|
|
260
|
+
response = character_ledger.character_overview(request)
|
|
261
|
+
# then
|
|
262
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
263
|
+
self.assertContains(response, "Character Overview")
|
|
264
|
+
|
|
265
|
+
def test_view_character_administration(self):
|
|
266
|
+
"""Test view character administration."""
|
|
267
|
+
# given
|
|
268
|
+
request = self.factory.get(
|
|
269
|
+
reverse(
|
|
270
|
+
"ledger:character_administration",
|
|
271
|
+
args=[self.character_ownership.character.character_id],
|
|
272
|
+
)
|
|
273
|
+
)
|
|
274
|
+
request.user = self.user
|
|
275
|
+
# when
|
|
276
|
+
response = character_ledger.character_administration(
|
|
277
|
+
request, self.character_ownership.character.character_id
|
|
278
|
+
)
|
|
279
|
+
# then
|
|
280
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
281
|
+
self.assertContains(response, "Administration")
|
|
282
|
+
|
|
283
|
+
def test_view_character_administration_withouth_character_id(self):
|
|
284
|
+
"""Test view character administration."""
|
|
285
|
+
# given
|
|
286
|
+
request = self.factory.get(
|
|
287
|
+
reverse(
|
|
288
|
+
"ledger:character_administration",
|
|
289
|
+
args=[self.character_ownership.character.character_id],
|
|
290
|
+
)
|
|
291
|
+
)
|
|
292
|
+
request.user = self.user
|
|
293
|
+
# when
|
|
294
|
+
response = character_ledger.character_administration(request)
|
|
295
|
+
# then
|
|
296
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
297
|
+
self.assertContains(response, "Administration")
|
|
298
|
+
|
|
299
|
+
@patch(CHARLEDGER_PATH + ".messages")
|
|
300
|
+
def test_view_character_administration_no_permission(self, mock_messages):
|
|
301
|
+
"""Test view character administration."""
|
|
302
|
+
# given
|
|
303
|
+
request = self.factory.get(
|
|
304
|
+
reverse("ledger:character_administration", args=[1002])
|
|
305
|
+
)
|
|
306
|
+
request.user = self.user
|
|
307
|
+
middleware = SessionMiddleware(Mock())
|
|
308
|
+
middleware.process_request(request)
|
|
309
|
+
# when
|
|
310
|
+
response = character_ledger.character_administration(request, 1002)
|
|
311
|
+
# then
|
|
312
|
+
self.assertEqual(response.status_code, HTTPStatus.FOUND)
|
|
313
|
+
mock_messages.error.assert_called_once_with(request, "Permission Denied")
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
class TestViewCorporationLedgerAccess(TestCase):
|
|
317
|
+
@classmethod
|
|
318
|
+
def setUpClass(cls):
|
|
319
|
+
super().setUpClass()
|
|
320
|
+
load_allianceauth()
|
|
321
|
+
load_eveuniverse()
|
|
322
|
+
|
|
323
|
+
cls.factory = RequestFactory()
|
|
324
|
+
cls.user, cls.character_ownership = create_user_from_evecharacter(
|
|
325
|
+
1001,
|
|
326
|
+
permissions=[
|
|
327
|
+
"ledger.basic_access",
|
|
328
|
+
"ledger.advanced_access",
|
|
329
|
+
"ledger.manage_access",
|
|
330
|
+
"ledger.corp_audit_manager",
|
|
331
|
+
],
|
|
332
|
+
)
|
|
333
|
+
cls.user_no_perm, cls.character_ownership_no_perm = (
|
|
334
|
+
create_user_from_evecharacter(
|
|
335
|
+
1002,
|
|
336
|
+
permissions=[
|
|
337
|
+
"ledger.basic_access",
|
|
338
|
+
"ledger.advanced_access",
|
|
339
|
+
"ledger.manage_access",
|
|
340
|
+
],
|
|
341
|
+
)
|
|
342
|
+
)
|
|
343
|
+
cls.audit = add_corporationaudit_corporation_to_user(cls.user, 1001)
|
|
344
|
+
|
|
345
|
+
def test_view_corporation_ledger_index(self):
|
|
346
|
+
"""Test view corporation ledger index."""
|
|
347
|
+
# given
|
|
348
|
+
request = self.factory.get(reverse("ledger:corporation_ledger_index"))
|
|
349
|
+
request.user = self.user
|
|
350
|
+
# when
|
|
351
|
+
response = corporation_ledger.corporation_ledger_index(request)
|
|
352
|
+
# then
|
|
353
|
+
self.assertEqual(response.status_code, HTTPStatus.FOUND)
|
|
354
|
+
|
|
355
|
+
def test_view_corporation_ledger(self):
|
|
356
|
+
"""Test view corporation ledger."""
|
|
357
|
+
# given
|
|
358
|
+
request = self.factory.get(
|
|
359
|
+
reverse(
|
|
360
|
+
"ledger:corporation_ledger",
|
|
361
|
+
args=[self.character_ownership.character.corporation_id],
|
|
362
|
+
)
|
|
363
|
+
)
|
|
364
|
+
request.user = self.user
|
|
365
|
+
# when
|
|
366
|
+
response = corporation_ledger.corporation_ledger(
|
|
367
|
+
request, self.character_ownership.character.corporation_id
|
|
368
|
+
)
|
|
369
|
+
# then
|
|
370
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
371
|
+
self.assertContains(response, "Corporation Ledger")
|
|
372
|
+
|
|
373
|
+
@patch(CORPLEDGER_PATH + ".messages")
|
|
374
|
+
def test_view_corporation_ledger_not_found(self, mock_messages):
|
|
375
|
+
"""Test view corporation ledger not found."""
|
|
376
|
+
# given
|
|
377
|
+
request = self.factory.get(reverse("ledger:corporation_ledger", args=[9999]))
|
|
378
|
+
request.user = self.user
|
|
379
|
+
|
|
380
|
+
# Add session middleware to process the request
|
|
381
|
+
middleware = SessionMiddleware(Mock())
|
|
382
|
+
middleware.process_request(request)
|
|
383
|
+
message_middleware = MessageMiddleware(Mock())
|
|
384
|
+
message_middleware.process_request(request)
|
|
385
|
+
# when
|
|
386
|
+
response = corporation_ledger.corporation_ledger(request, 9999)
|
|
387
|
+
# then
|
|
388
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
389
|
+
self.assertContains(response, "Corporation Ledger")
|
|
390
|
+
self.assertTrue(mock_messages.info.called)
|
|
391
|
+
|
|
392
|
+
@patch(CORPLEDGER_PATH + ".messages")
|
|
393
|
+
def test_view_corporation_ledger_without_permission(self, mock_messages):
|
|
394
|
+
"""Test view corporation ledger without permission."""
|
|
395
|
+
# given
|
|
396
|
+
request = self.factory.get(reverse("ledger:corporation_ledger", args=[2001]))
|
|
397
|
+
request.user = self.user_no_perm
|
|
398
|
+
|
|
399
|
+
# Add session middleware to process the request
|
|
400
|
+
middleware = SessionMiddleware(Mock())
|
|
401
|
+
middleware.process_request(request)
|
|
402
|
+
message_middleware = MessageMiddleware(Mock())
|
|
403
|
+
message_middleware.process_request(request)
|
|
404
|
+
# when
|
|
405
|
+
response = corporation_ledger.corporation_ledger(request, 2001)
|
|
406
|
+
# then
|
|
407
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
408
|
+
self.assertContains(response, "Corporation Ledger")
|
|
409
|
+
self.assertTrue(mock_messages.error.called)
|
|
410
|
+
|
|
411
|
+
def test_view_corporation_details(self):
|
|
412
|
+
"""Test view corporation details."""
|
|
413
|
+
# given
|
|
414
|
+
request = self.factory.get(
|
|
415
|
+
reverse(
|
|
416
|
+
"ledger:corporation_details",
|
|
417
|
+
args=[self.character_ownership.character.corporation_id, 2025, 1001],
|
|
418
|
+
)
|
|
419
|
+
)
|
|
420
|
+
request.user = self.user
|
|
421
|
+
# when
|
|
422
|
+
response = corporation_ledger.corporation_details(
|
|
423
|
+
request,
|
|
424
|
+
self.character_ownership.character.corporation_id,
|
|
425
|
+
entity_id=1001,
|
|
426
|
+
year=2025,
|
|
427
|
+
)
|
|
428
|
+
# then
|
|
429
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
430
|
+
self.assertContains(response, "No ratting data found...")
|
|
431
|
+
|
|
432
|
+
def test_view_corporation_details_no_permission(self):
|
|
433
|
+
"""Test view corporation details."""
|
|
434
|
+
# given
|
|
435
|
+
request = self.factory.get(
|
|
436
|
+
reverse(
|
|
437
|
+
"ledger:corporation_details",
|
|
438
|
+
args=[2001, 2025, 1001],
|
|
439
|
+
)
|
|
440
|
+
)
|
|
441
|
+
request.user = self.user_no_perm
|
|
442
|
+
|
|
443
|
+
# when
|
|
444
|
+
response = corporation_ledger.corporation_details(
|
|
445
|
+
request, 2001, entity_id=1001, year=2025
|
|
446
|
+
)
|
|
447
|
+
# then
|
|
448
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
449
|
+
self.assertContains(response, "Permission Denied")
|
|
450
|
+
|
|
451
|
+
def test_view_corporation_details_not_found(self):
|
|
452
|
+
"""Test view corporation details."""
|
|
453
|
+
# given
|
|
454
|
+
request = self.factory.get(
|
|
455
|
+
reverse(
|
|
456
|
+
"ledger:corporation_details",
|
|
457
|
+
args=[9999, 2025, 9999],
|
|
458
|
+
)
|
|
459
|
+
)
|
|
460
|
+
request.user = self.user_no_perm
|
|
461
|
+
|
|
462
|
+
# when
|
|
463
|
+
response = corporation_ledger.corporation_details(
|
|
464
|
+
request, 9999, entity_id=9999, year=2025
|
|
465
|
+
)
|
|
466
|
+
# then
|
|
467
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
468
|
+
self.assertContains(response, "Corporation not found")
|
|
469
|
+
|
|
470
|
+
def test_view_corporation_overview(self):
|
|
471
|
+
"""Test view corporation overview."""
|
|
472
|
+
# given
|
|
473
|
+
request = self.factory.get(reverse("ledger:corporation_overview"))
|
|
474
|
+
request.user = self.user
|
|
475
|
+
# when
|
|
476
|
+
response = corporation_ledger.corporation_overview(request)
|
|
477
|
+
# then
|
|
478
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
479
|
+
self.assertContains(response, "Corporation Overview")
|
|
480
|
+
|
|
481
|
+
def test_view_corporation_administration(self):
|
|
482
|
+
"""Test view corporation administration."""
|
|
483
|
+
# given
|
|
484
|
+
request = self.factory.get(
|
|
485
|
+
reverse(
|
|
486
|
+
"ledger:corporation_administration",
|
|
487
|
+
args=[self.character_ownership.character.corporation_id],
|
|
488
|
+
)
|
|
489
|
+
)
|
|
490
|
+
request.user = self.user
|
|
491
|
+
# when
|
|
492
|
+
response = corporation_ledger.corporation_administration(
|
|
493
|
+
request, self.character_ownership.character.corporation_id
|
|
494
|
+
)
|
|
495
|
+
# then
|
|
496
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
497
|
+
self.assertContains(response, "Administration")
|
|
498
|
+
|
|
499
|
+
@patch(CORPLEDGER_PATH + ".messages")
|
|
500
|
+
def test_view_corporation_administration_no_permission(self, mock_messages):
|
|
501
|
+
"""Test view corporation administration."""
|
|
502
|
+
# given
|
|
503
|
+
request = self.factory.get(
|
|
504
|
+
reverse("ledger:corporation_administration", args=[2001])
|
|
505
|
+
)
|
|
506
|
+
request.user = self.user_no_perm
|
|
507
|
+
middleware = SessionMiddleware(Mock())
|
|
508
|
+
middleware.process_request(request)
|
|
509
|
+
# when
|
|
510
|
+
response = corporation_ledger.corporation_administration(request, 2001)
|
|
511
|
+
# then
|
|
512
|
+
self.assertEqual(response.status_code, HTTPStatus.FOUND)
|
|
513
|
+
mock_messages.error.assert_called_once_with(request, "Permission Denied")
|
|
514
|
+
|
|
515
|
+
@patch(CORPLEDGER_PATH + ".messages")
|
|
516
|
+
def test_view_corporation_administration_corporation_not_found(self, mock_messages):
|
|
517
|
+
"""Test view corporation administration."""
|
|
518
|
+
# given
|
|
519
|
+
request = self.factory.get(
|
|
520
|
+
reverse("ledger:corporation_administration", args=[6666])
|
|
521
|
+
)
|
|
522
|
+
request.user = self.user
|
|
523
|
+
middleware = SessionMiddleware(Mock())
|
|
524
|
+
middleware.process_request(request)
|
|
525
|
+
# when
|
|
526
|
+
response = corporation_ledger.corporation_administration(request, 6666)
|
|
527
|
+
# then
|
|
528
|
+
self.assertEqual(response.status_code, HTTPStatus.FOUND)
|
|
529
|
+
mock_messages.info.assert_called_once_with(request, "Corporation not found")
|
|
530
|
+
|
|
531
|
+
|
|
532
|
+
class TestViewAllianceLedgerAccess(TestCase):
|
|
533
|
+
@classmethod
|
|
534
|
+
def setUpClass(cls):
|
|
535
|
+
super().setUpClass()
|
|
536
|
+
load_allianceauth()
|
|
537
|
+
load_eveuniverse()
|
|
538
|
+
|
|
539
|
+
cls.factory = RequestFactory()
|
|
540
|
+
cls.user, cls.character_ownership = create_user_from_evecharacter(
|
|
541
|
+
1001,
|
|
542
|
+
permissions=[
|
|
543
|
+
"ledger.basic_access",
|
|
544
|
+
"ledger.advanced_access",
|
|
545
|
+
],
|
|
546
|
+
)
|
|
547
|
+
cls.user_no_perm, cls.character_ownership_no_perm = (
|
|
548
|
+
create_user_from_evecharacter(
|
|
549
|
+
1003,
|
|
550
|
+
permissions=[
|
|
551
|
+
"ledger.basic_access",
|
|
552
|
+
"ledger.advanced_access",
|
|
553
|
+
],
|
|
554
|
+
)
|
|
555
|
+
)
|
|
556
|
+
cls.user_admin, cls.character_ownership_admin = create_user_from_evecharacter(
|
|
557
|
+
1002,
|
|
558
|
+
permissions=[
|
|
559
|
+
"ledger.basic_access",
|
|
560
|
+
"ledger.advanced_access",
|
|
561
|
+
"ledger.manage_access",
|
|
562
|
+
],
|
|
563
|
+
)
|
|
564
|
+
cls.audit = add_corporationaudit_corporation_to_user(cls.user, 1001)
|
|
565
|
+
cls.audit_admin = add_corporationaudit_corporation_to_user(cls.user_admin, 1002)
|
|
566
|
+
cls.user_has_no_alliance, cls.character_ownership_no_alliance = (
|
|
567
|
+
create_user_from_evecharacter(
|
|
568
|
+
1000,
|
|
569
|
+
permissions=[
|
|
570
|
+
"ledger.basic_access",
|
|
571
|
+
"ledger.advanced_access",
|
|
572
|
+
],
|
|
573
|
+
)
|
|
574
|
+
)
|
|
575
|
+
|
|
576
|
+
def test_view_alliance_ledger_index(self):
|
|
577
|
+
"""Test view alliance ledger index."""
|
|
578
|
+
# given
|
|
579
|
+
request = self.factory.get(reverse("ledger:alliance_ledger_index"))
|
|
580
|
+
request.user = self.user
|
|
581
|
+
# when
|
|
582
|
+
response = alliance_ledger.alliance_ledger_index(request)
|
|
583
|
+
# then
|
|
584
|
+
self.assertEqual(response.status_code, HTTPStatus.FOUND)
|
|
585
|
+
|
|
586
|
+
@patch(ALLYLEDGER_PATH + ".messages")
|
|
587
|
+
def test_view_alliance_ledger_index_exception(self, mock_messages):
|
|
588
|
+
"""Test view alliance ledger."""
|
|
589
|
+
# given
|
|
590
|
+
request = self.factory.get(
|
|
591
|
+
reverse(
|
|
592
|
+
"ledger:alliance_ledger_index",
|
|
593
|
+
)
|
|
594
|
+
)
|
|
595
|
+
middleware = SessionMiddleware(Mock())
|
|
596
|
+
middleware.process_request(request)
|
|
597
|
+
request.user = self.user_has_no_alliance
|
|
598
|
+
# when
|
|
599
|
+
response = alliance_ledger.alliance_ledger_index(request)
|
|
600
|
+
# then
|
|
601
|
+
self.assertEqual(response.status_code, HTTPStatus.FOUND)
|
|
602
|
+
mock_messages.error.assert_called_once_with(
|
|
603
|
+
request, "You do not have an alliance."
|
|
604
|
+
)
|
|
605
|
+
|
|
606
|
+
def test_view_alliance_ledger(self):
|
|
607
|
+
"""Test view alliance ledger."""
|
|
608
|
+
# given
|
|
609
|
+
request = self.factory.get(
|
|
610
|
+
reverse(
|
|
611
|
+
"ledger:alliance_ledger",
|
|
612
|
+
args=[self.character_ownership.character.alliance_id],
|
|
613
|
+
)
|
|
614
|
+
)
|
|
615
|
+
request.user = self.user
|
|
616
|
+
# when
|
|
617
|
+
response = alliance_ledger.alliance_ledger(
|
|
618
|
+
request, self.character_ownership.character.alliance_id
|
|
619
|
+
)
|
|
620
|
+
# then
|
|
621
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
622
|
+
self.assertContains(response, "Alliance Ledger")
|
|
623
|
+
|
|
624
|
+
@patch(ALLYLEDGER_PATH + ".messages")
|
|
625
|
+
def test_view_alliance_ledger_not_found(self, mock_messages):
|
|
626
|
+
"""Test view alliance ledger not found."""
|
|
627
|
+
# given
|
|
628
|
+
request = self.factory.get(reverse("ledger:alliance_ledger", args=[9999]))
|
|
629
|
+
request.user = self.user
|
|
630
|
+
|
|
631
|
+
# Add session middleware to process the request
|
|
632
|
+
middleware = SessionMiddleware(Mock())
|
|
633
|
+
middleware.process_request(request)
|
|
634
|
+
message_middleware = MessageMiddleware(Mock())
|
|
635
|
+
message_middleware.process_request(request)
|
|
636
|
+
# when
|
|
637
|
+
response = alliance_ledger.alliance_ledger(request, 9999)
|
|
638
|
+
# then
|
|
639
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
640
|
+
self.assertContains(response, "Alliance Ledger")
|
|
641
|
+
self.assertTrue(mock_messages.info.called)
|
|
642
|
+
|
|
643
|
+
@patch(ALLYLEDGER_PATH + ".messages")
|
|
644
|
+
def test_view_alliance_ledger_without_permission(self, mock_messages):
|
|
645
|
+
"""Test view alliance ledger without permission."""
|
|
646
|
+
# given
|
|
647
|
+
request = self.factory.get(reverse("ledger:alliance_ledger", args=[3001]))
|
|
648
|
+
request.user = self.user_no_perm
|
|
649
|
+
|
|
650
|
+
# Add session middleware to process the request
|
|
651
|
+
middleware = SessionMiddleware(Mock())
|
|
652
|
+
middleware.process_request(request)
|
|
653
|
+
message_middleware = MessageMiddleware(Mock())
|
|
654
|
+
message_middleware.process_request(request)
|
|
655
|
+
# when
|
|
656
|
+
response = alliance_ledger.alliance_ledger(request, 3001)
|
|
657
|
+
# then
|
|
658
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
659
|
+
self.assertContains(response, "Alliance Ledger")
|
|
660
|
+
self.assertTrue(mock_messages.error.called)
|
|
661
|
+
|
|
662
|
+
def test_view_alliance_details(self):
|
|
663
|
+
"""Test view alliance details."""
|
|
664
|
+
# given
|
|
665
|
+
request = self.factory.get(
|
|
666
|
+
reverse(
|
|
667
|
+
"ledger:alliance_details",
|
|
668
|
+
args=[self.character_ownership.character.alliance_id, 2025, 1001],
|
|
669
|
+
)
|
|
670
|
+
)
|
|
671
|
+
request.user = self.user
|
|
672
|
+
# when
|
|
673
|
+
response = alliance_ledger.alliance_details(
|
|
674
|
+
request,
|
|
675
|
+
self.character_ownership.character.alliance_id,
|
|
676
|
+
entity_id=1001,
|
|
677
|
+
year=2025,
|
|
678
|
+
)
|
|
679
|
+
# then
|
|
680
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
681
|
+
self.assertContains(response, "No ratting data found...")
|
|
682
|
+
|
|
683
|
+
def test_view_alliance_details_no_permission(self):
|
|
684
|
+
"""Test view alliance details without permission."""
|
|
685
|
+
# given
|
|
686
|
+
request = self.factory.get(
|
|
687
|
+
reverse(
|
|
688
|
+
"ledger:alliance_details",
|
|
689
|
+
args=[3001, 2025, 2001],
|
|
690
|
+
)
|
|
691
|
+
)
|
|
692
|
+
request.user = self.user_no_perm
|
|
693
|
+
|
|
694
|
+
# when
|
|
695
|
+
response = alliance_ledger.alliance_details(
|
|
696
|
+
request, 3001, entity_id=2001, year=2025
|
|
697
|
+
)
|
|
698
|
+
# then
|
|
699
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
700
|
+
self.assertContains(response, "Permission Denied")
|
|
701
|
+
|
|
702
|
+
def test_view_alliance_details_not_found(self):
|
|
703
|
+
"""Test view alliance details not found."""
|
|
704
|
+
# given
|
|
705
|
+
request = self.factory.get(
|
|
706
|
+
reverse(
|
|
707
|
+
"ledger:alliance_details",
|
|
708
|
+
args=[9999, 2025, 9999],
|
|
709
|
+
)
|
|
710
|
+
)
|
|
711
|
+
request.user = self.user_no_perm
|
|
712
|
+
|
|
713
|
+
# when
|
|
714
|
+
response = alliance_ledger.alliance_details(
|
|
715
|
+
request, 9999, entity_id=9999, year=2025
|
|
716
|
+
)
|
|
717
|
+
# then
|
|
718
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
719
|
+
self.assertContains(response, "Alliance not found.")
|
|
720
|
+
|
|
721
|
+
def test_view_alliance_overview(self):
|
|
722
|
+
"""Test view alliance overview."""
|
|
723
|
+
# given
|
|
724
|
+
request = self.factory.get(reverse("ledger:alliance_overview"))
|
|
725
|
+
request.user = self.user
|
|
726
|
+
# when
|
|
727
|
+
response = alliance_ledger.alliance_overview(request)
|
|
728
|
+
# then
|
|
729
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
730
|
+
self.assertContains(response, "Alliance Overview")
|
|
731
|
+
|
|
732
|
+
def test_view_alliance_administration(self):
|
|
733
|
+
"""Test view alliance administration."""
|
|
734
|
+
# given
|
|
735
|
+
request = self.factory.get(
|
|
736
|
+
reverse(
|
|
737
|
+
"ledger:alliance_administration",
|
|
738
|
+
args=[self.character_ownership_admin.character.alliance_id],
|
|
739
|
+
)
|
|
740
|
+
)
|
|
741
|
+
request.user = self.user_admin
|
|
742
|
+
# when
|
|
743
|
+
response = alliance_ledger.alliance_administration(
|
|
744
|
+
request, self.character_ownership_admin.character.alliance_id
|
|
745
|
+
)
|
|
746
|
+
# then
|
|
747
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
748
|
+
self.assertContains(response, "Administration")
|
|
749
|
+
|
|
750
|
+
@patch(ALLYLEDGER_PATH + ".messages")
|
|
751
|
+
def test_view_alliance_administration_no_permission(self, mock_messages):
|
|
752
|
+
"""Test view alliance administration."""
|
|
753
|
+
# given
|
|
754
|
+
request = self.factory.get(
|
|
755
|
+
reverse("ledger:alliance_administration", args=[3001])
|
|
756
|
+
)
|
|
757
|
+
request.user = self.user_admin
|
|
758
|
+
middleware = SessionMiddleware(Mock())
|
|
759
|
+
middleware.process_request(request)
|
|
760
|
+
# when
|
|
761
|
+
response = alliance_ledger.alliance_administration(request, 3001)
|
|
762
|
+
# then
|
|
763
|
+
self.assertEqual(response.status_code, HTTPStatus.FOUND)
|
|
764
|
+
mock_messages.error.assert_called_once_with(request, "Permission Denied")
|
|
765
|
+
|
|
766
|
+
@patch(ALLYLEDGER_PATH + ".messages")
|
|
767
|
+
def test_view_alliance_administration_alliance_not_found(self, mock_messages):
|
|
768
|
+
"""Test view alliance administration."""
|
|
769
|
+
# given
|
|
770
|
+
request = self.factory.get(
|
|
771
|
+
reverse("ledger:alliance_administration", args=[6666])
|
|
772
|
+
)
|
|
773
|
+
request.user = self.user_admin
|
|
774
|
+
middleware = SessionMiddleware(Mock())
|
|
775
|
+
middleware.process_request(request)
|
|
776
|
+
# when
|
|
777
|
+
response = alliance_ledger.alliance_administration(request, 6666)
|
|
778
|
+
# then
|
|
779
|
+
self.assertEqual(response.status_code, HTTPStatus.FOUND)
|
|
780
|
+
mock_messages.info.assert_called_once_with(request, "Alliance not found.")
|
|
781
|
+
|
|
782
|
+
|
|
783
|
+
class TestViewPlanetaryLedgerAccess(TestCase):
|
|
784
|
+
@classmethod
|
|
785
|
+
def setUpClass(cls):
|
|
786
|
+
super().setUpClass()
|
|
787
|
+
load_allianceauth()
|
|
788
|
+
load_eveuniverse()
|
|
789
|
+
|
|
790
|
+
cls.factory = RequestFactory()
|
|
791
|
+
cls.user, cls.character_ownership = create_user_from_evecharacter(
|
|
792
|
+
1001,
|
|
793
|
+
permissions=[
|
|
794
|
+
"ledger.basic_access",
|
|
795
|
+
"ledger.advanced_access",
|
|
796
|
+
],
|
|
797
|
+
)
|
|
798
|
+
|
|
799
|
+
def test_view_planetary_ledger_index(self):
|
|
800
|
+
"""Test view planetary ledger index."""
|
|
801
|
+
# given
|
|
802
|
+
request = self.factory.get(reverse("ledger:planetary_ledger_index"))
|
|
803
|
+
request.user = self.user
|
|
804
|
+
# when
|
|
805
|
+
response = planetary.planetary_ledger_index(request)
|
|
806
|
+
# then
|
|
807
|
+
self.assertEqual(response.status_code, HTTPStatus.FOUND)
|
|
808
|
+
|
|
809
|
+
def test_view_planetary_ledger(self):
|
|
810
|
+
"""Test view planetary ledger."""
|
|
811
|
+
# given
|
|
812
|
+
request = self.factory.get(
|
|
813
|
+
reverse(
|
|
814
|
+
"ledger:planetary_ledger",
|
|
815
|
+
args=[self.character_ownership.character.character_id],
|
|
816
|
+
)
|
|
817
|
+
)
|
|
818
|
+
request.user = self.user
|
|
819
|
+
# when
|
|
820
|
+
response = planetary.planetary_ledger(
|
|
821
|
+
request, self.character_ownership.character.character_id
|
|
822
|
+
)
|
|
823
|
+
# then
|
|
824
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
825
|
+
self.assertContains(response, "Planetary Details")
|
|
826
|
+
|
|
827
|
+
def test_view_planetary_ledger_without_character_id(self):
|
|
828
|
+
"""Test view character ledger."""
|
|
829
|
+
# given
|
|
830
|
+
request = self.factory.get(
|
|
831
|
+
reverse(
|
|
832
|
+
"ledger:planetary_ledger",
|
|
833
|
+
args=[self.character_ownership.character.character_id],
|
|
834
|
+
)
|
|
835
|
+
)
|
|
836
|
+
request.user = self.user
|
|
837
|
+
# when
|
|
838
|
+
response = planetary.planetary_ledger(request)
|
|
839
|
+
# then
|
|
840
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
841
|
+
self.assertContains(response, "Planetary Details")
|
|
842
|
+
|
|
843
|
+
def test_view_planetary_overview(self):
|
|
844
|
+
"""Test view planetary overview."""
|
|
845
|
+
# given
|
|
846
|
+
request = self.factory.get(reverse("ledger:planetary_overview"))
|
|
847
|
+
request.user = self.user
|
|
848
|
+
# when
|
|
849
|
+
response = planetary.planetary_overview(request)
|
|
850
|
+
# then
|
|
851
|
+
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
852
|
+
self.assertContains(response, "Planetary Overview")
|