66from tests .factories .ticket import TicketSubFactory
77
88
9- def get_minimal_attendee (db ):
9+ def get_minimal_attendee (db , user ):
1010 attendee = AttendeeOrderTicketSubFactory (
11- email = None , address = None , city = None , state = None , country = None
11+ email = None , address = None , city = None , state = None , country = None , order__user = user
1212 )
1313 db .session .commit ()
1414
1515 return attendee
1616
1717
18- def test_edit_attendee_minimum_fields (db , client , jwt ):
19- attendee = get_minimal_attendee (db )
18+ def test_edit_attendee_minimum_fields (db , client , jwt , user ):
19+ attendee = get_minimal_attendee (db , user )
2020
2121 data = json .dumps (
2222 {
@@ -41,8 +41,8 @@ def test_edit_attendee_minimum_fields(db, client, jwt):
4141 assert attendee .lastname == 'Jamal'
4242
4343
44- def get_simple_custom_form_attendee (db ):
45- attendee = get_minimal_attendee (db )
44+ def get_simple_custom_form_attendee (db , user ):
45+ attendee = get_minimal_attendee (db , user )
4646 CustomForms (
4747 event = attendee .event ,
4848 form = 'attendee' ,
@@ -64,8 +64,8 @@ def get_simple_custom_form_attendee(db):
6464 return attendee
6565
6666
67- def test_edit_attendee_required_fields_missing (db , client , jwt ):
68- attendee = get_simple_custom_form_attendee (db )
67+ def test_edit_attendee_required_fields_missing (db , client , jwt , user ):
68+ attendee = get_simple_custom_form_attendee (db , user )
6969
7070 data = json .dumps (
7171 {
@@ -108,8 +108,8 @@ def test_edit_attendee_required_fields_missing(db, client, jwt):
108108 assert attendee .email is None
109109
110110
111- def test_edit_attendee_required_fields_complete (db , client , jwt ):
112- attendee = get_simple_custom_form_attendee (db )
111+ def test_edit_attendee_required_fields_complete (db , client , jwt , user ):
112+ attendee = get_simple_custom_form_attendee (db , user )
113113
114114 data = json .dumps (
115115 {
@@ -147,8 +147,8 @@ def test_edit_attendee_required_fields_complete(db, client, jwt):
147147 assert attendee .complex_field_values is None
148148
149149
150- def get_complex_custom_form_attendee (db ):
151- attendee = get_minimal_attendee (db )
150+ def get_complex_custom_form_attendee (db , user ):
151+ attendee = get_minimal_attendee (db , user )
152152 CustomForms (
153153 event = attendee .event ,
154154 form = 'attendee' ,
@@ -182,8 +182,8 @@ def get_complex_custom_form_attendee(db):
182182 return attendee
183183
184184
185- def test_custom_form_complex_fields_missing_required (db , client , jwt ):
186- attendee = get_complex_custom_form_attendee (db )
185+ def test_custom_form_complex_fields_missing_required (db , client , jwt , user ):
186+ attendee = get_complex_custom_form_attendee (db , user )
187187
188188 data = json .dumps (
189189 {
@@ -222,8 +222,8 @@ def test_custom_form_complex_fields_missing_required(db, client, jwt):
222222 assert attendee .complex_field_values is None
223223
224224
225- def test_custom_form_complex_fields_missing_required_one (db , client , jwt ):
226- attendee = get_complex_custom_form_attendee (db )
225+ def test_custom_form_complex_fields_missing_required_one (db , client , jwt , user ):
226+ attendee = get_complex_custom_form_attendee (db , user )
227227
228228 data = json .dumps (
229229 {
@@ -267,8 +267,8 @@ def test_custom_form_complex_fields_missing_required_one(db, client, jwt):
267267 assert attendee .complex_field_values is None
268268
269269
270- def test_custom_form_complex_fields_complete (db , client , jwt ):
271- attendee = get_complex_custom_form_attendee (db )
270+ def test_custom_form_complex_fields_complete (db , client , jwt , user ):
271+ attendee = get_complex_custom_form_attendee (db , user )
272272
273273 data = json .dumps (
274274 {
@@ -302,9 +302,9 @@ def test_custom_form_complex_fields_complete(db, client, jwt):
302302 assert attendee .complex_field_values ['best_friend' ] == 'Tester'
303303
304304
305- def test_ignore_complex_custom_form_fields (db , client , jwt ):
305+ def test_ignore_complex_custom_form_fields (db , client , jwt , user ):
306306 """Test to see that extra data from complex JSON is dropped"""
307- attendee = get_complex_custom_form_attendee (db )
307+ attendee = get_complex_custom_form_attendee (db , user )
308308
309309 data = json .dumps (
310310 {
@@ -344,8 +344,8 @@ def test_ignore_complex_custom_form_fields(db, client, jwt):
344344 assert attendee .complex_field_values .get ('shalimar' ) is None
345345
346346
347- def test_throw_complex_custom_form_fields (db , client , jwt ):
348- attendee = get_complex_custom_form_attendee (db )
347+ def test_throw_complex_custom_form_fields (db , client , jwt , user ):
348+ attendee = get_complex_custom_form_attendee (db , user )
349349 CustomForms (
350350 event = attendee .event ,
351351 form = 'attendee' ,
@@ -400,8 +400,8 @@ def test_throw_complex_custom_form_fields(db, client, jwt):
400400 }
401401
402402
403- def test_throw_invalid_complex_custom_form_fields (db , client , jwt ):
404- attendee = get_complex_custom_form_attendee (db )
403+ def test_throw_invalid_complex_custom_form_fields (db , client , jwt , user ):
404+ attendee = get_complex_custom_form_attendee (db , user )
405405 CustomForms (
406406 event = attendee .event ,
407407 form = 'attendee' ,
@@ -522,8 +522,8 @@ def test_edit_attendee_order(db, client, jwt):
522522 assert attendee .order .id == attendee_order .id
523523
524524
525- def test_edit_attendee_when_order_is_pending (db , client , jwt ):
526- attendee = AttendeeOrderTicketSubFactory ()
525+ def test_edit_attendee_when_order_is_pending (db , client , jwt , user ):
526+ attendee = AttendeeOrderTicketSubFactory (order__user = user )
527527 order = attendee .order
528528
529529 order .status = "pending"
@@ -557,8 +557,8 @@ def test_edit_attendee_when_order_is_pending(db, client, jwt):
557557 assert attendee .lastname != "Ali"
558558
559559
560- def test_edit_attendee_when_order_is_completed (db , client , jwt ):
561- attendee = AttendeeOrderTicketSubFactory ()
560+ def test_edit_attendee_when_order_is_completed (db , client , jwt , user ):
561+ attendee = AttendeeOrderTicketSubFactory (order__user = user )
562562 order = attendee .order
563563
564564 order .status = "completed"
@@ -590,3 +590,48 @@ def test_edit_attendee_when_order_is_completed(db, client, jwt):
590590 # Attendee should not be updated
591591 assert response .status_code == 422
592592 assert attendee .firstname != "Haider"
593+
594+
595+ def test_edit_attendee_by_some_other_user (db , client , jwt ):
596+ attendee = AttendeeOrderTicketSubFactory ()
597+ order = attendee .order
598+
599+ db .session .commit ()
600+
601+ data = json .dumps (
602+ {
603+ 'data' : {
604+ 'type' : 'attendee' ,
605+ 'id' : str (attendee .id ),
606+ 'attributes' : {"firstname" : "Haider" },
607+ "relationships" : {
608+ "order" : {"data" : {"id" : str (order .id ), "type" : "order" }}
609+ },
610+ }
611+ }
612+ )
613+
614+ response = client .patch (
615+ f'/v1/attendees/{ attendee .id } ' ,
616+ content_type = 'application/vnd.api+json' ,
617+ headers = jwt ,
618+ data = data ,
619+ )
620+
621+ db .session .refresh (attendee )
622+
623+ assert response .status_code == 403
624+
625+ assert attendee .firstname != "Haider"
626+
627+ assert json .loads (response .data ) == {
628+ 'errors' : [
629+ {
630+ 'status' : 403 ,
631+ 'source' : None ,
632+ 'title' : 'Access Forbidden' ,
633+ 'detail' : 'Only admin or that user itself can update attendee info' ,
634+ }
635+ ],
636+ 'jsonapi' : {'version' : '1.0' },
637+ }
0 commit comments