Skip to content

Commit 669cc9f

Browse files
test: Add 403 error test, update auth test
1 parent 2ad576d commit 669cc9f

File tree

2 files changed

+41
-7
lines changed

2 files changed

+41
-7
lines changed

promo_code/business/tests/auth/test_tokens.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ def test_missing_company_id(self):
187187
rest_framework.status.HTTP_401_UNAUTHORIZED,
188188
)
189189
self.assertIn(
190-
'Company ID missing in token',
190+
'Invalid or missing company_id in token',
191191
str(response.content.decode()),
192192
)
193193

promo_code/business/tests/promocodes/test_permissions.py

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,29 +11,50 @@
1111
class TestIsCompanyUserPermission(
1212
business.tests.promocodes.base.BasePromoTestCase,
1313
):
14+
@classmethod
15+
def setUpClass(cls):
16+
super().setUpClass()
17+
18+
cls.unique_payload = {
19+
'description': 'Complimentary Pudge Skin on Registration!',
20+
'target': {},
21+
'max_count': 1,
22+
'mode': 'UNIQUE',
23+
'active_from': '2030-08-08',
24+
'promo_unique': ['dota-arena', 'coda-core', 'warcraft3'],
25+
}
26+
1427
def setUp(self):
1528
self.factory = rest_framework.test.APIRequestFactory()
1629
self.permission = business.permissions.IsCompanyUser()
1730
get_user_model = django.contrib.auth.get_user_model
1831
self.regular_user = get_user_model().objects.create_user(
1932
name='regular',
20-
password='testpass123',
33+
password='SecurePass123!',
2134
surname='adadioa',
2235
2336
)
24-
self.company_user = business.models.Company.objects.create_company(
25-
password='testpass123',
26-
name='Test Company',
27-
37+
38+
def create_promo(self, token, payload):
39+
self.client.credentials(HTTP_AUTHORIZATION='Bearer ' + token)
40+
response = self.client.post(
41+
self.promo_create_url,
42+
payload,
43+
format='json',
44+
)
45+
self.assertEqual(
46+
response.status_code,
47+
rest_framework.status.HTTP_201_CREATED,
2848
)
49+
return response.data['id']
2950

3051
def tearDown(self):
3152
business.models.Company.objects.all().delete()
3253
user.models.User.objects.all().delete()
3354

3455
def test_has_permission_for_company_user(self):
3556
request = self.factory.get(self.promo_create_url)
36-
request.user = self.company_user
57+
request.user = self.company1
3758
self.assertTrue(self.permission.has_permission(request, None))
3859

3960
def test_has_permission_for_regular_user(self):
@@ -45,3 +66,16 @@ def test_has_permission_for_anonymous_user(self):
4566
request = self.factory.get(self.promo_create_url)
4667
request.user = None
4768
self.assertFalse(self.permission.has_permission(request, None))
69+
70+
def test_has_permission_to_foreign_promo(self):
71+
promo_id = self.create_promo(self.company2_token, self.unique_payload)
72+
self.client.credentials(
73+
HTTP_AUTHORIZATION='Bearer ' + self.company1_token,
74+
)
75+
url = self.promo_detail_url(promo_id)
76+
patch_payload = {'description': '100% Cashback'}
77+
response = self.client.patch(url, patch_payload, format='json')
78+
self.assertEqual(
79+
response.status_code,
80+
rest_framework.status.HTTP_403_FORBIDDEN,
81+
)

0 commit comments

Comments
 (0)