11
11
class TestIsCompanyUserPermission (
12
12
business .tests .promocodes .base .BasePromoTestCase ,
13
13
):
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
+
14
27
def setUp (self ):
15
28
self .factory = rest_framework .test .APIRequestFactory ()
16
29
self .permission = business .permissions .IsCompanyUser ()
17
30
get_user_model = django .contrib .auth .get_user_model
18
31
self .regular_user = get_user_model ().objects .create_user (
19
32
name = 'regular' ,
20
- password = 'testpass123 ' ,
33
+ password = 'SecurePass123! ' ,
21
34
surname = 'adadioa' ,
22
35
23
36
)
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 ,
28
48
)
49
+ return response .data ['id' ]
29
50
30
51
def tearDown (self ):
31
52
business .models .Company .objects .all ().delete ()
32
53
user .models .User .objects .all ().delete ()
33
54
34
55
def test_has_permission_for_company_user (self ):
35
56
request = self .factory .get (self .promo_create_url )
36
- request .user = self .company_user
57
+ request .user = self .company1
37
58
self .assertTrue (self .permission .has_permission (request , None ))
38
59
39
60
def test_has_permission_for_regular_user (self ):
@@ -45,3 +66,16 @@ def test_has_permission_for_anonymous_user(self):
45
66
request = self .factory .get (self .promo_create_url )
46
67
request .user = None
47
68
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