@@ -183,40 +183,61 @@ def test_list_role_permissions_all_pages(resource_client):
183183 assert resp .json ()["count" ] > 25
184184
185185
186- def _assert_assignment_matches_data (assignment , data , organization , user ):
186+ def _assert_assignment_matches_data (assignment , data , obj , user ):
187187 assert 'created' in data , data
188188 # assert DateTimeField().to_representation(assignment.created) == data['created'] # TODO
189189 assert str (assignment .created_by .resource .ansible_id ) == data ['created_by_ansible_id' ]
190- assert assignment .object_id == organization .id
190+ assert assignment .object_id == obj .id
191191 assert str (assignment .object_id ) == str (data ['object_id' ])
192- assert str (organization .resource .ansible_id ) == data ['object_ansible_id' ]
193- assert 'shared.organization' == data ['content_type' ]
194- assert 'Organization Admin' == data ['role_definition' ]
192+ if hasattr (obj , 'resource' ):
193+ assert str (obj .resource .ansible_id ) == data ['object_ansible_id' ]
194+ assert 'shared.organization' == data ['content_type' ]
195+ assert 'Organization Admin' == data ['role_definition' ]
196+ else :
197+ assert 'aap.inventory' == data ['content_type' ]
198+ assert 'change-inv' == data ['role_definition' ]
195199 assert str (user .resource .ansible_id ) == data ['user_ansible_id' ]
196200
197201
198202@pytest .mark .django_db
199- def test_sync_assignment (resource_client , org_admin_rd , user , organization ):
203+ def test_sync_org_assignment (resource_client , org_admin_rd , user , organization ):
200204 assignment = org_admin_rd .give_permission (user , organization )
201205 resp = resource_client .sync_assignment (assignment )
202-
203206 assert resp .status_code == 200 , resp .text
204-
205207 data = resp .json ()
206208 # Existing assignment should be this current assignment
207209 _assert_assignment_matches_data (assignment , data , organization , user )
208210
209211 org_admin_rd .remove_permission (user , organization )
210-
211212 resp = resource_client .sync_assignment (assignment ) # assignment not actually here locally
212-
213213 assert resp .status_code == 201 , resp .text # created
214-
215214 data = resp .json ()
216215 # All the data, on the remote system, should match our original assignment
217216 _assert_assignment_matches_data (assignment , data , organization , user )
218217
219218
219+ @pytest .mark .django_db
220+ def test_sync_obj_assignment (resource_client , user , inventory ):
221+ inv_rd = RoleDefinition .objects .create_from_permissions (
222+ permissions = ['change_inventory' , 'view_inventory' ],
223+ name = 'change-inv' ,
224+ content_type = permission_registry .content_type_model .objects .get_for_model (Inventory ),
225+ )
226+ assignment = inv_rd .give_permission (user , inventory )
227+ resp = resource_client .sync_assignment (assignment )
228+ assert resp .status_code == 200 , resp .text
229+ data = resp .json ()
230+ # Existing assignment should be this current assignment
231+ _assert_assignment_matches_data (assignment , data , inventory , user )
232+
233+ inv_rd .remove_permission (user , inventory )
234+ resp = resource_client .sync_assignment (assignment ) # assignment not actually here locally
235+ assert resp .status_code == 201 , resp .text # created
236+ data = resp .json ()
237+ # All the data, on the remote system, should match our original assignment
238+ _assert_assignment_matches_data (assignment , data , inventory , user )
239+
240+
220241@pytest .mark .django_db
221242def test_get_resource_404 (resource_client ):
222243 resource_client .raise_if_bad_request = True
0 commit comments