diff --git a/tests/integration/resources_permissions/test_issues_custom_attributes_resource.py b/tests/integration/resources_permissions/test_issues_custom_attributes_resource.py index 694bfc36..8735fe5f 100644 --- a/tests/integration/resources_permissions/test_issues_custom_attributes_resource.py +++ b/tests/integration/resources_permissions/test_issues_custom_attributes_resource.py @@ -25,7 +25,7 @@ from tests import factories as f from tests.utils import helper_test_http_method import pytest -pytestmark = pytest.mark.django_db(transaction=True) +pytestmark = pytest.mark.django_db @pytest.fixture @@ -95,6 +95,29 @@ def data(): m.private_issue_ca1 = f.IssueCustomAttributeFactory(project=m.private_project1) m.private_issue_ca2 = f.IssueCustomAttributeFactory(project=m.private_project2) + m.public_issue = f.IssueFactory(project=m.public_project, + status__project=m.public_project, + severity__project=m.public_project, + priority__project=m.public_project, + type__project=m.public_project, + milestone__project=m.public_project) + m.private_issue1 = f.IssueFactory(project=m.private_project1, + status__project=m.private_project1, + severity__project=m.private_project1, + priority__project=m.private_project1, + type__project=m.private_project1, + milestone__project=m.private_project1) + m.private_issue2 = f.IssueFactory(project=m.private_project2, + status__project=m.private_project2, + severity__project=m.private_project2, + priority__project=m.private_project2, + type__project=m.private_project2, + milestone__project=m.private_project2) + + m.public_issue_cav = m.public_issue.custom_attributes_values + m.private_issue_cav1 = m.private_issue1.custom_attributes_values + m.private_issue_cav2 = m.private_issue2.custom_attributes_values + return m @@ -285,3 +308,90 @@ def test_issue_custom_attribute_action_bulk_update_order(client, data): }) results = helper_test_http_method(client, 'post', url, post_data, users) assert results == [401, 403, 403, 403, 204] + + +######################################################### +# Issue Custom Attribute +######################################################### + + +def test_issue_custom_attributes_values_retrieve(client, data): + public_url = reverse('issue-custom-attributes-values-detail', kwargs={"pk": data.public_issue.pk}) + private_url1 = reverse('issue-custom-attributes-values-detail', kwargs={"pk": data.private_issue1.pk}) + private_url2 = reverse('issue-custom-attributes-values-detail', kwargs={"pk": data.private_issue2.pk}) + + users = [ + None, + data.registered_user, + data.project_member_without_perms, + data.project_member_with_perms, + data.project_owner + ] + + results = helper_test_http_method(client, 'get', public_url, None, users) + assert results == [200, 200, 200, 200, 200] + results = helper_test_http_method(client, 'get', private_url1, None, users) + assert results == [200, 200, 200, 200, 200] + results = helper_test_http_method(client, 'get', private_url2, None, users) + assert results == [401, 403, 403, 200, 200] + + +def test_issue_custom_attributes_values_update(client, data): + public_url = reverse('issue-custom-attributes-values-detail', kwargs={"pk": data.public_issue.pk}) + private_url1 = reverse('issue-custom-attributes-values-detail', kwargs={"pk": data.private_issue1.pk}) + private_url2 = reverse('issue-custom-attributes-values-detail', kwargs={"pk": data.private_issue2.pk}) + + users = [ + None, + data.registered_user, + data.project_member_without_perms, + data.project_member_with_perms, + data.project_owner + ] + + issue_data = serializers.IssueCustomAttributesValuesSerializer(data.public_issue_cav).data + issue_data["attributes_values"] = {str(data.public_issue_ca.pk): "test"} + issue_data = json.dumps(issue_data) + results = helper_test_http_method(client, 'put', public_url, issue_data, users) + assert results == [401, 403, 403, 200, 200] + + issue_data = serializers.IssueCustomAttributesValuesSerializer(data.private_issue_cav1).data + issue_data["attributes_values"] = {str(data.private_issue_ca1.pk): "test"} + issue_data = json.dumps(issue_data) + results = helper_test_http_method(client, 'put', private_url1, issue_data, users) + assert results == [401, 403, 403, 200, 200] + + issue_data = serializers.IssueCustomAttributesValuesSerializer(data.private_issue_cav2).data + issue_data["attributes_values"] = {str(data.private_issue_ca2.pk): "test"} + issue_data = json.dumps(issue_data) + results = helper_test_http_method(client, 'put', private_url2, issue_data, users) + assert results == [401, 403, 403, 200, 200] + + +def test_issue_custom_attributes_values_patch(client, data): + public_url = reverse('issue-custom-attributes-values-detail', kwargs={"pk": data.public_issue.pk}) + private_url1 = reverse('issue-custom-attributes-values-detail', kwargs={"pk": data.private_issue1.pk}) + private_url2 = reverse('issue-custom-attributes-values-detail', kwargs={"pk": data.private_issue2.pk}) + + users = [ + None, + data.registered_user, + data.project_member_without_perms, + data.project_member_with_perms, + data.project_owner + ] + + patch_data = json.dumps({"attributes_values": {str(data.public_issue_ca.pk): "test"}, + "version": data.public_issue.version}) + results = helper_test_http_method(client, 'patch', public_url, patch_data, users) + assert results == [401, 403, 403, 200, 200] + + patch_data = json.dumps({"attributes_values": {str(data.private_issue_ca1.pk): "test"}, + "version": data.private_issue1.version}) + results = helper_test_http_method(client, 'patch', private_url1, patch_data, users) + assert results == [401, 403, 403, 200, 200] + + patch_data = json.dumps({"attributes_values": {str(data.private_issue_ca2.pk): "test"}, + "version": data.private_issue2.version}) + results = helper_test_http_method(client, 'patch', private_url2, patch_data, users) + assert results == [401, 403, 403, 200, 200] diff --git a/tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py b/tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py index 317ff991..c7562e86 100644 --- a/tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py +++ b/tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py @@ -25,7 +25,7 @@ from tests import factories as f from tests.utils import helper_test_http_method import pytest -pytestmark = pytest.mark.django_db(transaction=True) +pytestmark = pytest.mark.django_db @pytest.fixture @@ -95,6 +95,23 @@ def data(): m.private_task_ca1 = f.TaskCustomAttributeFactory(project=m.private_project1) m.private_task_ca2 = f.TaskCustomAttributeFactory(project=m.private_project2) + m.public_task = f.TaskFactory(project=m.public_project, + status__project=m.public_project, + milestone__project=m.public_project, + user_story__project=m.public_project) + m.private_task1 = f.TaskFactory(project=m.private_project1, + status__project=m.private_project1, + milestone__project=m.private_project1, + user_story__project=m.private_project1) + m.private_task2 = f.TaskFactory(project=m.private_project2, + status__project=m.private_project2, + milestone__project=m.private_project2, + user_story__project=m.private_project2) + + m.public_task_cav = m.public_task.custom_attributes_values + m.private_task_cav1 = m.private_task1.custom_attributes_values + m.private_task_cav2 = m.private_task2.custom_attributes_values + return m @@ -285,3 +302,90 @@ def test_task_custom_attribute_action_bulk_update_order(client, data): }) results = helper_test_http_method(client, 'post', url, post_data, users) assert results == [401, 403, 403, 403, 204] + + +######################################################### +# Task Custom Attribute +######################################################### + + +def test_task_custom_attributes_values_retrieve(client, data): + public_url = reverse('task-custom-attributes-values-detail', kwargs={"pk": data.public_task.pk}) + private_url1 = reverse('task-custom-attributes-values-detail', kwargs={"pk": data.private_task1.pk}) + private_url2 = reverse('task-custom-attributes-values-detail', kwargs={"pk": data.private_task2.pk}) + + users = [ + None, + data.registered_user, + data.project_member_without_perms, + data.project_member_with_perms, + data.project_owner + ] + + results = helper_test_http_method(client, 'get', public_url, None, users) + assert results == [200, 200, 200, 200, 200] + results = helper_test_http_method(client, 'get', private_url1, None, users) + assert results == [200, 200, 200, 200, 200] + results = helper_test_http_method(client, 'get', private_url2, None, users) + assert results == [401, 403, 403, 200, 200] + + +def test_task_custom_attributes_values_update(client, data): + public_url = reverse('task-custom-attributes-values-detail', kwargs={"pk": data.public_task.pk}) + private_url1 = reverse('task-custom-attributes-values-detail', kwargs={"pk": data.private_task1.pk}) + private_url2 = reverse('task-custom-attributes-values-detail', kwargs={"pk": data.private_task2.pk}) + + users = [ + None, + data.registered_user, + data.project_member_without_perms, + data.project_member_with_perms, + data.project_owner + ] + + task_data = serializers.TaskCustomAttributesValuesSerializer(data.public_task_cav).data + task_data["attributes_values"] = {str(data.public_task_ca.pk): "test"} + task_data = json.dumps(task_data) + results = helper_test_http_method(client, 'put', public_url, task_data, users) + assert results == [401, 403, 403, 200, 200] + + task_data = serializers.TaskCustomAttributesValuesSerializer(data.private_task_cav1).data + task_data["attributes_values"] = {str(data.private_task_ca1.pk): "test"} + task_data = json.dumps(task_data) + results = helper_test_http_method(client, 'put', private_url1, task_data, users) + assert results == [401, 403, 403, 200, 200] + + task_data = serializers.TaskCustomAttributesValuesSerializer(data.private_task_cav2).data + task_data["attributes_values"] = {str(data.private_task_ca2.pk): "test"} + task_data = json.dumps(task_data) + results = helper_test_http_method(client, 'put', private_url2, task_data, users) + assert results == [401, 403, 403, 200, 200] + + +def test_task_custom_attributes_values_patch(client, data): + public_url = reverse('task-custom-attributes-values-detail', kwargs={"pk": data.public_task.pk}) + private_url1 = reverse('task-custom-attributes-values-detail', kwargs={"pk": data.private_task1.pk}) + private_url2 = reverse('task-custom-attributes-values-detail', kwargs={"pk": data.private_task2.pk}) + + users = [ + None, + data.registered_user, + data.project_member_without_perms, + data.project_member_with_perms, + data.project_owner + ] + + patch_data = json.dumps({"attributes_values": {str(data.public_task_ca.pk): "test"}, + "version": data.public_task.version}) + results = helper_test_http_method(client, 'patch', public_url, patch_data, users) + assert results == [401, 403, 403, 200, 200] + + patch_data = json.dumps({"attributes_values": {str(data.private_task_ca1.pk): "test"}, + "version": data.private_task1.version}) + results = helper_test_http_method(client, 'patch', private_url1, patch_data, users) + assert results == [401, 403, 403, 200, 200] + + patch_data = json.dumps({"attributes_values": {str(data.private_task_ca2.pk): "test"}, + "version": data.private_task2.version}) + results = helper_test_http_method(client, 'patch', private_url2, patch_data, users) + assert results == [401, 403, 403, 200, 200] diff --git a/tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py b/tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py index faee7fbe..d23bef49 100644 --- a/tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py +++ b/tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py @@ -25,7 +25,7 @@ from tests import factories as f from tests.utils import helper_test_http_method import pytest -pytestmark = pytest.mark.django_db(transaction=True) +pytestmark = pytest.mark.django_db @pytest.fixture @@ -95,6 +95,18 @@ def data(): m.private_userstory_ca1 = f.UserStoryCustomAttributeFactory(project=m.private_project1) m.private_userstory_ca2 = f.UserStoryCustomAttributeFactory(project=m.private_project2) + + m.public_user_story = f.UserStoryFactory(project=m.public_project, + status__project=m.public_project) + m.private_user_story1 = f.UserStoryFactory(project=m.private_project1, + status__project=m.private_project1) + m.private_user_story2 = f.UserStoryFactory(project=m.private_project2, + status__project=m.private_project2) + + m.public_user_story_cav = m.public_user_story.custom_attributes_values + m.private_user_story_cav1 = m.private_user_story1.custom_attributes_values + m.private_user_story_cav2 = m.private_user_story2.custom_attributes_values + return m @@ -285,3 +297,100 @@ def test_userstory_custom_attribute_action_bulk_update_order(client, data): }) results = helper_test_http_method(client, 'post', url, post_data, users) assert results == [401, 403, 403, 403, 204] + + + +######################################################### +# UserStory Custom Attribute +######################################################### + + +def test_userstory_custom_attributes_values_retrieve(client, data): + public_url = reverse('userstory-custom-attributes-values-detail', kwargs={ + "user_story_id": data.public_user_story.pk}) + private_url1 = reverse('userstory-custom-attributes-values-detail', kwargs={ + "user_story_id": data.private_user_story1.pk}) + private_url2 = reverse('userstory-custom-attributes-values-detail', kwargs={ + "user_story_id": data.private_user_story2.pk}) + + users = [ + None, + data.registered_user, + data.project_member_without_perms, + data.project_member_with_perms, + data.project_owner + ] + + results = helper_test_http_method(client, 'get', public_url, None, users) + assert results == [200, 200, 200, 200, 200] + results = helper_test_http_method(client, 'get', private_url1, None, users) + assert results == [200, 200, 200, 200, 200] + results = helper_test_http_method(client, 'get', private_url2, None, users) + assert results == [401, 403, 403, 200, 200] + + +def test_userstory_custom_attributes_values_update(client, data): + public_url = reverse('userstory-custom-attributes-values-detail', kwargs={ + "user_story_id": data.public_user_story.pk}) + private_url1 = reverse('userstory-custom-attributes-values-detail', kwargs={ + "user_story_id": data.private_user_story1.pk}) + private_url2 = reverse('userstory-custom-attributes-values-detail', kwargs={ + "user_story_id": data.private_user_story2.pk}) + + users = [ + None, + data.registered_user, + data.project_member_without_perms, + data.project_member_with_perms, + data.project_owner + ] + + user_story_data = serializers.UserStoryCustomAttributesValuesSerializer(data.public_user_story_cav).data + user_story_data["attributes_values"] = {str(data.public_userstory_ca.pk): "test"} + user_story_data = json.dumps(user_story_data) + results = helper_test_http_method(client, 'put', public_url, user_story_data, users) + assert results == [401, 403, 403, 200, 200] + + user_story_data = serializers.UserStoryCustomAttributesValuesSerializer(data.private_user_story_cav1).data + user_story_data["attributes_values"] = {str(data.private_userstory_ca1.pk): "test"} + user_story_data = json.dumps(user_story_data) + results = helper_test_http_method(client, 'put', private_url1, user_story_data, users) + assert results == [401, 403, 403, 200, 200] + + user_story_data = serializers.UserStoryCustomAttributesValuesSerializer(data.private_user_story_cav2).data + user_story_data["attributes_values"] = {str(data.private_userstory_ca2.pk): "test"} + user_story_data = json.dumps(user_story_data) + results = helper_test_http_method(client, 'put', private_url2, user_story_data, users) + assert results == [401, 403, 403, 200, 200] + + +def test_userstory_custom_attributes_values_patch(client, data): + public_url = reverse('userstory-custom-attributes-values-detail', kwargs={ + "user_story_id": data.public_user_story.pk}) + private_url1 = reverse('userstory-custom-attributes-values-detail', kwargs={ + "user_story_id": data.private_user_story1.pk}) + private_url2 = reverse('userstory-custom-attributes-values-detail', kwargs={ + "user_story_id": data.private_user_story2.pk}) + + users = [ + None, + data.registered_user, + data.project_member_without_perms, + data.project_member_with_perms, + data.project_owner + ] + + patch_data = json.dumps({"attributes_values": {str(data.public_userstory_ca.pk): "test"}, + "version": data.public_user_story.version}) + results = helper_test_http_method(client, 'patch', public_url, patch_data, users) + assert results == [401, 403, 403, 200, 200] + + patch_data = json.dumps({"attributes_values": {str(data.private_userstory_ca1.pk): "test"}, + "version": data.private_user_story1.version}) + results = helper_test_http_method(client, 'patch', private_url1, patch_data, users) + assert results == [401, 403, 403, 200, 200] + + patch_data = json.dumps({"attributes_values": {str(data.private_userstory_ca2.pk): "test"}, + "version": data.private_user_story2.version}) + results = helper_test_http_method(client, 'patch', private_url2, patch_data, users) + assert results == [401, 403, 403, 200, 200]