def test_user_update_form(client): alg, _ = AlgorithmFactory(), AlgorithmFactory() editor = UserFactory() alg.editors_group.user_set.add(editor) assert alg.users_group.user_set.count() == 0 new_user = UserFactory() pr = AlgorithmPermissionRequestFactory(user=new_user, algorithm=alg) assert not alg.is_user(user=new_user) assert pr.status == AlgorithmPermissionRequest.PENDING response = get_view_for_user( viewname="algorithms:users-update", client=client, method=client.post, data={ "user": new_user.pk, "action": "ADD" }, reverse_kwargs={"slug": alg.slug}, follow=True, user=editor, ) assert response.status_code == 200 alg.refresh_from_db() pr.refresh_from_db() assert alg.users_group.user_set.count() == 1 assert alg.is_user(user=new_user) assert pr.status == AlgorithmPermissionRequest.ACCEPTED response = get_view_for_user( viewname="algorithms:users-update", client=client, method=client.post, data={ "user": new_user.pk, "action": "REMOVE" }, reverse_kwargs={"slug": alg.slug}, follow=True, user=editor, ) assert response.status_code == 200 alg.refresh_from_db() pr.refresh_from_db() assert alg.users_group.user_set.count() == 0 assert not alg.is_user(user=new_user) assert pr.status == AlgorithmPermissionRequest.REJECTED
def test_editor_update_form(client): alg, _ = AlgorithmFactory(), AlgorithmFactory() editor = UserFactory() alg.editors_group.user_set.add(editor) assert alg.editors_group.user_set.count() == 1 new_editor = UserFactory() assert not alg.is_editor(user=new_editor) response = get_view_for_user( viewname="algorithms:editors-update", client=client, method=client.post, data={ "user": new_editor.pk, "action": "ADD" }, reverse_kwargs={"slug": alg.slug}, follow=True, user=editor, ) assert response.status_code == 200 alg.refresh_from_db() assert alg.editors_group.user_set.count() == 2 assert alg.is_editor(user=new_editor) response = get_view_for_user( viewname="algorithms:editors-update", client=client, method=client.post, data={ "user": new_editor.pk, "action": "REMOVE" }, reverse_kwargs={"slug": alg.slug}, follow=True, user=editor, ) assert response.status_code == 200 alg.refresh_from_db() assert alg.editors_group.user_set.count() == 1 assert not alg.is_editor(user=new_editor)
def test_group_deletion_reverse(group): algorithm = AlgorithmFactory() users_group = algorithm.users_group editors_group = algorithm.editors_group assert users_group assert editors_group getattr(algorithm, group).delete() with pytest.raises(ObjectDoesNotExist): users_group.refresh_from_db() with pytest.raises(ObjectDoesNotExist): editors_group.refresh_from_db() with pytest.raises(ObjectDoesNotExist): algorithm.refresh_from_db()