1111class 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 email = 'example@gmail.com' ,
2336 )
24- self .company_user = business .models .Company .objects .create_company (
25- password = 'testpass123' ,
26- name = 'Test Company' ,
27- email = 'exampl3e@gmail.com' ,
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