Merge pull request #265 from taigaio/tests-flake8
Fixing a lot of flake8 errors on testsremotes/origin/enhancement/email-actions
commit
3ba3c8978b
|
@ -34,4 +34,3 @@ def pytest_runtest_setup(item):
|
|||
|
||||
def pytest_configure(config):
|
||||
django.setup()
|
||||
|
||||
|
|
|
@ -83,6 +83,7 @@ def data():
|
|||
|
||||
return m
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def data_us(data):
|
||||
m = type("Models", (object,), {})
|
||||
|
@ -97,6 +98,7 @@ def data_us(data):
|
|||
content_object=m.private_user_story2)
|
||||
return m
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def data_task(data):
|
||||
m = type("Models", (object,), {})
|
||||
|
@ -108,6 +110,7 @@ def data_task(data):
|
|||
m.private_task2_attachment = f.TaskAttachmentFactory(project=data.private_project2, content_object=m.private_task2)
|
||||
return m
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def data_issue(data):
|
||||
m = type("Models", (object,), {})
|
||||
|
@ -119,6 +122,7 @@ def data_issue(data):
|
|||
m.private_issue2_attachment = f.IssueAttachmentFactory(project=data.private_project2, content_object=m.private_issue2)
|
||||
return m
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def data_wiki(data):
|
||||
m = type("Models", (object,), {})
|
||||
|
@ -130,6 +134,7 @@ def data_wiki(data):
|
|||
m.private_wiki2_attachment = f.WikiAttachmentFactory(project=data.private_project2, content_object=m.private_wiki2)
|
||||
return m
|
||||
|
||||
|
||||
def test_user_story_attachment_retrieve(client, data, data_us):
|
||||
public_url = reverse('userstory-attachments-detail', kwargs={"pk": data_us.public_user_story_attachment.pk})
|
||||
private_url1 = reverse('userstory-attachments-detail', kwargs={"pk": data_us.private_user_story1_attachment.pk})
|
||||
|
@ -507,6 +512,7 @@ def test_wiki_attachment_delete(client, data, data_wiki):
|
|||
results = helper_test_http_method(client, 'delete', private_url2, None, users)
|
||||
assert results == [401, 403, 403, 204]
|
||||
|
||||
|
||||
def test_user_story_attachment_create(client, data, data_us):
|
||||
url = reverse('userstory-attachments-list')
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
from django.core.urlresolvers import reverse
|
||||
|
||||
from taiga.permissions.permissions import MEMBERS_PERMISSIONS, ANON_PERMISSIONS, USER_PERMISSIONS
|
||||
from taiga.base.utils import json
|
||||
|
||||
from tests import factories as f
|
||||
|
|
|
@ -75,6 +75,7 @@ def data():
|
|||
is_owner=True)
|
||||
return m
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def data_us(data):
|
||||
m = type("Models", (object,), {})
|
||||
|
@ -83,6 +84,7 @@ def data_us(data):
|
|||
m.private_user_story2 = f.UserStoryFactory(project=data.private_project2, ref=9)
|
||||
return m
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def data_task(data):
|
||||
m = type("Models", (object,), {})
|
||||
|
@ -91,6 +93,7 @@ def data_task(data):
|
|||
m.private_task2 = f.TaskFactory(project=data.private_project2, ref=10)
|
||||
return m
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def data_issue(data):
|
||||
m = type("Models", (object,), {})
|
||||
|
@ -99,6 +102,7 @@ def data_issue(data):
|
|||
m.private_issue2 = f.IssueFactory(project=data.private_project2, ref=11)
|
||||
return m
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def data_wiki(data):
|
||||
m = type("Models", (object,), {})
|
||||
|
|
|
@ -135,7 +135,7 @@ def test_issue_update(client, data):
|
|||
data.project_owner
|
||||
]
|
||||
|
||||
with mock.patch.object(OCCResourceMixin, "_validate_and_update_version") as _validate_and_update_version_mock:
|
||||
with mock.patch.object(OCCResourceMixin, "_validate_and_update_version"):
|
||||
issue_data = IssueSerializer(data.public_issue).data
|
||||
issue_data["subject"] = "test"
|
||||
issue_data = json.dumps(issue_data)
|
||||
|
@ -285,7 +285,7 @@ def test_issue_patch(client, data):
|
|||
data.project_owner
|
||||
]
|
||||
|
||||
with mock.patch.object(OCCResourceMixin, "_validate_and_update_version") as _validate_and_update_version_mock:
|
||||
with mock.patch.object(OCCResourceMixin, "_validate_and_update_version"):
|
||||
patch_data = json.dumps({"subject": "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]
|
||||
|
@ -412,6 +412,7 @@ def test_issue_voters_list(client, data):
|
|||
results = helper_test_http_method(client, 'get', private_url2, None, users)
|
||||
assert results == [401, 403, 403, 200, 200]
|
||||
|
||||
|
||||
def test_issue_voters_retrieve(client, data):
|
||||
add_vote(data.public_issue, data.project_owner)
|
||||
public_url = reverse('issue-voters-detail', kwargs={"issue_id": data.public_issue.pk, "pk": data.project_owner.pk})
|
||||
|
|
|
@ -375,21 +375,21 @@ def test_points_action_bulk_update_order(client, data):
|
|||
]
|
||||
|
||||
post_data = json.dumps({
|
||||
"bulk_points": [(1,2)],
|
||||
"bulk_points": [(1, 2)],
|
||||
"project": data.public_project.pk
|
||||
})
|
||||
results = helper_test_http_method(client, 'post', url, post_data, users)
|
||||
assert results == [401, 403, 403, 403, 204]
|
||||
|
||||
post_data = json.dumps({
|
||||
"bulk_points": [(1,2)],
|
||||
"bulk_points": [(1, 2)],
|
||||
"project": data.private_project1.pk
|
||||
})
|
||||
results = helper_test_http_method(client, 'post', url, post_data, users)
|
||||
assert results == [401, 403, 403, 403, 204]
|
||||
|
||||
post_data = json.dumps({
|
||||
"bulk_points": [(1,2)],
|
||||
"bulk_points": [(1, 2)],
|
||||
"project": data.private_project2.pk
|
||||
})
|
||||
results = helper_test_http_method(client, 'post', url, post_data, users)
|
||||
|
@ -536,21 +536,21 @@ def test_user_story_status_action_bulk_update_order(client, data):
|
|||
]
|
||||
|
||||
post_data = json.dumps({
|
||||
"bulk_userstory_statuses": [(1,2)],
|
||||
"bulk_userstory_statuses": [(1, 2)],
|
||||
"project": data.public_project.pk
|
||||
})
|
||||
results = helper_test_http_method(client, 'post', url, post_data, users)
|
||||
assert results == [401, 403, 403, 403, 204]
|
||||
|
||||
post_data = json.dumps({
|
||||
"bulk_userstory_statuses": [(1,2)],
|
||||
"bulk_userstory_statuses": [(1, 2)],
|
||||
"project": data.private_project1.pk
|
||||
})
|
||||
results = helper_test_http_method(client, 'post', url, post_data, users)
|
||||
assert results == [401, 403, 403, 403, 204]
|
||||
|
||||
post_data = json.dumps({
|
||||
"bulk_userstory_statuses": [(1,2)],
|
||||
"bulk_userstory_statuses": [(1, 2)],
|
||||
"project": data.private_project2.pk
|
||||
})
|
||||
results = helper_test_http_method(client, 'post', url, post_data, users)
|
||||
|
@ -697,21 +697,21 @@ def test_task_status_action_bulk_update_order(client, data):
|
|||
]
|
||||
|
||||
post_data = json.dumps({
|
||||
"bulk_task_statuses": [(1,2)],
|
||||
"bulk_task_statuses": [(1, 2)],
|
||||
"project": data.public_project.pk
|
||||
})
|
||||
results = helper_test_http_method(client, 'post', url, post_data, users)
|
||||
assert results == [401, 403, 403, 403, 204]
|
||||
|
||||
post_data = json.dumps({
|
||||
"bulk_task_statuses": [(1,2)],
|
||||
"bulk_task_statuses": [(1, 2)],
|
||||
"project": data.private_project1.pk
|
||||
})
|
||||
results = helper_test_http_method(client, 'post', url, post_data, users)
|
||||
assert results == [401, 403, 403, 403, 204]
|
||||
|
||||
post_data = json.dumps({
|
||||
"bulk_task_statuses": [(1,2)],
|
||||
"bulk_task_statuses": [(1, 2)],
|
||||
"project": data.private_project2.pk
|
||||
})
|
||||
results = helper_test_http_method(client, 'post', url, post_data, users)
|
||||
|
@ -858,21 +858,21 @@ def test_issue_status_action_bulk_update_order(client, data):
|
|||
]
|
||||
|
||||
post_data = json.dumps({
|
||||
"bulk_issue_statuses": [(1,2)],
|
||||
"bulk_issue_statuses": [(1, 2)],
|
||||
"project": data.public_project.pk
|
||||
})
|
||||
results = helper_test_http_method(client, 'post', url, post_data, users)
|
||||
assert results == [401, 403, 403, 403, 204]
|
||||
|
||||
post_data = json.dumps({
|
||||
"bulk_issue_statuses": [(1,2)],
|
||||
"bulk_issue_statuses": [(1, 2)],
|
||||
"project": data.private_project1.pk
|
||||
})
|
||||
results = helper_test_http_method(client, 'post', url, post_data, users)
|
||||
assert results == [401, 403, 403, 403, 204]
|
||||
|
||||
post_data = json.dumps({
|
||||
"bulk_issue_statuses": [(1,2)],
|
||||
"bulk_issue_statuses": [(1, 2)],
|
||||
"project": data.private_project2.pk
|
||||
})
|
||||
results = helper_test_http_method(client, 'post', url, post_data, users)
|
||||
|
@ -1019,21 +1019,21 @@ def test_issue_type_action_bulk_update_order(client, data):
|
|||
]
|
||||
|
||||
post_data = json.dumps({
|
||||
"bulk_issue_types": [(1,2)],
|
||||
"bulk_issue_types": [(1, 2)],
|
||||
"project": data.public_project.pk
|
||||
})
|
||||
results = helper_test_http_method(client, 'post', url, post_data, users)
|
||||
assert results == [401, 403, 403, 403, 204]
|
||||
|
||||
post_data = json.dumps({
|
||||
"bulk_issue_types": [(1,2)],
|
||||
"bulk_issue_types": [(1, 2)],
|
||||
"project": data.private_project1.pk
|
||||
})
|
||||
results = helper_test_http_method(client, 'post', url, post_data, users)
|
||||
assert results == [401, 403, 403, 403, 204]
|
||||
|
||||
post_data = json.dumps({
|
||||
"bulk_issue_types": [(1,2)],
|
||||
"bulk_issue_types": [(1, 2)],
|
||||
"project": data.private_project2.pk
|
||||
})
|
||||
results = helper_test_http_method(client, 'post', url, post_data, users)
|
||||
|
@ -1180,21 +1180,21 @@ def test_priority_action_bulk_update_order(client, data):
|
|||
]
|
||||
|
||||
post_data = json.dumps({
|
||||
"bulk_priorities": [(1,2)],
|
||||
"bulk_priorities": [(1, 2)],
|
||||
"project": data.public_project.pk
|
||||
})
|
||||
results = helper_test_http_method(client, 'post', url, post_data, users)
|
||||
assert results == [401, 403, 403, 403, 204]
|
||||
|
||||
post_data = json.dumps({
|
||||
"bulk_priorities": [(1,2)],
|
||||
"bulk_priorities": [(1, 2)],
|
||||
"project": data.private_project1.pk
|
||||
})
|
||||
results = helper_test_http_method(client, 'post', url, post_data, users)
|
||||
assert results == [401, 403, 403, 403, 204]
|
||||
|
||||
post_data = json.dumps({
|
||||
"bulk_priorities": [(1,2)],
|
||||
"bulk_priorities": [(1, 2)],
|
||||
"project": data.private_project2.pk
|
||||
})
|
||||
results = helper_test_http_method(client, 'post', url, post_data, users)
|
||||
|
@ -1341,21 +1341,21 @@ def test_severity_action_bulk_update_order(client, data):
|
|||
]
|
||||
|
||||
post_data = json.dumps({
|
||||
"bulk_severities": [(1,2)],
|
||||
"bulk_severities": [(1, 2)],
|
||||
"project": data.public_project.pk
|
||||
})
|
||||
results = helper_test_http_method(client, 'post', url, post_data, users)
|
||||
assert results == [401, 403, 403, 403, 204]
|
||||
|
||||
post_data = json.dumps({
|
||||
"bulk_severities": [(1,2)],
|
||||
"bulk_severities": [(1, 2)],
|
||||
"project": data.private_project1.pk
|
||||
})
|
||||
results = helper_test_http_method(client, 'post', url, post_data, users)
|
||||
assert results == [401, 403, 403, 403, 204]
|
||||
|
||||
post_data = json.dumps({
|
||||
"bulk_severities": [(1,2)],
|
||||
"bulk_severities": [(1, 2)],
|
||||
"project": data.private_project2.pk
|
||||
})
|
||||
results = helper_test_http_method(client, 'post', url, post_data, users)
|
||||
|
@ -1489,6 +1489,7 @@ def test_membership_patch(client, data):
|
|||
results = helper_test_http_method(client, 'patch', private2_url, '{"name": "Test"}', users)
|
||||
assert results == [401, 403, 403, 403, 200]
|
||||
|
||||
|
||||
def test_membership_create(client, data):
|
||||
url = reverse('memberships-list')
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
from django.core.urlresolvers import reverse
|
||||
|
||||
from taiga.base.utils import json
|
||||
from taiga.permissions.permissions import MEMBERS_PERMISSIONS, ANON_PERMISSIONS, USER_PERMISSIONS
|
||||
|
||||
from tests import factories as f
|
||||
|
@ -103,7 +102,7 @@ def test_resolver_list(client, data):
|
|||
|
||||
results = helper_test_http_method(client, 'get', "{}?project={}".format(url, data.public_project.slug), None, users)
|
||||
assert results == [200, 200, 200, 200, 200]
|
||||
results = helper_test_http_method(client, 'get', "{}?project={}".format(url,data.private_project1.slug), None, users)
|
||||
results = helper_test_http_method(client, 'get', "{}?project={}".format(url, data.private_project1.slug), None, users)
|
||||
assert results == [200, 200, 200, 200, 200]
|
||||
results = helper_test_http_method(client, 'get', "{}?project={}".format(url, data.private_project2.slug), None, users)
|
||||
assert results == [401, 403, 403, 200, 200]
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
from django.core.urlresolvers import reverse
|
||||
|
||||
from taiga.projects.issues.serializers import IssueSerializer
|
||||
from taiga.permissions.permissions import MEMBERS_PERMISSIONS, ANON_PERMISSIONS, USER_PERMISSIONS
|
||||
|
||||
from tests import factories as f
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
from django.core.urlresolvers import reverse
|
||||
|
||||
from taiga.base.utils import json
|
||||
from taiga.permissions.permissions import MEMBERS_PERMISSIONS, ANON_PERMISSIONS, USER_PERMISSIONS
|
||||
from taiga.projects.votes.services import add_vote
|
||||
from taiga.userstorage.serializers import StorageEntrySerializer
|
||||
from taiga.userstorage.models import StorageEntry
|
||||
|
||||
|
|
|
@ -135,7 +135,7 @@ def test_task_update(client, data):
|
|||
data.project_owner
|
||||
]
|
||||
|
||||
with mock.patch.object(OCCResourceMixin, "_validate_and_update_version") as _validate_and_update_version_mock:
|
||||
with mock.patch.object(OCCResourceMixin, "_validate_and_update_version"):
|
||||
task_data = TaskSerializer(data.public_task).data
|
||||
task_data["subject"] = "test"
|
||||
task_data = json.dumps(task_data)
|
||||
|
@ -256,7 +256,7 @@ def test_task_patch(client, data):
|
|||
data.project_owner
|
||||
]
|
||||
|
||||
with mock.patch.object(OCCResourceMixin, "_validate_and_update_version") as _validate_and_update_version_mock:
|
||||
with mock.patch.object(OCCResourceMixin, "_validate_and_update_version"):
|
||||
patch_data = json.dumps({"subject": "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]
|
||||
|
|
|
@ -148,6 +148,7 @@ def test_user_patch(client, data):
|
|||
results = helper_test_http_method(client, 'patch', url, patch_data, users)
|
||||
assert results == [401, 200, 403, 200]
|
||||
|
||||
|
||||
def test_user_action_change_password(client, data):
|
||||
url = reverse('users-change-password')
|
||||
|
||||
|
@ -165,7 +166,6 @@ def test_user_action_change_password(client, data):
|
|||
data.superuser,
|
||||
]
|
||||
|
||||
|
||||
post_data = json.dumps({"current_password": "test-current-password", "password": "test-password"})
|
||||
results = helper_test_http_method(client, 'post', url, post_data, users)
|
||||
assert results == [401, 204, 204, 204]
|
||||
|
@ -236,6 +236,7 @@ def test_user_action_change_password_from_recovery(client, data):
|
|||
results = helper_test_http_method(client, 'post', url, patch_data, users, reset_token)
|
||||
assert results == [204, 204, 204, 204]
|
||||
|
||||
|
||||
def test_user_action_password_recovery(client, data):
|
||||
url = reverse('users-password-recovery')
|
||||
|
||||
|
@ -252,6 +253,7 @@ def test_user_action_password_recovery(client, data):
|
|||
results = helper_test_http_method(client, 'post', url, patch_data, users)
|
||||
assert results == [200, 200, 200, 200]
|
||||
|
||||
|
||||
def test_user_action_change_email(client, data):
|
||||
url = reverse('users-change-email')
|
||||
|
||||
|
|
|
@ -133,7 +133,7 @@ def test_user_story_update(client, data):
|
|||
data.project_owner
|
||||
]
|
||||
|
||||
with mock.patch.object(OCCResourceMixin, "_validate_and_update_version") as _validate_and_update_version_mock:
|
||||
with mock.patch.object(OCCResourceMixin, "_validate_and_update_version"):
|
||||
user_story_data = UserStorySerializer(data.public_user_story).data
|
||||
user_story_data["subject"] = "test"
|
||||
user_story_data = json.dumps(user_story_data)
|
||||
|
@ -239,7 +239,7 @@ def test_user_story_patch(client, data):
|
|||
data.project_owner
|
||||
]
|
||||
|
||||
with mock.patch.object(OCCResourceMixin, "_validate_and_update_version") as _validate_and_update_version_mock:
|
||||
with mock.patch.object(OCCResourceMixin, "_validate_and_update_version"):
|
||||
patch_data = json.dumps({"subject": "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]
|
||||
|
|
|
@ -3,7 +3,6 @@ from django.core.urlresolvers import reverse
|
|||
from taiga.base.utils import json
|
||||
from taiga.webhooks.serializers import WebhookSerializer
|
||||
from taiga.webhooks.models import Webhook
|
||||
from taiga.webhooks import tasks
|
||||
|
||||
from tests import factories as f
|
||||
from tests.utils import helper_test_http_method, disconnect_signals, reconnect_signals
|
||||
|
@ -187,12 +186,12 @@ def test_webhook_action_test(client, data):
|
|||
with mock.patch('taiga.webhooks.tasks._send_request') as _send_request_mock:
|
||||
results = helper_test_http_method(client, 'post', url1, None, users)
|
||||
assert results == [404, 404, 200]
|
||||
assert _send_request_mock.called == True
|
||||
assert _send_request_mock.called is True
|
||||
|
||||
with mock.patch('taiga.webhooks.tasks._send_request') as _send_request_mock:
|
||||
results = helper_test_http_method(client, 'post', url2, None, users)
|
||||
assert results == [404, 404, 404]
|
||||
assert _send_request_mock.called == False
|
||||
assert _send_request_mock.called is False
|
||||
|
||||
|
||||
def test_webhooklogs_list(client, data):
|
||||
|
|
|
@ -124,7 +124,7 @@ def test_wiki_page_update(client, data):
|
|||
data.project_owner
|
||||
]
|
||||
|
||||
with mock.patch.object(OCCResourceMixin, "_validate_and_update_version") as _validate_and_update_version_mock:
|
||||
with mock.patch.object(OCCResourceMixin, "_validate_and_update_version"):
|
||||
wiki_page_data = WikiPageSerializer(data.public_wiki_page).data
|
||||
wiki_page_data["content"] = "test"
|
||||
wiki_page_data = json.dumps(wiki_page_data)
|
||||
|
@ -242,7 +242,7 @@ def test_wiki_page_patch(client, data):
|
|||
data.project_owner
|
||||
]
|
||||
|
||||
with mock.patch.object(OCCResourceMixin, "_validate_and_update_version") as _validate_and_update_version_mock:
|
||||
with mock.patch.object(OCCResourceMixin, "_validate_and_update_version"):
|
||||
patch_data = json.dumps({"content": "test", "version": data.public_wiki_page.version})
|
||||
results = helper_test_http_method(client, 'patch', public_url, patch_data, users)
|
||||
assert results == [401, 200, 200, 200, 200]
|
||||
|
@ -255,6 +255,7 @@ def test_wiki_page_patch(client, data):
|
|||
results = helper_test_http_method(client, 'patch', private_url2, patch_data, users)
|
||||
assert results == [401, 403, 403, 200, 200]
|
||||
|
||||
|
||||
def test_wiki_page_action_render(client, data):
|
||||
url = reverse('wiki-render')
|
||||
|
||||
|
@ -305,7 +306,7 @@ def test_wiki_link_update(client, data):
|
|||
data.project_owner
|
||||
]
|
||||
|
||||
with mock.patch.object(OCCResourceMixin, "_validate_and_update_version") as _validate_and_update_version_mock:
|
||||
with mock.patch.object(OCCResourceMixin, "_validate_and_update_version"):
|
||||
wiki_link_data = WikiLinkSerializer(data.public_wiki_link).data
|
||||
wiki_link_data["title"] = "test"
|
||||
wiki_link_data = json.dumps(wiki_link_data)
|
||||
|
@ -423,7 +424,7 @@ def test_wiki_link_patch(client, data):
|
|||
data.project_owner
|
||||
]
|
||||
|
||||
with mock.patch.object(OCCResourceMixin, "_validate_and_update_version") as _validate_and_update_version_mock:
|
||||
with mock.patch.object(OCCResourceMixin, "_validate_and_update_version"):
|
||||
patch_data = json.dumps({"title": "test"})
|
||||
results = helper_test_http_method(client, 'patch', public_url, patch_data, users)
|
||||
assert results == [401, 200, 200, 200, 200]
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
import pytest
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.core.files.base import File
|
||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
|
||||
from taiga.projects.attachments.serializers import AttachmentSerializer
|
||||
from .. import factories as f
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
@ -15,7 +13,7 @@ def test_create_user_story_attachment_without_file(client):
|
|||
Bug test "Don't create attachments without attached_file"
|
||||
"""
|
||||
us = f.UserStoryFactory.create()
|
||||
membership = f.MembershipFactory(project=us.project, user=us.owner, is_owner=True)
|
||||
f.MembershipFactory(project=us.project, user=us.owner, is_owner=True)
|
||||
attachment_data = {
|
||||
"description": "test",
|
||||
"attached_file": None,
|
||||
|
@ -32,7 +30,7 @@ def test_create_user_story_attachment_without_file(client):
|
|||
def test_create_attachment_on_wrong_project(client):
|
||||
issue1 = f.create_issue()
|
||||
issue2 = f.create_issue(owner=issue1.owner)
|
||||
membership = f.MembershipFactory(project=issue1.project, user=issue1.owner, is_owner=True)
|
||||
f.MembershipFactory(project=issue1.project, user=issue1.owner, is_owner=True)
|
||||
|
||||
assert issue1.owner == issue2.owner
|
||||
assert issue1.project.owner == issue2.project.owner
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
from django.core.urlresolvers import reverse
|
||||
|
||||
from tests import factories as f
|
||||
from tests.utils import helper_test_http_method
|
||||
|
||||
from taiga.base.utils import json
|
||||
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import pytest
|
||||
from unittest.mock import MagicMock
|
||||
from unittest.mock import patch
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
|
@ -83,6 +82,7 @@ def test_take_two_snapshots_without_changes():
|
|||
assert qs_created.count() == 1
|
||||
assert qs_hidden.count() == 0
|
||||
|
||||
|
||||
def test_take_snapshot_from_deleted_object():
|
||||
issue = f.IssueFactory.create()
|
||||
|
||||
|
@ -143,7 +143,7 @@ def test_issue_resource_history_test(client):
|
|||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
role = f.RoleFactory.create(project=project)
|
||||
membership = f.MembershipFactory.create(project=project, user=user, role=role, is_owner=True)
|
||||
f.MembershipFactory.create(project=project, user=user, role=role, is_owner=True)
|
||||
issue = f.IssueFactory.create(owner=user, project=project)
|
||||
|
||||
mock_path = "taiga.projects.issues.api.IssueViewSet.pre_conditions_on_save"
|
||||
|
@ -158,7 +158,7 @@ def test_issue_resource_history_test(client):
|
|||
|
||||
assert qs_all.count() == 0
|
||||
|
||||
with patch(mock_path) as m:
|
||||
with patch(mock_path):
|
||||
data = {"subject": "Fooooo", "version": issue.version}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 200
|
||||
|
@ -168,7 +168,7 @@ def test_issue_resource_history_test(client):
|
|||
assert qs_changed.count() == 0
|
||||
assert qs_deleted.count() == 0
|
||||
|
||||
with patch(mock_path) as m:
|
||||
with patch(mock_path):
|
||||
response = client.delete(url)
|
||||
assert response.status_code == 204
|
||||
|
||||
|
@ -200,7 +200,7 @@ def test_take_hidden_snapshot():
|
|||
def test_history_with_only_comment_shouldnot_be_hidden(client):
|
||||
project = f.create_project()
|
||||
us = f.create_userstory(project=project)
|
||||
membership = f.MembershipFactory.create(project=project, user=project.owner, is_owner=True)
|
||||
f.MembershipFactory.create(project=project, user=project.owner, is_owner=True)
|
||||
|
||||
qs_all = HistoryEntry.objects.all()
|
||||
qs_hidden = qs_all.filter(is_hidden=True)
|
||||
|
@ -221,7 +221,7 @@ def test_history_with_only_comment_shouldnot_be_hidden(client):
|
|||
def test_delete_comment_by_project_owner(client):
|
||||
project = f.create_project()
|
||||
us = f.create_userstory(project=project)
|
||||
membership = f.MembershipFactory.create(project=project, user=project.owner, is_owner=True)
|
||||
f.MembershipFactory.create(project=project, user=project.owner, is_owner=True)
|
||||
key = make_key_from_model_object(us)
|
||||
history_entry = f.HistoryEntryFactory.create(type=HistoryType.change,
|
||||
comment="testing",
|
||||
|
@ -229,6 +229,6 @@ def test_delete_comment_by_project_owner(client):
|
|||
|
||||
client.login(project.owner)
|
||||
url = reverse("userstory-history-delete-comment", args=(us.id,))
|
||||
url = "%s?id=%s"%(url, history_entry.id)
|
||||
url = "%s?id=%s" % (url, history_entry.id)
|
||||
response = client.post(url, content_type="application/json")
|
||||
assert 200 == response.status_code, response.status_code
|
||||
|
|
|
@ -14,17 +14,14 @@ from taiga.hooks.exceptions import ActionSyntaxException
|
|||
from taiga.projects.issues.models import Issue
|
||||
from taiga.projects.tasks.models import Task
|
||||
from taiga.projects.userstories.models import UserStory
|
||||
from taiga.projects.models import Membership
|
||||
from taiga.projects.history.services import get_history_queryset_by_model_instance, take_snapshot
|
||||
from taiga.projects.notifications.choices import NotifyLevel
|
||||
from taiga.projects.notifications.models import NotifyPolicy
|
||||
from taiga.projects import services
|
||||
from .. import factories as f
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
|
||||
def test_bad_signature(client):
|
||||
project=f.ProjectFactory()
|
||||
project = f.ProjectFactory()
|
||||
f.ProjectModulesConfigFactory(project=project, config={
|
||||
"bitbucket": {
|
||||
"secret": "tpnIwJDz4e"
|
||||
|
@ -41,7 +38,7 @@ def test_bad_signature(client):
|
|||
|
||||
|
||||
def test_ok_signature(client):
|
||||
project=f.ProjectFactory()
|
||||
project = f.ProjectFactory()
|
||||
f.ProjectModulesConfigFactory(project=project, config={
|
||||
"bitbucket": {
|
||||
"secret": "tpnIwJDz4e"
|
||||
|
@ -57,8 +54,9 @@ def test_ok_signature(client):
|
|||
REMOTE_ADDR=settings.BITBUCKET_VALID_ORIGIN_IPS[0])
|
||||
assert response.status_code == 204
|
||||
|
||||
|
||||
def test_invalid_ip(client):
|
||||
project=f.ProjectFactory()
|
||||
project = f.ProjectFactory()
|
||||
f.ProjectModulesConfigFactory(project=project, config={
|
||||
"bitbucket": {
|
||||
"secret": "tpnIwJDz4e"
|
||||
|
@ -76,7 +74,7 @@ def test_invalid_ip(client):
|
|||
|
||||
|
||||
def test_not_ip_filter(client):
|
||||
project=f.ProjectFactory()
|
||||
project = f.ProjectFactory()
|
||||
f.ProjectModulesConfigFactory(project=project, config={
|
||||
"bitbucket": {
|
||||
"secret": "tpnIwJDz4e",
|
||||
|
@ -95,9 +93,9 @@ def test_not_ip_filter(client):
|
|||
|
||||
|
||||
def test_push_event_detected(client):
|
||||
project=f.ProjectFactory()
|
||||
project = f.ProjectFactory()
|
||||
url = reverse("bitbucket-hook-list")
|
||||
url = "%s?project=%s"%(url, project.id)
|
||||
url = "%s?project=%s" % (url, project.id)
|
||||
data = {'payload': ['{"commits": [{"message": "test message"}]}']}
|
||||
|
||||
BitBucketViewSet._validate_signature = mock.Mock(return_value=True)
|
||||
|
@ -114,11 +112,11 @@ def test_push_event_detected(client):
|
|||
def test_push_event_issue_processing(client):
|
||||
creation_status = f.IssueStatusFactory()
|
||||
role = f.RoleFactory(project=creation_status.project, permissions=["view_issues"])
|
||||
membership = f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
new_status = f.IssueStatusFactory(project=creation_status.project)
|
||||
issue = f.IssueFactory.create(status=creation_status, project=creation_status.project, owner=creation_status.project.owner)
|
||||
payload = [
|
||||
'{"commits": [{"message": "test message test TG-%s #%s ok bye!"}]}'%(issue.ref, new_status.slug)
|
||||
'{"commits": [{"message": "test message test TG-%s #%s ok bye!"}]}' % (issue.ref, new_status.slug)
|
||||
]
|
||||
mail.outbox = []
|
||||
ev_hook = event_hooks.PushEventHook(issue.project, payload)
|
||||
|
@ -131,11 +129,11 @@ def test_push_event_issue_processing(client):
|
|||
def test_push_event_task_processing(client):
|
||||
creation_status = f.TaskStatusFactory()
|
||||
role = f.RoleFactory(project=creation_status.project, permissions=["view_tasks"])
|
||||
membership = f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
new_status = f.TaskStatusFactory(project=creation_status.project)
|
||||
task = f.TaskFactory.create(status=creation_status, project=creation_status.project, owner=creation_status.project.owner)
|
||||
payload = [
|
||||
'{"commits": [{"message": "test message test TG-%s #%s ok bye!"}]}'%(task.ref, new_status.slug)
|
||||
'{"commits": [{"message": "test message test TG-%s #%s ok bye!"}]}' % (task.ref, new_status.slug)
|
||||
]
|
||||
mail.outbox = []
|
||||
ev_hook = event_hooks.PushEventHook(task.project, payload)
|
||||
|
@ -148,11 +146,11 @@ def test_push_event_task_processing(client):
|
|||
def test_push_event_user_story_processing(client):
|
||||
creation_status = f.UserStoryStatusFactory()
|
||||
role = f.RoleFactory(project=creation_status.project, permissions=["view_us"])
|
||||
membership = f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
new_status = f.UserStoryStatusFactory(project=creation_status.project)
|
||||
user_story = f.UserStoryFactory.create(status=creation_status, project=creation_status.project, owner=creation_status.project.owner)
|
||||
payload = [
|
||||
'{"commits": [{"message": "test message test TG-%s #%s ok bye!"}]}'%(user_story.ref, new_status.slug)
|
||||
'{"commits": [{"message": "test message test TG-%s #%s ok bye!"}]}' % (user_story.ref, new_status.slug)
|
||||
]
|
||||
mail.outbox = []
|
||||
ev_hook = event_hooks.PushEventHook(user_story.project, payload)
|
||||
|
@ -165,11 +163,11 @@ def test_push_event_user_story_processing(client):
|
|||
def test_push_event_processing_case_insensitive(client):
|
||||
creation_status = f.TaskStatusFactory()
|
||||
role = f.RoleFactory(project=creation_status.project, permissions=["view_tasks"])
|
||||
membership = f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
new_status = f.TaskStatusFactory(project=creation_status.project)
|
||||
task = f.TaskFactory.create(status=creation_status, project=creation_status.project, owner=creation_status.project.owner)
|
||||
payload = [
|
||||
'{"commits": [{"message": "test message test tg-%s #%s ok bye!"}]}'%(task.ref, new_status.slug.upper())
|
||||
'{"commits": [{"message": "test message test tg-%s #%s ok bye!"}]}' % (task.ref, new_status.slug.upper())
|
||||
]
|
||||
mail.outbox = []
|
||||
ev_hook = event_hooks.PushEventHook(task.project, payload)
|
||||
|
@ -182,7 +180,7 @@ def test_push_event_processing_case_insensitive(client):
|
|||
def test_push_event_task_bad_processing_non_existing_ref(client):
|
||||
issue_status = f.IssueStatusFactory()
|
||||
payload = [
|
||||
'{"commits": [{"message": "test message test TG-6666666 #%s ok bye!"}]}'%(issue_status.slug)
|
||||
'{"commits": [{"message": "test message test TG-6666666 #%s ok bye!"}]}' % (issue_status.slug)
|
||||
]
|
||||
mail.outbox = []
|
||||
|
||||
|
@ -197,7 +195,7 @@ def test_push_event_task_bad_processing_non_existing_ref(client):
|
|||
def test_push_event_us_bad_processing_non_existing_status(client):
|
||||
user_story = f.UserStoryFactory.create()
|
||||
payload = [
|
||||
'{"commits": [{"message": "test message test TG-%s #non-existing-slug ok bye!"}]}'%(user_story.ref)
|
||||
'{"commits": [{"message": "test message test TG-%s #non-existing-slug ok bye!"}]}' % (user_story.ref)
|
||||
]
|
||||
|
||||
mail.outbox = []
|
||||
|
@ -213,7 +211,7 @@ def test_push_event_us_bad_processing_non_existing_status(client):
|
|||
def test_push_event_bad_processing_non_existing_status(client):
|
||||
issue = f.IssueFactory.create()
|
||||
payload = [
|
||||
'{"commits": [{"message": "test message test TG-%s #non-existing-slug ok bye!"}]}'%(issue.ref)
|
||||
'{"commits": [{"message": "test message test TG-%s #non-existing-slug ok bye!"}]}' % (issue.ref)
|
||||
]
|
||||
mail.outbox = []
|
||||
|
||||
|
@ -227,7 +225,7 @@ def test_push_event_bad_processing_non_existing_status(client):
|
|||
|
||||
def test_api_get_project_modules(client):
|
||||
project = f.create_project()
|
||||
membership = f.MembershipFactory(project=project, user=project.owner, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=project.owner, is_owner=True)
|
||||
|
||||
url = reverse("projects-modules", args=(project.id,))
|
||||
|
||||
|
@ -242,7 +240,7 @@ def test_api_get_project_modules(client):
|
|||
|
||||
def test_api_patch_project_modules(client):
|
||||
project = f.create_project()
|
||||
membership = f.MembershipFactory(project=project, user=project.owner, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=project.owner, is_owner=True)
|
||||
|
||||
url = reverse("projects-modules", args=(project.id,))
|
||||
|
||||
|
@ -261,6 +259,7 @@ def test_api_patch_project_modules(client):
|
|||
assert config["bitbucket"]["secret"] == "test_secret"
|
||||
assert config["bitbucket"]["webhooks_url"] != "test_url"
|
||||
|
||||
|
||||
def test_replace_bitbucket_references():
|
||||
assert event_hooks.replace_bitbucket_references("project-url", "#2") == "[BitBucket#2](project-url/issues/2)"
|
||||
assert event_hooks.replace_bitbucket_references("project-url", "#2 ") == "[BitBucket#2](project-url/issues/2) "
|
||||
|
|
|
@ -23,9 +23,9 @@ pytestmark = pytest.mark.django_db
|
|||
|
||||
|
||||
def test_bad_signature(client):
|
||||
project=f.ProjectFactory()
|
||||
project = f.ProjectFactory()
|
||||
url = reverse("github-hook-list")
|
||||
url = "%s?project=%s"%(url, project.id)
|
||||
url = "%s?project=%s" % (url, project.id)
|
||||
data = {}
|
||||
response = client.post(url, json.dumps(data),
|
||||
HTTP_X_HUB_SIGNATURE="sha1=badbadbad",
|
||||
|
@ -36,7 +36,7 @@ def test_bad_signature(client):
|
|||
|
||||
|
||||
def test_ok_signature(client):
|
||||
project=f.ProjectFactory()
|
||||
project = f.ProjectFactory()
|
||||
f.ProjectModulesConfigFactory(project=project, config={
|
||||
"github": {
|
||||
"secret": "tpnIwJDz4e"
|
||||
|
@ -44,7 +44,7 @@ def test_ok_signature(client):
|
|||
})
|
||||
|
||||
url = reverse("github-hook-list")
|
||||
url = "%s?project=%s"%(url, project.id)
|
||||
url = "%s?project=%s" % (url, project.id)
|
||||
data = {"test:": "data"}
|
||||
response = client.post(url, json.dumps(data),
|
||||
HTTP_X_HUB_SIGNATURE="sha1=3c8e83fdaa266f81c036ea0b71e98eb5e054581a",
|
||||
|
@ -54,9 +54,9 @@ def test_ok_signature(client):
|
|||
|
||||
|
||||
def test_push_event_detected(client):
|
||||
project=f.ProjectFactory()
|
||||
project = f.ProjectFactory()
|
||||
url = reverse("github-hook-list")
|
||||
url = "%s?project=%s"%(url, project.id)
|
||||
url = "%s?project=%s" % (url, project.id)
|
||||
data = {"commits": [
|
||||
{"message": "test message"},
|
||||
]}
|
||||
|
@ -76,14 +76,14 @@ def test_push_event_detected(client):
|
|||
def test_push_event_issue_processing(client):
|
||||
creation_status = f.IssueStatusFactory()
|
||||
role = f.RoleFactory(project=creation_status.project, permissions=["view_issues"])
|
||||
membership = f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
new_status = f.IssueStatusFactory(project=creation_status.project)
|
||||
issue = f.IssueFactory.create(status=creation_status, project=creation_status.project, owner=creation_status.project.owner)
|
||||
payload = {"commits": [
|
||||
{"message": """test message
|
||||
test TG-%s #%s ok
|
||||
bye!
|
||||
"""%(issue.ref, new_status.slug)},
|
||||
""" % (issue.ref, new_status.slug)},
|
||||
]}
|
||||
mail.outbox = []
|
||||
ev_hook = event_hooks.PushEventHook(issue.project, payload)
|
||||
|
@ -96,14 +96,14 @@ def test_push_event_issue_processing(client):
|
|||
def test_push_event_task_processing(client):
|
||||
creation_status = f.TaskStatusFactory()
|
||||
role = f.RoleFactory(project=creation_status.project, permissions=["view_tasks"])
|
||||
membership = f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
new_status = f.TaskStatusFactory(project=creation_status.project)
|
||||
task = f.TaskFactory.create(status=creation_status, project=creation_status.project, owner=creation_status.project.owner)
|
||||
payload = {"commits": [
|
||||
{"message": """test message
|
||||
test TG-%s #%s ok
|
||||
bye!
|
||||
"""%(task.ref, new_status.slug)},
|
||||
""" % (task.ref, new_status.slug)},
|
||||
]}
|
||||
mail.outbox = []
|
||||
ev_hook = event_hooks.PushEventHook(task.project, payload)
|
||||
|
@ -116,14 +116,14 @@ def test_push_event_task_processing(client):
|
|||
def test_push_event_user_story_processing(client):
|
||||
creation_status = f.UserStoryStatusFactory()
|
||||
role = f.RoleFactory(project=creation_status.project, permissions=["view_us"])
|
||||
membership = f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
new_status = f.UserStoryStatusFactory(project=creation_status.project)
|
||||
user_story = f.UserStoryFactory.create(status=creation_status, project=creation_status.project, owner=creation_status.project.owner)
|
||||
payload = {"commits": [
|
||||
{"message": """test message
|
||||
test TG-%s #%s ok
|
||||
bye!
|
||||
"""%(user_story.ref, new_status.slug)},
|
||||
""" % (user_story.ref, new_status.slug)},
|
||||
]}
|
||||
|
||||
mail.outbox = []
|
||||
|
@ -137,14 +137,14 @@ def test_push_event_user_story_processing(client):
|
|||
def test_push_event_processing_case_insensitive(client):
|
||||
creation_status = f.TaskStatusFactory()
|
||||
role = f.RoleFactory(project=creation_status.project, permissions=["view_tasks"])
|
||||
membership = f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
new_status = f.TaskStatusFactory(project=creation_status.project)
|
||||
task = f.TaskFactory.create(status=creation_status, project=creation_status.project, owner=creation_status.project.owner)
|
||||
payload = {"commits": [
|
||||
{"message": """test message
|
||||
test tg-%s #%s ok
|
||||
bye!
|
||||
"""%(task.ref, new_status.slug.upper())},
|
||||
""" % (task.ref, new_status.slug.upper())},
|
||||
]}
|
||||
mail.outbox = []
|
||||
ev_hook = event_hooks.PushEventHook(task.project, payload)
|
||||
|
@ -160,7 +160,7 @@ def test_push_event_task_bad_processing_non_existing_ref(client):
|
|||
{"message": """test message
|
||||
test TG-6666666 #%s ok
|
||||
bye!
|
||||
"""%(issue_status.slug)},
|
||||
""" % (issue_status.slug)},
|
||||
]}
|
||||
mail.outbox = []
|
||||
|
||||
|
@ -178,7 +178,7 @@ def test_push_event_us_bad_processing_non_existing_status(client):
|
|||
{"message": """test message
|
||||
test TG-%s #non-existing-slug ok
|
||||
bye!
|
||||
"""%(user_story.ref)},
|
||||
""" % (user_story.ref)},
|
||||
]}
|
||||
|
||||
mail.outbox = []
|
||||
|
@ -197,7 +197,7 @@ def test_push_event_bad_processing_non_existing_status(client):
|
|||
{"message": """test message
|
||||
test TG-%s #non-existing-slug ok
|
||||
bye!
|
||||
"""%(issue.ref)},
|
||||
""" % (issue.ref)},
|
||||
]}
|
||||
|
||||
mail.outbox = []
|
||||
|
@ -244,6 +244,7 @@ def test_issues_event_opened_issue(client):
|
|||
assert Issue.objects.count() == 2
|
||||
assert len(mail.outbox) == 1
|
||||
|
||||
|
||||
def test_issues_event_other_than_opened_issue(client):
|
||||
issue = f.IssueFactory.create()
|
||||
issue.project.default_issue_status = issue.status
|
||||
|
@ -271,6 +272,7 @@ def test_issues_event_other_than_opened_issue(client):
|
|||
assert Issue.objects.count() == 1
|
||||
assert len(mail.outbox) == 0
|
||||
|
||||
|
||||
def test_issues_event_bad_issue(client):
|
||||
issue = f.IssueFactory.create()
|
||||
issue.project.default_issue_status = issue.status
|
||||
|
@ -301,7 +303,7 @@ def test_issues_event_bad_issue(client):
|
|||
def test_issue_comment_event_on_existing_issue_task_and_us(client):
|
||||
project = f.ProjectFactory()
|
||||
role = f.RoleFactory(project=project, permissions=["view_tasks", "view_issues", "view_us"])
|
||||
membership = f.MembershipFactory(project=project, role=role, user=project.owner)
|
||||
f.MembershipFactory(project=project, role=role, user=project.owner)
|
||||
user = f.UserFactory()
|
||||
|
||||
issue = f.IssueFactory.create(external_reference=["github", "http://github.com/test/project/issues/11"], owner=project.owner, project=project)
|
||||
|
@ -412,7 +414,7 @@ def test_issues_event_bad_comment(client):
|
|||
|
||||
def test_api_get_project_modules(client):
|
||||
project = f.create_project()
|
||||
membership = f.MembershipFactory(project=project, user=project.owner, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=project.owner, is_owner=True)
|
||||
|
||||
url = reverse("projects-modules", args=(project.id,))
|
||||
|
||||
|
@ -427,7 +429,7 @@ def test_api_get_project_modules(client):
|
|||
|
||||
def test_api_patch_project_modules(client):
|
||||
project = f.create_project()
|
||||
membership = f.MembershipFactory(project=project, user=project.owner, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=project.owner, is_owner=True)
|
||||
|
||||
url = reverse("projects-modules", args=(project.id,))
|
||||
|
||||
|
@ -446,6 +448,7 @@ def test_api_patch_project_modules(client):
|
|||
assert config["github"]["secret"] == "test_secret"
|
||||
assert config["github"]["webhooks_url"] != "test_url"
|
||||
|
||||
|
||||
def test_replace_github_references():
|
||||
assert event_hooks.replace_github_references("project-url", "#2") == "[GitHub#2](project-url/issues/2)"
|
||||
assert event_hooks.replace_github_references("project-url", "#2 ") == "[GitHub#2](project-url/issues/2) "
|
||||
|
|
|
@ -13,7 +13,6 @@ from taiga.projects.issues.models import Issue
|
|||
from taiga.projects.tasks.models import Task
|
||||
from taiga.projects.userstories.models import UserStory
|
||||
from taiga.projects.models import Membership
|
||||
from taiga.projects.history.services import get_history_queryset_by_model_instance, take_snapshot
|
||||
from taiga.projects.notifications.choices import NotifyLevel
|
||||
from taiga.projects.notifications.models import NotifyPolicy
|
||||
from taiga.projects import services
|
||||
|
@ -21,8 +20,9 @@ from .. import factories as f
|
|||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
|
||||
def test_bad_signature(client):
|
||||
project=f.ProjectFactory()
|
||||
project = f.ProjectFactory()
|
||||
f.ProjectModulesConfigFactory(project=project, config={
|
||||
"gitlab": {
|
||||
"secret": "tpnIwJDz4e"
|
||||
|
@ -39,7 +39,7 @@ def test_bad_signature(client):
|
|||
|
||||
|
||||
def test_ok_signature(client):
|
||||
project=f.ProjectFactory()
|
||||
project = f.ProjectFactory()
|
||||
f.ProjectModulesConfigFactory(project=project, config={
|
||||
"gitlab": {
|
||||
"secret": "tpnIwJDz4e",
|
||||
|
@ -59,7 +59,7 @@ def test_ok_signature(client):
|
|||
|
||||
|
||||
def test_invalid_ip(client):
|
||||
project=f.ProjectFactory()
|
||||
project = f.ProjectFactory()
|
||||
f.ProjectModulesConfigFactory(project=project, config={
|
||||
"gitlab": {
|
||||
"secret": "tpnIwJDz4e",
|
||||
|
@ -79,7 +79,7 @@ def test_invalid_ip(client):
|
|||
|
||||
|
||||
def test_not_ip_filter(client):
|
||||
project=f.ProjectFactory()
|
||||
project = f.ProjectFactory()
|
||||
f.ProjectModulesConfigFactory(project=project, config={
|
||||
"gitlab": {
|
||||
"secret": "tpnIwJDz4e",
|
||||
|
@ -99,9 +99,9 @@ def test_not_ip_filter(client):
|
|||
|
||||
|
||||
def test_push_event_detected(client):
|
||||
project=f.ProjectFactory()
|
||||
project = f.ProjectFactory()
|
||||
url = reverse("gitlab-hook-list")
|
||||
url = "%s?project=%s"%(url, project.id)
|
||||
url = "%s?project=%s" % (url, project.id)
|
||||
data = {"commits": [
|
||||
{"message": "test message"},
|
||||
]}
|
||||
|
@ -121,14 +121,14 @@ def test_push_event_detected(client):
|
|||
def test_push_event_issue_processing(client):
|
||||
creation_status = f.IssueStatusFactory()
|
||||
role = f.RoleFactory(project=creation_status.project, permissions=["view_issues"])
|
||||
membership = f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
new_status = f.IssueStatusFactory(project=creation_status.project)
|
||||
issue = f.IssueFactory.create(status=creation_status, project=creation_status.project, owner=creation_status.project.owner)
|
||||
payload = {"commits": [
|
||||
{"message": """test message
|
||||
test TG-%s #%s ok
|
||||
bye!
|
||||
"""%(issue.ref, new_status.slug)},
|
||||
""" % (issue.ref, new_status.slug)},
|
||||
]}
|
||||
mail.outbox = []
|
||||
ev_hook = event_hooks.PushEventHook(issue.project, payload)
|
||||
|
@ -141,14 +141,14 @@ def test_push_event_issue_processing(client):
|
|||
def test_push_event_task_processing(client):
|
||||
creation_status = f.TaskStatusFactory()
|
||||
role = f.RoleFactory(project=creation_status.project, permissions=["view_tasks"])
|
||||
membership = f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
new_status = f.TaskStatusFactory(project=creation_status.project)
|
||||
task = f.TaskFactory.create(status=creation_status, project=creation_status.project, owner=creation_status.project.owner)
|
||||
payload = {"commits": [
|
||||
{"message": """test message
|
||||
test TG-%s #%s ok
|
||||
bye!
|
||||
"""%(task.ref, new_status.slug)},
|
||||
""" % (task.ref, new_status.slug)},
|
||||
]}
|
||||
mail.outbox = []
|
||||
ev_hook = event_hooks.PushEventHook(task.project, payload)
|
||||
|
@ -161,14 +161,14 @@ def test_push_event_task_processing(client):
|
|||
def test_push_event_user_story_processing(client):
|
||||
creation_status = f.UserStoryStatusFactory()
|
||||
role = f.RoleFactory(project=creation_status.project, permissions=["view_us"])
|
||||
membership = f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
new_status = f.UserStoryStatusFactory(project=creation_status.project)
|
||||
user_story = f.UserStoryFactory.create(status=creation_status, project=creation_status.project, owner=creation_status.project.owner)
|
||||
payload = {"commits": [
|
||||
{"message": """test message
|
||||
test TG-%s #%s ok
|
||||
bye!
|
||||
"""%(user_story.ref, new_status.slug)},
|
||||
""" % (user_story.ref, new_status.slug)},
|
||||
]}
|
||||
|
||||
mail.outbox = []
|
||||
|
@ -182,14 +182,14 @@ def test_push_event_user_story_processing(client):
|
|||
def test_push_event_processing_case_insensitive(client):
|
||||
creation_status = f.TaskStatusFactory()
|
||||
role = f.RoleFactory(project=creation_status.project, permissions=["view_tasks"])
|
||||
membership = f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
|
||||
new_status = f.TaskStatusFactory(project=creation_status.project)
|
||||
task = f.TaskFactory.create(status=creation_status, project=creation_status.project, owner=creation_status.project.owner)
|
||||
payload = {"commits": [
|
||||
{"message": """test message
|
||||
test tg-%s #%s ok
|
||||
bye!
|
||||
"""%(task.ref, new_status.slug.upper())},
|
||||
""" % (task.ref, new_status.slug.upper())},
|
||||
]}
|
||||
mail.outbox = []
|
||||
ev_hook = event_hooks.PushEventHook(task.project, payload)
|
||||
|
@ -205,7 +205,7 @@ def test_push_event_task_bad_processing_non_existing_ref(client):
|
|||
{"message": """test message
|
||||
test TG-6666666 #%s ok
|
||||
bye!
|
||||
"""%(issue_status.slug)},
|
||||
""" % (issue_status.slug)},
|
||||
]}
|
||||
mail.outbox = []
|
||||
|
||||
|
@ -223,7 +223,7 @@ def test_push_event_us_bad_processing_non_existing_status(client):
|
|||
{"message": """test message
|
||||
test TG-%s #non-existing-slug ok
|
||||
bye!
|
||||
"""%(user_story.ref)},
|
||||
""" % (user_story.ref)},
|
||||
]}
|
||||
|
||||
mail.outbox = []
|
||||
|
@ -242,7 +242,7 @@ def test_push_event_bad_processing_non_existing_status(client):
|
|||
{"message": """test message
|
||||
test TG-%s #non-existing-slug ok
|
||||
bye!
|
||||
"""%(issue.ref)},
|
||||
""" % (issue.ref)},
|
||||
]}
|
||||
|
||||
mail.outbox = []
|
||||
|
@ -342,7 +342,7 @@ def test_issues_event_bad_issue(client):
|
|||
|
||||
def test_api_get_project_modules(client):
|
||||
project = f.create_project()
|
||||
membership = f.MembershipFactory(project=project, user=project.owner, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=project.owner, is_owner=True)
|
||||
|
||||
url = reverse("projects-modules", args=(project.id,))
|
||||
|
||||
|
@ -357,7 +357,7 @@ def test_api_get_project_modules(client):
|
|||
|
||||
def test_api_patch_project_modules(client):
|
||||
project = f.create_project()
|
||||
membership = f.MembershipFactory(project=project, user=project.owner, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=project.owner, is_owner=True)
|
||||
|
||||
url = reverse("projects-modules", args=(project.id,))
|
||||
|
||||
|
@ -376,6 +376,7 @@ def test_api_patch_project_modules(client):
|
|||
assert config["gitlab"]["secret"] == "test_secret"
|
||||
assert config["gitlab"]["webhooks_url"] != "test_url"
|
||||
|
||||
|
||||
def test_replace_gitlab_references():
|
||||
assert event_hooks.replace_gitlab_references("project-url", "#2") == "[GitLab#2](project-url/issues/2)"
|
||||
assert event_hooks.replace_gitlab_references("project-url", "#2 ") == "[GitLab#2](project-url/issues/2) "
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
|
||||
import pytest
|
||||
import base64
|
||||
import datetime
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.core.files.base import ContentFile
|
||||
|
@ -30,9 +29,6 @@ from taiga.projects.userstories.models import UserStory
|
|||
from taiga.projects.tasks.models import Task
|
||||
from taiga.projects.wiki.models import WikiPage
|
||||
|
||||
from taiga.export_import.service import project_to_dict
|
||||
from taiga.export_import.dump_service import dict_to_project
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
|
||||
|
@ -46,6 +42,7 @@ def test_invalid_project_import(client):
|
|||
response = client.post(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 400
|
||||
|
||||
|
||||
def test_valid_project_import_without_extra_data(client):
|
||||
user = f.UserFactory.create()
|
||||
client.login(user)
|
||||
|
@ -68,6 +65,7 @@ def test_valid_project_import_without_extra_data(client):
|
|||
assert all(map(lambda x: len(response_data[x]) == 0, must_empty_children))
|
||||
assert response_data["owner"] == user.email
|
||||
|
||||
|
||||
def test_valid_project_import_with_not_existing_memberships(client):
|
||||
user = f.UserFactory.create()
|
||||
client.login(user)
|
||||
|
@ -89,6 +87,7 @@ def test_valid_project_import_with_not_existing_memberships(client):
|
|||
# The new membership and the owner membership
|
||||
assert len(response_data["memberships"]) == 2
|
||||
|
||||
|
||||
def test_valid_project_import_with_extra_data(client):
|
||||
user = f.UserFactory.create()
|
||||
client.login(user)
|
||||
|
@ -142,6 +141,7 @@ def test_valid_project_import_with_extra_data(client):
|
|||
assert all(map(lambda x: len(response_data[x]) == 1, must_one_instance_children))
|
||||
assert response_data["owner"] == user.email
|
||||
|
||||
|
||||
def test_invalid_project_import_with_extra_data(client):
|
||||
user = f.UserFactory.create()
|
||||
client.login(user)
|
||||
|
@ -150,14 +150,14 @@ def test_invalid_project_import_with_extra_data(client):
|
|||
data = {
|
||||
"name": "Imported project",
|
||||
"description": "Imported project",
|
||||
"roles": [{ }],
|
||||
"us_statuses": [{ }],
|
||||
"severities": [{ }],
|
||||
"priorities": [{ }],
|
||||
"points": [{ }],
|
||||
"issue_types": [{ }],
|
||||
"task_statuses": [{ }],
|
||||
"issue_statuses": [{ }],
|
||||
"roles": [{}],
|
||||
"us_statuses": [{}],
|
||||
"severities": [{}],
|
||||
"priorities": [{}],
|
||||
"points": [{}],
|
||||
"issue_types": [{}],
|
||||
"task_statuses": [{}],
|
||||
"issue_statuses": [{}],
|
||||
}
|
||||
|
||||
response = client.post(url, json.dumps(data), content_type="application/json")
|
||||
|
@ -166,10 +166,11 @@ def test_invalid_project_import_with_extra_data(client):
|
|||
assert len(response_data) == 8
|
||||
assert Project.objects.filter(slug="imported-project").count() == 0
|
||||
|
||||
|
||||
def test_invalid_issue_import(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
client.login(user)
|
||||
|
||||
url = reverse("importer-issue", args=[project.pk])
|
||||
|
@ -178,10 +179,11 @@ def test_invalid_issue_import(client):
|
|||
response = client.post(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 400
|
||||
|
||||
|
||||
def test_valid_user_story_import(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
project.default_us_status = f.UserStoryStatusFactory.create(project=project)
|
||||
project.save()
|
||||
client.login(user)
|
||||
|
@ -202,7 +204,7 @@ def test_valid_user_story_import(client):
|
|||
def test_valid_issue_import_without_extra_data(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
project.default_issue_type = f.IssueTypeFactory.create(project=project)
|
||||
project.default_issue_status = f.IssueStatusFactory.create(project=project)
|
||||
project.default_severity = f.SeverityFactory.create(project=project)
|
||||
|
@ -221,10 +223,11 @@ def test_valid_issue_import_without_extra_data(client):
|
|||
assert response_data["owner"] == user.email
|
||||
assert response_data["ref"] is not None
|
||||
|
||||
|
||||
def test_valid_issue_import_with_extra_data(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
project.default_issue_type = f.IssueTypeFactory.create(project=project)
|
||||
project.default_issue_status = f.IssueStatusFactory.create(project=project)
|
||||
project.default_severity = f.SeverityFactory.create(project=project)
|
||||
|
@ -254,10 +257,11 @@ def test_valid_issue_import_with_extra_data(client):
|
|||
assert response_data["ref"] is not None
|
||||
assert response_data["finished_date"] == "2014-10-24T00:00:00+0000"
|
||||
|
||||
|
||||
def test_invalid_issue_import_with_extra_data(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
project.default_issue_type = f.IssueTypeFactory.create(project=project)
|
||||
project.default_issue_status = f.IssueStatusFactory.create(project=project)
|
||||
project.default_severity = f.SeverityFactory.create(project=project)
|
||||
|
@ -269,7 +273,7 @@ def test_invalid_issue_import_with_extra_data(client):
|
|||
data = {
|
||||
"subject": "Imported issue",
|
||||
"description": "Imported issue",
|
||||
"attachments": [{ }],
|
||||
"attachments": [{}],
|
||||
}
|
||||
|
||||
response = client.post(url, json.dumps(data), content_type="application/json")
|
||||
|
@ -278,10 +282,11 @@ def test_invalid_issue_import_with_extra_data(client):
|
|||
assert len(response_data) == 1
|
||||
assert Issue.objects.filter(subject="Imported issue").count() == 0
|
||||
|
||||
|
||||
def test_invalid_issue_import_with_bad_choices(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
project.default_issue_type = f.IssueTypeFactory.create(project=project)
|
||||
project.default_issue_status = f.IssueStatusFactory.create(project=project)
|
||||
project.default_severity = f.SeverityFactory.create(project=project)
|
||||
|
@ -337,10 +342,11 @@ def test_invalid_issue_import_with_bad_choices(client):
|
|||
response_data = json.loads(response.content.decode("utf-8"))
|
||||
assert len(response_data) == 1
|
||||
|
||||
|
||||
def test_invalid_us_import(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
client.login(user)
|
||||
|
||||
url = reverse("importer-us", args=[project.pk])
|
||||
|
@ -349,10 +355,11 @@ def test_invalid_us_import(client):
|
|||
response = client.post(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 400
|
||||
|
||||
|
||||
def test_valid_us_import_without_extra_data(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
project.default_us_status = f.UserStoryStatusFactory.create(project=project)
|
||||
project.save()
|
||||
client.login(user)
|
||||
|
@ -368,10 +375,11 @@ def test_valid_us_import_without_extra_data(client):
|
|||
assert response_data["owner"] == user.email
|
||||
assert response_data["ref"] is not None
|
||||
|
||||
|
||||
def test_valid_us_import_with_extra_data(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
project.default_us_status = f.UserStoryStatusFactory.create(project=project)
|
||||
project.save()
|
||||
client.login(user)
|
||||
|
@ -396,10 +404,11 @@ def test_valid_us_import_with_extra_data(client):
|
|||
assert response_data["owner"] == user.email
|
||||
assert response_data["ref"] is not None
|
||||
|
||||
|
||||
def test_invalid_us_import_with_extra_data(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
project.default_us_status = f.UserStoryStatusFactory.create(project=project)
|
||||
project.save()
|
||||
client.login(user)
|
||||
|
@ -408,7 +417,7 @@ def test_invalid_us_import_with_extra_data(client):
|
|||
data = {
|
||||
"subject": "Imported us",
|
||||
"description": "Imported us",
|
||||
"attachments": [{ }],
|
||||
"attachments": [{}],
|
||||
}
|
||||
|
||||
response = client.post(url, json.dumps(data), content_type="application/json")
|
||||
|
@ -417,10 +426,11 @@ def test_invalid_us_import_with_extra_data(client):
|
|||
assert len(response_data) == 1
|
||||
assert UserStory.objects.filter(subject="Imported us").count() == 0
|
||||
|
||||
|
||||
def test_invalid_us_import_with_bad_choices(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
project.default_us_status = f.UserStoryStatusFactory.create(project=project)
|
||||
project.save()
|
||||
client.login(user)
|
||||
|
@ -437,10 +447,11 @@ def test_invalid_us_import_with_bad_choices(client):
|
|||
response_data = json.loads(response.content.decode("utf-8"))
|
||||
assert len(response_data) == 1
|
||||
|
||||
|
||||
def test_invalid_task_import(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
client.login(user)
|
||||
|
||||
url = reverse("importer-task", args=[project.pk])
|
||||
|
@ -449,10 +460,11 @@ def test_invalid_task_import(client):
|
|||
response = client.post(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 400
|
||||
|
||||
|
||||
def test_valid_task_import_without_extra_data(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
project.default_task_status = f.TaskStatusFactory.create(project=project)
|
||||
project.save()
|
||||
client.login(user)
|
||||
|
@ -468,10 +480,11 @@ def test_valid_task_import_without_extra_data(client):
|
|||
assert response_data["owner"] == user.email
|
||||
assert response_data["ref"] is not None
|
||||
|
||||
|
||||
def test_valid_task_import_with_extra_data(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
project.default_task_status = f.TaskStatusFactory.create(project=project)
|
||||
project.save()
|
||||
client.login(user)
|
||||
|
@ -496,10 +509,11 @@ def test_valid_task_import_with_extra_data(client):
|
|||
assert response_data["owner"] == user.email
|
||||
assert response_data["ref"] is not None
|
||||
|
||||
|
||||
def test_invalid_task_import_with_extra_data(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
project.default_task_status = f.TaskStatusFactory.create(project=project)
|
||||
project.save()
|
||||
client.login(user)
|
||||
|
@ -508,7 +522,7 @@ def test_invalid_task_import_with_extra_data(client):
|
|||
data = {
|
||||
"subject": "Imported task",
|
||||
"description": "Imported task",
|
||||
"attachments": [{ }],
|
||||
"attachments": [{}],
|
||||
}
|
||||
|
||||
response = client.post(url, json.dumps(data), content_type="application/json")
|
||||
|
@ -517,10 +531,11 @@ def test_invalid_task_import_with_extra_data(client):
|
|||
assert len(response_data) == 1
|
||||
assert Task.objects.filter(subject="Imported task").count() == 0
|
||||
|
||||
|
||||
def test_invalid_task_import_with_bad_choices(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
project.default_task_status = f.TaskStatusFactory.create(project=project)
|
||||
project.save()
|
||||
client.login(user)
|
||||
|
@ -537,10 +552,11 @@ def test_invalid_task_import_with_bad_choices(client):
|
|||
response_data = json.loads(response.content.decode("utf-8"))
|
||||
assert len(response_data) == 1
|
||||
|
||||
|
||||
def test_valid_task_with_user_story(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
project.default_task_status = f.TaskStatusFactory.create(project=project)
|
||||
us = f.UserStoryFactory.create(project=project)
|
||||
project.save()
|
||||
|
@ -557,10 +573,11 @@ def test_valid_task_with_user_story(client):
|
|||
assert response.status_code == 201
|
||||
assert us.tasks.all().count() == 1
|
||||
|
||||
|
||||
def test_invalid_wiki_page_import(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
client.login(user)
|
||||
|
||||
url = reverse("importer-wiki-page", args=[project.pk])
|
||||
|
@ -569,10 +586,11 @@ def test_invalid_wiki_page_import(client):
|
|||
response = client.post(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 400
|
||||
|
||||
|
||||
def test_valid_wiki_page_import_without_extra_data(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
client.login(user)
|
||||
|
||||
url = reverse("importer-wiki-page", args=[project.pk])
|
||||
|
@ -585,10 +603,11 @@ def test_valid_wiki_page_import_without_extra_data(client):
|
|||
response_data = json.loads(response.content.decode("utf-8"))
|
||||
assert response_data["owner"] == user.email
|
||||
|
||||
|
||||
def test_valid_wiki_page_import_with_extra_data(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
client.login(user)
|
||||
|
||||
url = reverse("importer-wiki-page", args=[project.pk])
|
||||
|
@ -610,17 +629,18 @@ def test_valid_wiki_page_import_with_extra_data(client):
|
|||
assert len(response_data["attachments"]) == 1
|
||||
assert response_data["owner"] == user.email
|
||||
|
||||
|
||||
def test_invalid_wiki_page_import_with_extra_data(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
client.login(user)
|
||||
|
||||
url = reverse("importer-wiki-page", args=[project.pk])
|
||||
data = {
|
||||
"slug": "imported-wiki-page",
|
||||
"content": "Imported wiki_page",
|
||||
"attachments": [{ }],
|
||||
"attachments": [{}],
|
||||
}
|
||||
|
||||
response = client.post(url, json.dumps(data), content_type="application/json")
|
||||
|
@ -629,10 +649,11 @@ def test_invalid_wiki_page_import_with_extra_data(client):
|
|||
assert len(response_data) == 1
|
||||
assert WikiPage.objects.filter(slug="imported-wiki-page").count() == 0
|
||||
|
||||
|
||||
def test_invalid_wiki_link_import(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
client.login(user)
|
||||
|
||||
url = reverse("importer-wiki-link", args=[project.pk])
|
||||
|
@ -641,10 +662,11 @@ def test_invalid_wiki_link_import(client):
|
|||
response = client.post(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 400
|
||||
|
||||
|
||||
def test_valid_wiki_link_import(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
client.login(user)
|
||||
|
||||
url = reverse("importer-wiki-link", args=[project.pk])
|
||||
|
@ -655,12 +677,13 @@ def test_valid_wiki_link_import(client):
|
|||
|
||||
response = client.post(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 201
|
||||
response_data = json.loads(response.content.decode("utf-8"))
|
||||
json.loads(response.content.decode("utf-8"))
|
||||
|
||||
|
||||
def test_invalid_milestone_import(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
client.login(user)
|
||||
|
||||
url = reverse("importer-milestone", args=[project.pk])
|
||||
|
@ -669,10 +692,11 @@ def test_invalid_milestone_import(client):
|
|||
response = client.post(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 400
|
||||
|
||||
|
||||
def test_valid_milestone_import(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
client.login(user)
|
||||
|
||||
url = reverse("importer-milestone", args=[project.pk])
|
||||
|
@ -684,12 +708,13 @@ def test_valid_milestone_import(client):
|
|||
|
||||
response = client.post(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 201
|
||||
response_data = json.loads(response.content.decode("utf-8"))
|
||||
json.loads(response.content.decode("utf-8"))
|
||||
|
||||
|
||||
def test_milestone_import_duplicated_milestone(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=user, is_owner=True)
|
||||
client.login(user)
|
||||
|
||||
url = reverse("importer-milestone", args=[project.pk])
|
||||
|
@ -705,6 +730,7 @@ def test_milestone_import_duplicated_milestone(client):
|
|||
response_data = json.loads(response.content.decode("utf-8"))
|
||||
assert response_data["milestones"][0]["name"][0] == "Name duplicated for the project"
|
||||
|
||||
|
||||
def test_invalid_dump_import(client):
|
||||
user = f.UserFactory.create()
|
||||
client.login(user)
|
||||
|
@ -719,6 +745,7 @@ def test_invalid_dump_import(client):
|
|||
response_data = json.loads(response.content.decode("utf-8"))
|
||||
assert response_data["_error_message"] == "Invalid dump format"
|
||||
|
||||
|
||||
def test_valid_dump_import_with_celery_disabled(client, settings):
|
||||
settings.CELERY_ENABLED = False
|
||||
|
||||
|
@ -740,6 +767,7 @@ def test_valid_dump_import_with_celery_disabled(client, settings):
|
|||
assert "id" in response_data
|
||||
assert response_data["name"] == "Valid project"
|
||||
|
||||
|
||||
def test_valid_dump_import_with_celery_enabled(client, settings):
|
||||
settings.CELERY_ENABLED = True
|
||||
|
||||
|
@ -760,6 +788,7 @@ def test_valid_dump_import_with_celery_enabled(client, settings):
|
|||
response_data = json.loads(response.content.decode("utf-8"))
|
||||
assert "import_id" in response_data
|
||||
|
||||
|
||||
def test_dump_import_duplicated_project(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
|
@ -780,6 +809,7 @@ def test_dump_import_duplicated_project(client):
|
|||
assert response_data["name"] == "Test import"
|
||||
assert response_data["slug"] == "{}-test-import".format(user.username)
|
||||
|
||||
|
||||
def test_dump_import_throttling(client, settings):
|
||||
settings.REST_FRAMEWORK["DEFAULT_THROTTLE_RATES"]["import-dump-mode"] = "1/minute"
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ def test_update_issues_order_in_bulk():
|
|||
|
||||
def test_api_create_issues_in_bulk(client):
|
||||
project = f.create_project()
|
||||
membership = f.MembershipFactory(project=project, user=project.owner, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=project.owner, is_owner=True)
|
||||
|
||||
url = reverse("issues-bulk-create")
|
||||
|
||||
|
@ -86,6 +86,7 @@ def test_api_filter_by_text_1(client):
|
|||
assert response.status_code == 200
|
||||
assert number_of_issues == 1
|
||||
|
||||
|
||||
def test_api_filter_by_text_2(client):
|
||||
user = f.UserFactory(is_superuser=True)
|
||||
f.create_issue(owner=user)
|
||||
|
@ -100,6 +101,7 @@ def test_api_filter_by_text_2(client):
|
|||
assert response.status_code == 200
|
||||
assert number_of_issues == 1
|
||||
|
||||
|
||||
def test_api_filter_by_text_3(client):
|
||||
user = f.UserFactory(is_superuser=True)
|
||||
f.create_issue(owner=user)
|
||||
|
@ -114,6 +116,7 @@ def test_api_filter_by_text_3(client):
|
|||
assert response.status_code == 200
|
||||
assert number_of_issues == 2
|
||||
|
||||
|
||||
def test_api_filter_by_text_4(client):
|
||||
user = f.UserFactory(is_superuser=True)
|
||||
f.create_issue(owner=user)
|
||||
|
@ -128,6 +131,7 @@ def test_api_filter_by_text_4(client):
|
|||
assert response.status_code == 200
|
||||
assert number_of_issues == 0
|
||||
|
||||
|
||||
def test_api_filter_by_text_5(client):
|
||||
user = f.UserFactory(is_superuser=True)
|
||||
f.create_issue(owner=user)
|
||||
|
|
|
@ -34,7 +34,7 @@ def test_api_create_bulk_members(client):
|
|||
joseph = f.UserFactory.create()
|
||||
tester = f.RoleFactory(project=project, name="Tester")
|
||||
gamer = f.RoleFactory(project=project, name="Gamer")
|
||||
membership = f.MembershipFactory(project=project, user=project.owner, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=project.owner, is_owner=True)
|
||||
|
||||
url = reverse("memberships-bulk-create")
|
||||
|
||||
|
@ -52,10 +52,11 @@ def test_api_create_bulk_members(client):
|
|||
assert response.data[0]["email"] == john.email
|
||||
assert response.data[1]["email"] == joseph.email
|
||||
|
||||
|
||||
def test_api_create_bulk_members_with_extra_text(client, outbox):
|
||||
project = f.ProjectFactory()
|
||||
tester = f.RoleFactory(project=project, name="Tester")
|
||||
membership = f.MembershipFactory(project=project, user=project.owner, is_owner=True)
|
||||
f.MembershipFactory(project=project, user=project.owner, is_owner=True)
|
||||
url = reverse("memberships-bulk-create")
|
||||
|
||||
invitation_extra_text = "this is a not so random invitation text"
|
||||
|
@ -77,9 +78,10 @@ def test_api_create_bulk_members_with_extra_text(client, outbox):
|
|||
assert message.to == ["john@email.com"]
|
||||
assert "this is a not so random invitation text" in message.body
|
||||
|
||||
|
||||
def test_api_resend_invitation(client, outbox):
|
||||
invitation = f.create_invitation()
|
||||
membership = f.MembershipFactory(project=invitation.project, user=invitation.project.owner, is_owner=True)
|
||||
f.MembershipFactory(project=invitation.project, user=invitation.project.owner, is_owner=True)
|
||||
url = reverse("memberships-resend-invitation", kwargs={"pk": invitation.pk})
|
||||
|
||||
client.login(invitation.project.owner)
|
||||
|
@ -94,7 +96,7 @@ def test_api_invite_existing_user(client, outbox):
|
|||
"Should create the invitation linked to that user"
|
||||
user = f.UserFactory.create()
|
||||
role = f.RoleFactory.create()
|
||||
membership = f.MembershipFactory(project=role.project, user=role.project.owner, is_owner=True)
|
||||
f.MembershipFactory(project=role.project, user=role.project.owner, is_owner=True)
|
||||
|
||||
client.login(role.project.owner)
|
||||
|
||||
|
@ -189,7 +191,7 @@ def test_api_delete_membership(client):
|
|||
def test_api_delete_membership_without_user(client):
|
||||
membership_owner = f.MembershipFactory(is_owner=True)
|
||||
membership_without_user_one = f.MembershipFactory(project=membership_owner.project, user=None)
|
||||
membership_without_user_two = f.MembershipFactory(project=membership_owner.project, user=None)
|
||||
f.MembershipFactory(project=membership_owner.project, user=None)
|
||||
client.login(membership_owner.user)
|
||||
url = reverse("memberships-detail", args=[membership_without_user_one.id])
|
||||
response = client.json.delete(url)
|
||||
|
|
|
@ -16,9 +16,7 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import pytest
|
||||
from unittest.mock import patch, Mock
|
||||
|
||||
from django.apps import apps
|
||||
from django.core.urlresolvers import reverse
|
||||
|
||||
from taiga.base.utils import json
|
||||
|
@ -29,13 +27,14 @@ from .. import factories as f
|
|||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
|
||||
def test_update_milestone_with_userstories_list(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
role = f.RoleFactory.create(project=project)
|
||||
member = f.MembershipFactory.create(project=project, user=user, role=role, is_owner=True)
|
||||
f.MembershipFactory.create(project=project, user=user, role=role, is_owner=True)
|
||||
sprint = f.MilestoneFactory.create(project=project, owner=user)
|
||||
points = f.PointsFactory.create(project=project, value=None)
|
||||
f.PointsFactory.create(project=project, value=None)
|
||||
us = f.UserStoryFactory.create(project=project, owner=user)
|
||||
|
||||
url = reverse("milestones-detail", args=[sprint.pk])
|
||||
|
|
|
@ -15,8 +15,6 @@
|
|||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from functools import partial
|
||||
|
||||
import pytest
|
||||
|
||||
from taiga.projects.userstories.models import UserStory
|
||||
|
|
|
@ -45,7 +45,7 @@ def mail():
|
|||
|
||||
def test_attach_notify_policy_to_project_queryset():
|
||||
project1 = f.ProjectFactory.create()
|
||||
project2 = f.ProjectFactory.create()
|
||||
f.ProjectFactory.create()
|
||||
|
||||
qs = project1.__class__.objects.order_by("id")
|
||||
qs = services.attach_notify_policy_to_project_queryset(project1.owner, qs)
|
||||
|
@ -115,7 +115,7 @@ def test_users_to_notify():
|
|||
policy_model_cls = apps.get_model("notifications", "NotifyPolicy")
|
||||
|
||||
policy1 = policy_model_cls.objects.get(user=member1.user)
|
||||
policy2 = policy_model_cls.objects.get(user=member2.user)
|
||||
policy_model_cls.objects.get(user=member2.user)
|
||||
policy3 = policy_model_cls.objects.get(user=member3.user)
|
||||
|
||||
history = MagicMock()
|
||||
|
@ -197,7 +197,6 @@ def test_send_notifications_using_services_method(settings, mail):
|
|||
services.send_notifications(issue,
|
||||
history=history_delete)
|
||||
|
||||
|
||||
# Userstories
|
||||
us = f.UserStoryFactory.create(project=project, owner=member2.user)
|
||||
take_snapshot(us)
|
||||
|
@ -240,6 +239,7 @@ def test_send_notifications_using_services_method(settings, mail):
|
|||
services.process_sync_notifications()
|
||||
assert len(mail.outbox) == 12
|
||||
|
||||
|
||||
def test_resource_notification_test(client, settings, mail):
|
||||
settings.CHANGE_NOTIFICATIONS_MIN_INTERVAL = 1
|
||||
|
||||
|
@ -247,8 +247,8 @@ def test_resource_notification_test(client, settings, mail):
|
|||
user2 = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user1)
|
||||
role = f.RoleFactory.create(project=project, permissions=["view_issues"])
|
||||
member1 = f.MembershipFactory.create(project=project, user=user1, role=role, is_owner=True)
|
||||
member2 = f.MembershipFactory.create(project=project, user=user2, role=role)
|
||||
f.MembershipFactory.create(project=project, user=user1, role=role, is_owner=True)
|
||||
f.MembershipFactory.create(project=project, user=user2, role=role)
|
||||
issue = f.IssueFactory.create(owner=user2, project=project)
|
||||
|
||||
mock_path = "taiga.projects.issues.api.IssueViewSet.pre_conditions_on_save"
|
||||
|
@ -256,7 +256,7 @@ def test_resource_notification_test(client, settings, mail):
|
|||
|
||||
client.login(user1)
|
||||
|
||||
with patch(mock_path) as m:
|
||||
with patch(mock_path):
|
||||
data = {"subject": "Fooooo", "version": issue.version}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 200
|
||||
|
@ -267,7 +267,7 @@ def test_resource_notification_test(client, settings, mail):
|
|||
assert len(mail.outbox) == 1
|
||||
assert models.HistoryChangeNotification.objects.count() == 0
|
||||
|
||||
with patch(mock_path) as m:
|
||||
with patch(mock_path):
|
||||
response = client.delete(url)
|
||||
assert response.status_code == 204
|
||||
assert len(mail.outbox) == 1
|
||||
|
@ -285,8 +285,8 @@ def test_watchers_assignation_for_issue(client):
|
|||
project2 = f.ProjectFactory.create(owner=user2)
|
||||
role1 = f.RoleFactory.create(project=project1)
|
||||
role2 = f.RoleFactory.create(project=project2)
|
||||
member1 = f.MembershipFactory.create(project=project1, user=user1, role=role1, is_owner=True)
|
||||
member2 = f.MembershipFactory.create(project=project2, user=user2, role=role2)
|
||||
f.MembershipFactory.create(project=project1, user=user1, role=role1, is_owner=True)
|
||||
f.MembershipFactory.create(project=project2, user=user2, role=role2)
|
||||
|
||||
client.login(user1)
|
||||
|
||||
|
@ -298,7 +298,6 @@ def test_watchers_assignation_for_issue(client):
|
|||
response = client.json.patch(url, json.dumps(data))
|
||||
assert response.status_code == 200, response.content
|
||||
|
||||
|
||||
issue = f.create_issue(project=project1, owner=user1)
|
||||
data = {"version": issue.version,
|
||||
"watchers": [user1.pk, user2.pk]}
|
||||
|
@ -338,8 +337,8 @@ def test_watchers_assignation_for_task(client):
|
|||
project2 = f.ProjectFactory.create(owner=user2)
|
||||
role1 = f.RoleFactory.create(project=project1)
|
||||
role2 = f.RoleFactory.create(project=project2)
|
||||
member1 = f.MembershipFactory.create(project=project1, user=user1, role=role1, is_owner=True)
|
||||
member2 = f.MembershipFactory.create(project=project2, user=user2, role=role2)
|
||||
f.MembershipFactory.create(project=project1, user=user1, role=role1, is_owner=True)
|
||||
f.MembershipFactory.create(project=project2, user=user2, role=role2)
|
||||
|
||||
client.login(user1)
|
||||
|
||||
|
@ -351,7 +350,6 @@ def test_watchers_assignation_for_task(client):
|
|||
response = client.json.patch(url, json.dumps(data))
|
||||
assert response.status_code == 200, response.content
|
||||
|
||||
|
||||
task = f.create_task(project=project1, owner=user1)
|
||||
data = {"version": task.version,
|
||||
"watchers": [user1.pk, user2.pk]}
|
||||
|
@ -391,8 +389,8 @@ def test_watchers_assignation_for_us(client):
|
|||
project2 = f.ProjectFactory.create(owner=user2)
|
||||
role1 = f.RoleFactory.create(project=project1)
|
||||
role2 = f.RoleFactory.create(project=project2)
|
||||
member1 = f.MembershipFactory.create(project=project1, user=user1, role=role1, is_owner=True)
|
||||
member2 = f.MembershipFactory.create(project=project2, user=user2, role=role2)
|
||||
f.MembershipFactory.create(project=project1, user=user1, role=role1, is_owner=True)
|
||||
f.MembershipFactory.create(project=project2, user=user2, role=role2)
|
||||
|
||||
client.login(user1)
|
||||
|
||||
|
@ -404,7 +402,6 @@ def test_watchers_assignation_for_us(client):
|
|||
response = client.json.patch(url, json.dumps(data))
|
||||
assert response.status_code == 200
|
||||
|
||||
|
||||
us = f.create_userstory(project=project1, owner=user1)
|
||||
data = {"version": us.version,
|
||||
"watchers": [user1.pk, user2.pk]}
|
||||
|
@ -440,7 +437,6 @@ def test_watchers_assignation_for_us(client):
|
|||
def test_retrieve_notify_policies_by_anonymous_user(client):
|
||||
project = f.ProjectFactory.create()
|
||||
|
||||
policy_model_cls = apps.get_model("notifications", "NotifyPolicy")
|
||||
policy = services.get_notify_policy(project, project.owner)
|
||||
|
||||
url = reverse("notifications-detail", args=[policy.pk])
|
||||
|
|
|
@ -20,10 +20,6 @@ from unittest.mock import patch
|
|||
from django.core.urlresolvers import reverse
|
||||
|
||||
from taiga.base.utils import json
|
||||
from taiga.projects.issues.models import Issue
|
||||
from taiga.projects.wiki.models import WikiPage
|
||||
from taiga.projects.userstories.models import UserStory
|
||||
from taiga.projects.tasks.models import Task
|
||||
|
||||
from .. import factories as f
|
||||
|
||||
|
@ -33,7 +29,7 @@ pytestmark = pytest.mark.django_db
|
|||
def test_valid_us_creation(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
|
||||
client.login(user)
|
||||
|
||||
|
@ -50,11 +46,11 @@ def test_valid_us_creation(client):
|
|||
def test_invalid_concurrent_save_for_issue(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
client.login(user)
|
||||
|
||||
mock_path = "taiga.projects.issues.api.IssueViewSet.pre_conditions_on_save"
|
||||
with patch(mock_path) as m:
|
||||
with patch(mock_path):
|
||||
url = reverse("issues-list")
|
||||
data = {"subject": "test",
|
||||
"project": project.id,
|
||||
|
@ -67,11 +63,11 @@ def test_invalid_concurrent_save_for_issue(client):
|
|||
|
||||
issue_id = json.loads(response.content)["id"]
|
||||
url = reverse("issues-detail", args=(issue_id,))
|
||||
data = {"version":1, "subject": "test 1"}
|
||||
data = {"version": 1, "subject": "test 1"}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 200
|
||||
|
||||
data = {"version":1, "subject": "test 2"}
|
||||
data = {"version": 1, "subject": "test 2"}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 400
|
||||
|
||||
|
@ -79,11 +75,11 @@ def test_invalid_concurrent_save_for_issue(client):
|
|||
def test_valid_concurrent_save_for_issue_different_versions(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
client.login(user)
|
||||
|
||||
mock_path = "taiga.projects.issues.api.IssueViewSet.pre_conditions_on_save"
|
||||
with patch(mock_path) as m:
|
||||
with patch(mock_path):
|
||||
url = reverse("issues-list")
|
||||
data = {"subject": "test",
|
||||
"project": project.id,
|
||||
|
@ -96,11 +92,11 @@ def test_valid_concurrent_save_for_issue_different_versions(client):
|
|||
|
||||
issue_id = json.loads(response.content)["id"]
|
||||
url = reverse("issues-detail", args=(issue_id,))
|
||||
data = {"version":1, "subject": "test 1"}
|
||||
data = {"version": 1, "subject": "test 1"}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 200
|
||||
|
||||
data = {"version":2, "subject": "test 2"}
|
||||
data = {"version": 2, "subject": "test 2"}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 200
|
||||
|
||||
|
@ -108,11 +104,11 @@ def test_valid_concurrent_save_for_issue_different_versions(client):
|
|||
def test_valid_concurrent_save_for_issue_different_fields(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
client.login(user)
|
||||
|
||||
mock_path = "taiga.projects.issues.api.IssueViewSet.pre_conditions_on_save"
|
||||
with patch(mock_path) as m:
|
||||
with patch(mock_path):
|
||||
url = reverse("issues-list")
|
||||
data = {"subject": "test",
|
||||
"project": project.id,
|
||||
|
@ -125,11 +121,11 @@ def test_valid_concurrent_save_for_issue_different_fields(client):
|
|||
|
||||
issue_id = json.loads(response.content)["id"]
|
||||
url = reverse("issues-detail", args=(issue_id,))
|
||||
data = {"version":1, "subject": "test 1"}
|
||||
data = {"version": 1, "subject": "test 1"}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 200
|
||||
|
||||
data = {"version":1, "description": "test 2"}
|
||||
data = {"version": 1, "description": "test 2"}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 200
|
||||
|
||||
|
@ -137,11 +133,11 @@ def test_valid_concurrent_save_for_issue_different_fields(client):
|
|||
def test_invalid_concurrent_save_for_wiki_page(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
client.login(user)
|
||||
|
||||
mock_path = "taiga.projects.wiki.api.WikiViewSet.pre_conditions_on_save"
|
||||
with patch(mock_path) as m:
|
||||
with patch(mock_path):
|
||||
url = reverse("wiki-list")
|
||||
data = {"project": project.id, "slug": "test"}
|
||||
response = client.json.post(url, json.dumps(data))
|
||||
|
@ -149,11 +145,11 @@ def test_invalid_concurrent_save_for_wiki_page(client):
|
|||
|
||||
wiki_id = json.loads(response.content)["id"]
|
||||
url = reverse("wiki-detail", args=(wiki_id,))
|
||||
data = {"version":1, "content": "test 1"}
|
||||
data = {"version": 1, "content": "test 1"}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 200
|
||||
|
||||
data = {"version":1, "content": "test 2"}
|
||||
data = {"version": 1, "content": "test 2"}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 400
|
||||
|
||||
|
@ -161,11 +157,11 @@ def test_invalid_concurrent_save_for_wiki_page(client):
|
|||
def test_valid_concurrent_save_for_wiki_page_different_versions(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
client.login(user)
|
||||
|
||||
mock_path = "taiga.projects.wiki.api.WikiViewSet.pre_conditions_on_save"
|
||||
with patch(mock_path) as m:
|
||||
with patch(mock_path):
|
||||
url = reverse("wiki-list")
|
||||
data = {"project": project.id, "slug": "test"}
|
||||
response = client.json.post(url, json.dumps(data))
|
||||
|
@ -173,11 +169,11 @@ def test_valid_concurrent_save_for_wiki_page_different_versions(client):
|
|||
|
||||
wiki_id = json.loads(response.content)["id"]
|
||||
url = reverse("wiki-detail", args=(wiki_id,))
|
||||
data = {"version":1, "content": "test 1"}
|
||||
data = {"version": 1, "content": "test 1"}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 200
|
||||
|
||||
data = {"version":2, "content": "test 2"}
|
||||
data = {"version": 2, "content": "test 2"}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 200
|
||||
|
||||
|
@ -185,12 +181,12 @@ def test_valid_concurrent_save_for_wiki_page_different_versions(client):
|
|||
def test_invalid_concurrent_save_for_us(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
userstory = f.UserStoryFactory.create(version=10, project=project)
|
||||
f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
f.UserStoryFactory.create(version=10, project=project)
|
||||
client.login(user)
|
||||
|
||||
mock_path = "taiga.projects.userstories.api.UserStoryViewSet.pre_conditions_on_save"
|
||||
with patch(mock_path) as m:
|
||||
with patch(mock_path):
|
||||
url = reverse("userstories-list")
|
||||
data = {"subject": "test",
|
||||
"project": project.id,
|
||||
|
@ -200,11 +196,11 @@ def test_invalid_concurrent_save_for_us(client):
|
|||
|
||||
userstory_id = json.loads(response.content)["id"]
|
||||
url = reverse("userstories-detail", args=(userstory_id,))
|
||||
data = {"version":1, "subject": "test 1"}
|
||||
data = {"version": 1, "subject": "test 1"}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 200
|
||||
|
||||
data = {"version":1, "subject": "test 2"}
|
||||
data = {"version": 1, "subject": "test 2"}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 400
|
||||
|
||||
|
@ -212,11 +208,11 @@ def test_invalid_concurrent_save_for_us(client):
|
|||
def test_valid_concurrent_save_for_us_different_versions(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
client.login(user)
|
||||
|
||||
mock_path = "taiga.projects.userstories.api.UserStoryViewSet.pre_conditions_on_save"
|
||||
with patch(mock_path) as m:
|
||||
with patch(mock_path):
|
||||
url = reverse("userstories-list")
|
||||
data = {"subject": "test",
|
||||
"project": project.id,
|
||||
|
@ -226,11 +222,11 @@ def test_valid_concurrent_save_for_us_different_versions(client):
|
|||
|
||||
userstory_id = json.loads(response.content)["id"]
|
||||
url = reverse("userstories-detail", args=(userstory_id,))
|
||||
data = {"version":1, "subject": "test 1"}
|
||||
data = {"version": 1, "subject": "test 1"}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 200
|
||||
|
||||
data = {"version":2, "subject": "test 2"}
|
||||
data = {"version": 2, "subject": "test 2"}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 200
|
||||
|
||||
|
@ -238,11 +234,11 @@ def test_valid_concurrent_save_for_us_different_versions(client):
|
|||
def test_valid_concurrent_save_for_us_different_fields(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
client.login(user)
|
||||
|
||||
mock_path = "taiga.projects.userstories.api.UserStoryViewSet.pre_conditions_on_save"
|
||||
with patch(mock_path) as m:
|
||||
with patch(mock_path):
|
||||
url = reverse("userstories-list")
|
||||
data = {"subject": "test",
|
||||
"project": project.id,
|
||||
|
@ -252,11 +248,11 @@ def test_valid_concurrent_save_for_us_different_fields(client):
|
|||
|
||||
userstory_id = json.loads(response.content)["id"]
|
||||
url = reverse("userstories-detail", args=(userstory_id,))
|
||||
data = {"version":1, "subject": "test 1"}
|
||||
data = {"version": 1, "subject": "test 1"}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 200
|
||||
|
||||
data = {"version":1, "description": "test 2"}
|
||||
data = {"version": 1, "description": "test 2"}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 200
|
||||
|
||||
|
@ -264,11 +260,11 @@ def test_valid_concurrent_save_for_us_different_fields(client):
|
|||
def test_invalid_concurrent_save_for_task(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
client.login(user)
|
||||
|
||||
mock_path = "taiga.projects.tasks.api.TaskViewSet.pre_conditions_on_save"
|
||||
with patch(mock_path) as m:
|
||||
with patch(mock_path):
|
||||
url = reverse("tasks-list")
|
||||
data = {"subject": "test",
|
||||
"project": project.id,
|
||||
|
@ -278,11 +274,11 @@ def test_invalid_concurrent_save_for_task(client):
|
|||
|
||||
task_id = json.loads(response.content)["id"]
|
||||
url = reverse("tasks-detail", args=(task_id,))
|
||||
data = {"version":1, "subject": "test 1"}
|
||||
data = {"version": 1, "subject": "test 1"}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 200
|
||||
|
||||
data = {"version":1, "subject": "test 2"}
|
||||
data = {"version": 1, "subject": "test 2"}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 400
|
||||
|
||||
|
@ -290,11 +286,11 @@ def test_invalid_concurrent_save_for_task(client):
|
|||
def test_valid_concurrent_save_for_task_different_versions(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
client.login(user)
|
||||
|
||||
mock_path = "taiga.projects.tasks.api.TaskViewSet.pre_conditions_on_save"
|
||||
with patch(mock_path) as m:
|
||||
with patch(mock_path):
|
||||
url = reverse("tasks-list")
|
||||
data = {"subject": "test",
|
||||
"project": project.id,
|
||||
|
@ -304,11 +300,11 @@ def test_valid_concurrent_save_for_task_different_versions(client):
|
|||
|
||||
task_id = json.loads(response.content)["id"]
|
||||
url = reverse("tasks-detail", args=(task_id,))
|
||||
data = {"version":1, "subject": "test 1"}
|
||||
data = {"version": 1, "subject": "test 1"}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 200
|
||||
|
||||
data = {"version":2, "subject": "test 2"}
|
||||
data = {"version": 2, "subject": "test 2"}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 200
|
||||
|
||||
|
@ -316,11 +312,11 @@ def test_valid_concurrent_save_for_task_different_versions(client):
|
|||
def test_valid_concurrent_save_for_task_different_fields(client):
|
||||
user = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user)
|
||||
membership = f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
f.MembershipFactory.create(project=project, user=user, is_owner=True)
|
||||
client.login(user)
|
||||
|
||||
mock_path = "taiga.projects.tasks.api.TaskViewSet.pre_conditions_on_save"
|
||||
with patch(mock_path) as m:
|
||||
with patch(mock_path):
|
||||
url = reverse("tasks-list")
|
||||
data = {"subject": "test",
|
||||
"project": project.id,
|
||||
|
@ -330,10 +326,10 @@ def test_valid_concurrent_save_for_task_different_fields(client):
|
|||
|
||||
task_id = json.loads(response.content)["id"]
|
||||
url = reverse("tasks-detail", args=(task_id,))
|
||||
data = {"version":1, "subject": "test 1"}
|
||||
data = {"version": 1, "subject": "test 1"}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 200
|
||||
|
||||
data = {"version":1, "description": "test 2"}
|
||||
data = {"version": 1, "description": "test 2"}
|
||||
response = client.patch(url, json.dumps(data), content_type="application/json")
|
||||
assert response.status_code == 200
|
||||
|
|
|
@ -88,16 +88,16 @@ def test_member_get_user_project_permissions():
|
|||
def test_anon_user_has_perm():
|
||||
project = factories.ProjectFactory()
|
||||
project.anon_permissions = ["test"]
|
||||
assert service.user_has_perm(AnonymousUser(), "test", project) == True
|
||||
assert service.user_has_perm(AnonymousUser(), "fail", project) == False
|
||||
assert service.user_has_perm(AnonymousUser(), "test", project) is True
|
||||
assert service.user_has_perm(AnonymousUser(), "fail", project) is False
|
||||
|
||||
|
||||
def test_authenticated_user_has_perm_on_project():
|
||||
user1 = factories.UserFactory()
|
||||
project = factories.ProjectFactory()
|
||||
project.public_permissions = ["test"]
|
||||
assert service.user_has_perm(user1, "test", project) == True
|
||||
assert service.user_has_perm(user1, "fail", project) == False
|
||||
assert service.user_has_perm(user1, "test", project) is True
|
||||
assert service.user_has_perm(user1, "fail", project) is False
|
||||
|
||||
|
||||
def test_authenticated_user_has_perm_on_project_related_object():
|
||||
|
@ -106,10 +106,10 @@ def test_authenticated_user_has_perm_on_project_related_object():
|
|||
project.public_permissions = ["test"]
|
||||
us = factories.UserStoryFactory(project=project)
|
||||
|
||||
assert service.user_has_perm(user1, "test", us) == True
|
||||
assert service.user_has_perm(user1, "fail", us) == False
|
||||
assert service.user_has_perm(user1, "test", us) is True
|
||||
assert service.user_has_perm(user1, "fail", us) is False
|
||||
|
||||
|
||||
def test_authenticated_user_has_perm_on_invalid_object():
|
||||
user1 = factories.UserFactory()
|
||||
assert service.user_has_perm(user1, "test", user1) == False
|
||||
assert service.user_has_perm(user1, "test", user1) is False
|
||||
|
|
|
@ -118,7 +118,7 @@ def test_points_name_duplicated(client):
|
|||
|
||||
def test_update_points_when_not_null_values_for_points(client):
|
||||
points = f.PointsFactory(name="?", value="6")
|
||||
role = f.RoleFactory(project=points.project, computable=True)
|
||||
f.RoleFactory(project=points.project, computable=True)
|
||||
assert points.project.points.filter(value__isnull=True).count() == 0
|
||||
points.project.update_role_points()
|
||||
assert points.project.points.filter(value__isnull=True).count() == 1
|
||||
|
@ -130,25 +130,25 @@ def test_get_closed_bugs_per_member_stats():
|
|||
membership_2 = f.MembershipFactory(project=project)
|
||||
issue_closed_status = f.IssueStatusFactory(is_closed=True, project=project)
|
||||
issue_open_status = f.IssueStatusFactory(is_closed=False, project=project)
|
||||
issue_closed = f.IssueFactory(project=project,
|
||||
f.IssueFactory(project=project,
|
||||
status=issue_closed_status,
|
||||
owner=membership_1.user,
|
||||
assigned_to=membership_1.user)
|
||||
issue_open = f.IssueFactory(project=project,
|
||||
f.IssueFactory(project=project,
|
||||
status=issue_open_status,
|
||||
owner=membership_2.user,
|
||||
assigned_to=membership_2.user)
|
||||
task_closed_status = f.TaskStatusFactory(is_closed=True, project=project)
|
||||
task_open_status = f.TaskStatusFactory(is_closed=False, project=project)
|
||||
task_closed = f.TaskFactory(project=project,
|
||||
f.TaskFactory(project=project,
|
||||
status=task_closed_status,
|
||||
owner=membership_1.user,
|
||||
assigned_to=membership_1.user)
|
||||
task_open = f.TaskFactory(project=project,
|
||||
f.TaskFactory(project=project,
|
||||
status=task_open_status,
|
||||
owner=membership_2.user,
|
||||
assigned_to=membership_2.user)
|
||||
task_iocaine = f.TaskFactory(project=project,
|
||||
f.TaskFactory(project=project,
|
||||
status=task_open_status,
|
||||
owner=membership_2.user,
|
||||
assigned_to=membership_2.user,
|
||||
|
@ -156,7 +156,7 @@ def test_get_closed_bugs_per_member_stats():
|
|||
|
||||
wiki_page = f.WikiPageFactory.create(project=project, owner=membership_1.user)
|
||||
take_snapshot(wiki_page, user=membership_1.user)
|
||||
wiki_page.content="Frontend, future"
|
||||
wiki_page.content = "Frontend, future"
|
||||
wiki_page.save()
|
||||
take_snapshot(wiki_page, user=membership_1.user)
|
||||
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
|
||||
import pytest
|
||||
|
||||
from django.core import management
|
||||
from django.conf import settings
|
||||
|
||||
from .. import factories
|
||||
|
||||
|
||||
|
|
|
@ -16,31 +16,27 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import pytest
|
||||
from unittest.mock import patch, Mock
|
||||
|
||||
from django.apps import apps
|
||||
from django.core.urlresolvers import reverse
|
||||
|
||||
from taiga.base.utils import json
|
||||
|
||||
from taiga.users.models import Role
|
||||
from taiga.projects.models import Membership
|
||||
from taiga.projects.models import Project
|
||||
from taiga.projects.userstories.serializers import UserStorySerializer
|
||||
|
||||
from .. import factories as f
|
||||
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
|
||||
def test_destroy_role_and_reassign_members(client):
|
||||
user1 = f.UserFactory.create()
|
||||
user2 = f.UserFactory.create()
|
||||
project = f.ProjectFactory.create(owner=user1)
|
||||
role1 = f.RoleFactory.create(project=project)
|
||||
role2 = f.RoleFactory.create(project=project)
|
||||
member = f.MembershipFactory.create(project=project, user=user1, role=role1, is_owner=True)
|
||||
member = f.MembershipFactory.create(project=project, user=user2, role=role2)
|
||||
f.MembershipFactory.create(project=project, user=user1, role=role1, is_owner=True)
|
||||
f.MembershipFactory.create(project=project, user=user2, role=role2)
|
||||
|
||||
url = reverse("roles-detail", args=[role2.pk]) + "?moveTo={}".format(role1.pk)
|
||||
|
||||
|
@ -58,6 +54,7 @@ def test_destroy_role_and_reassign_members(client):
|
|||
qs = Membership.objects.filter(project=project, role_id=role1.pk)
|
||||
assert qs.count() == 2
|
||||
|
||||
|
||||
def test_destroy_role_and_reassign_members_with_deleted_project(client):
|
||||
"""
|
||||
Regression test, that fixes some 500 errors on production
|
||||
|
@ -68,8 +65,8 @@ def test_destroy_role_and_reassign_members_with_deleted_project(client):
|
|||
project = f.ProjectFactory.create(owner=user1)
|
||||
role1 = f.RoleFactory.create(project=project)
|
||||
role2 = f.RoleFactory.create(project=project)
|
||||
member = f.MembershipFactory.create(project=project, user=user1, role=role1)
|
||||
member = f.MembershipFactory.create(project=project, user=user2, role=role2)
|
||||
f.MembershipFactory.create(project=project, user=user1, role=role1)
|
||||
f.MembershipFactory.create(project=project, user=user2, role=role2)
|
||||
|
||||
Project.objects.filter(pk=project.id).delete()
|
||||
|
||||
|
|
|
@ -70,7 +70,6 @@ def searches_initial_data():
|
|||
m.us2 = m.role_points2.user_story
|
||||
m.us3 = m.role_points3.user_story
|
||||
|
||||
|
||||
m.tsk1 = f.TaskFactory.create(project=m.project2)
|
||||
m.tsk2 = f.TaskFactory.create(project=m.project1)
|
||||
m.tsk3 = f.TaskFactory.create(project=m.project1, subject="Back to the future")
|
||||
|
@ -139,4 +138,3 @@ def test_search_text_query_with_an_invalid_project_id(client, searches_initial_d
|
|||
|
||||
response = client.get(reverse("search-list"), {"project": "new", "text": "future"})
|
||||
assert response.status_code == 404
|
||||
|
||||
|
|
|
@ -1,8 +1,5 @@
|
|||
import pytest
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.urlresolvers import reverse
|
||||
|
||||
from .. import factories as f
|
||||
from tests.utils import disconnect_signals, reconnect_signals
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ import_rate_path = "taiga.export_import.throttling.ImportModeRateThrottle.get_ra
|
|||
|
||||
|
||||
def test_anonimous_throttling_policy(client, settings):
|
||||
project = f.create_project()
|
||||
f.create_project()
|
||||
url = reverse("projects-list")
|
||||
|
||||
with mock.patch(anon_rate_path) as anon_rate, \
|
||||
|
@ -54,7 +54,7 @@ def test_anonimous_throttling_policy(client, settings):
|
|||
|
||||
def test_user_throttling_policy(client, settings):
|
||||
project = f.create_project()
|
||||
membership = f.MembershipFactory.create(project=project, user=project.owner, is_owner=True)
|
||||
f.MembershipFactory.create(project=project, user=project.owner, is_owner=True)
|
||||
url = reverse("projects-detail", kwargs={"pk": project.pk})
|
||||
|
||||
client.login(project.owner)
|
||||
|
@ -83,7 +83,7 @@ def test_user_throttling_policy(client, settings):
|
|||
|
||||
def test_import_mode_throttling_policy(client, settings):
|
||||
project = f.create_project()
|
||||
membership = f.MembershipFactory.create(project=project, user=project.owner, is_owner=True)
|
||||
f.MembershipFactory.create(project=project, user=project.owner, is_owner=True)
|
||||
project.default_issue_type = f.IssueTypeFactory.create(project=project)
|
||||
project.default_issue_status = f.IssueStatusFactory.create(project=project)
|
||||
project.default_severity = f.SeverityFactory.create(project=project)
|
||||
|
|
|
@ -19,7 +19,6 @@ import pytest
|
|||
|
||||
from .. import factories
|
||||
|
||||
from taiga.base.utils import json
|
||||
from taiga.timeline import service
|
||||
from taiga.timeline.models import Timeline
|
||||
|
||||
|
@ -39,6 +38,7 @@ def test_add_to_object_timeline():
|
|||
assert Timeline.objects.filter(object_id=user1.id).count() == 1
|
||||
assert Timeline.objects.order_by("-id")[0].data == id(user2)
|
||||
|
||||
|
||||
def test_get_timeline():
|
||||
Timeline.objects.all().delete()
|
||||
|
||||
|
|
|
@ -74,7 +74,7 @@ def test_update_user_with_valid_email(client):
|
|||
|
||||
assert response.status_code == 200
|
||||
user = models.User.objects.get(pk=user.id)
|
||||
assert user.email_token != None
|
||||
assert user.email_token is not None
|
||||
assert user.new_email == "new@email.com"
|
||||
|
||||
|
||||
|
@ -88,8 +88,8 @@ def test_validate_requested_email_change(client):
|
|||
|
||||
assert response.status_code == 204
|
||||
user = models.User.objects.get(pk=user.id)
|
||||
assert user.email_token == None
|
||||
assert user.new_email == None
|
||||
assert user.email_token is None
|
||||
assert user.new_email is None
|
||||
assert user.email == "new@email.com"
|
||||
|
||||
|
||||
|
|
|
@ -125,11 +125,11 @@ def test_update_userstory_points(client):
|
|||
role1 = f.RoleFactory.create(project=project)
|
||||
role2 = f.RoleFactory.create(project=project)
|
||||
|
||||
member = f.MembershipFactory.create(project=project, user=user1, role=role1, is_owner=True)
|
||||
member = f.MembershipFactory.create(project=project, user=user2, role=role2)
|
||||
f.MembershipFactory.create(project=project, user=user1, role=role1, is_owner=True)
|
||||
f.MembershipFactory.create(project=project, user=user2, role=role2)
|
||||
|
||||
points1 = f.PointsFactory.create(project=project, value=None)
|
||||
points2 = f.PointsFactory.create(project=project, value=1)
|
||||
f.PointsFactory.create(project=project, value=None)
|
||||
f.PointsFactory.create(project=project, value=1)
|
||||
points3 = f.PointsFactory.create(project=project, value=2)
|
||||
|
||||
us = f.UserStoryFactory.create(project=project, owner=user1)
|
||||
|
@ -143,7 +143,7 @@ def test_update_userstory_points(client):
|
|||
data = {}
|
||||
data["version"] = usdata["version"]
|
||||
data["points"] = copy.copy(usdata["points"])
|
||||
data["points"].update({'2000':points3.pk})
|
||||
data["points"].update({'2000': points3.pk})
|
||||
|
||||
response = client.json.patch(url, json.dumps(data))
|
||||
assert response.status_code == 200
|
||||
|
@ -153,8 +153,7 @@ def test_update_userstory_points(client):
|
|||
data = {}
|
||||
data["version"] = usdata["version"] + 1
|
||||
data["points"] = copy.copy(usdata["points"])
|
||||
data["points"].update({str(role1.pk):points3.pk})
|
||||
|
||||
data["points"].update({str(role1.pk): points3.pk})
|
||||
|
||||
response = client.json.patch(url, json.dumps(data))
|
||||
us = models.UserStory.objects.get(pk=us.pk)
|
||||
|
@ -163,6 +162,7 @@ def test_update_userstory_points(client):
|
|||
assert response.data["points"] == usdatanew['points']
|
||||
assert response.data["points"] != usdata['points']
|
||||
|
||||
|
||||
def test_update_userstory_rolepoints_on_add_new_role(client):
|
||||
# This test is explicitly without assertions. It simple should
|
||||
# works without raising any exception.
|
||||
|
@ -173,16 +173,16 @@ def test_update_userstory_rolepoints_on_add_new_role(client):
|
|||
|
||||
role1 = f.RoleFactory.create(project=project)
|
||||
|
||||
member1 = f.MembershipFactory.create(project=project, user=user1, role=role1)
|
||||
f.MembershipFactory.create(project=project, user=user1, role=role1)
|
||||
|
||||
points1 = f.PointsFactory.create(project=project, value=2)
|
||||
f.PointsFactory.create(project=project, value=2)
|
||||
|
||||
us = f.UserStoryFactory.create(project=project, owner=user1)
|
||||
# url = reverse("userstories-detail", args=[us.pk])
|
||||
# client.login(user1)
|
||||
|
||||
role2 = f.RoleFactory.create(project=project, computable=True)
|
||||
member2 = f.MembershipFactory.create(project=project, user=user2, role=role2)
|
||||
f.MembershipFactory.create(project=project, user=user2, role=role2)
|
||||
us.save()
|
||||
|
||||
|
||||
|
@ -210,6 +210,7 @@ def test_archived_filter(client):
|
|||
response = client.get(url, data)
|
||||
assert len(json.loads(response.content)) == 1
|
||||
|
||||
|
||||
def test_get_total_points(client):
|
||||
project = f.ProjectFactory.create()
|
||||
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
|
||||
import pytest
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
|
||||
from .. import factories as f
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
from django.db import models
|
||||
from taiga.base import tags
|
||||
|
||||
|
||||
class TaggedModel(tags.TaggedMixin, models.Model):
|
||||
class Meta:
|
||||
app_label = "tests"
|
||||
|
||||
|
|
|
@ -14,12 +14,9 @@
|
|||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from taiga.base.api.permissions import (PermissionComponent,
|
||||
AllowAny as TruePermissionComponent,
|
||||
from taiga.base.api.permissions import (AllowAny as TruePermissionComponent,
|
||||
DenyAll as FalsePermissionComponent)
|
||||
|
||||
import pytest
|
||||
|
||||
|
||||
def test_permission_component_composition():
|
||||
assert (TruePermissionComponent() | TruePermissionComponent()).check_permissions(None, None, None)
|
||||
|
|
|
@ -19,6 +19,7 @@ from unittest import mock
|
|||
from taiga import celery
|
||||
from taiga.deferred import defer, call_async, apply_async
|
||||
|
||||
|
||||
def test_defer():
|
||||
# settings.CELERY_ALWAYS_EAGER = True
|
||||
name = "task name"
|
||||
|
|
|
@ -101,18 +101,22 @@ def test_render_wikilink():
|
|||
expected_result = "<p><a class=\"reference wiki\" href=\"http://localhost:9001/project/test/wiki/test\" title=\"test\">test</a></p>"
|
||||
assert render(dummy_project, "[[test]]") == expected_result
|
||||
|
||||
|
||||
def test_render_wikilink_1():
|
||||
expected_result = "<p><a class=\"reference wiki\" href=\"http://localhost:9001/project/test/wiki/test\" title=\"test\">test</a></p>"
|
||||
assert render(dummy_project, "[[test]]") == expected_result
|
||||
|
||||
|
||||
def test_render_wikilink_2():
|
||||
expected_result = "<p><a class=\"reference wiki\" href=\"http://localhost:9001/project/test/wiki/test-page\" title=\"test page\">test page</a></p>"
|
||||
assert render(dummy_project, "[[test page]]") == expected_result
|
||||
|
||||
|
||||
def test_render_wikilink_3():
|
||||
expected_result = "<p><a class=\"reference wiki\" href=\"http://localhost:9001/project/test/wiki/testpage\" title=\"TestPage\">TestPage</a></p>"
|
||||
assert render(dummy_project, "[[TestPage]]") == expected_result
|
||||
|
||||
|
||||
def test_render_wikilink_with_custom_title():
|
||||
expected_result = "<p><a class=\"reference wiki\" href=\"http://localhost:9001/project/test/wiki/test\" title=\"custom\">custom</a></p>"
|
||||
assert render(dummy_project, "[[test|custom]]") == expected_result
|
||||
|
|
|
@ -17,11 +17,9 @@
|
|||
from taiga.permissions import service
|
||||
from taiga.users.models import Role
|
||||
|
||||
import pytest
|
||||
|
||||
|
||||
def test_role_has_perm():
|
||||
role = Role()
|
||||
role.permissions = ["test"]
|
||||
assert service.role_has_perm(role, "test")
|
||||
assert service.role_has_perm(role, "false") == False
|
||||
assert service.role_has_perm(role, "false") is False
|
||||
|
|
|
@ -43,6 +43,7 @@ def test_project_slug_with_special_chars():
|
|||
|
||||
assert project.slug == "test-han-zi"
|
||||
|
||||
|
||||
def test_project_with_existing_name_slug_with_special_chars():
|
||||
user = User.objects.create(username="test")
|
||||
Project.objects.create(name="漢字", description="漢字", owner=user)
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from unittest.mock import patch, MagicMock, call
|
||||
from unittest.mock import patch, call
|
||||
|
||||
from django.core.exceptions import ValidationError
|
||||
|
||||
|
@ -41,6 +41,7 @@ def test_push_to_timeline_many_objects():
|
|||
with pytest.raises(Exception):
|
||||
service.push_to_timeline(None, project, "test")
|
||||
|
||||
|
||||
def test_add_to_objects_timeline():
|
||||
with patch("taiga.timeline.service._add_to_object_timeline") as mock:
|
||||
users = [User(), User(), User()]
|
||||
|
@ -78,7 +79,7 @@ def test_get_impl_key_from_typename():
|
|||
def test_get_class_implementation():
|
||||
service._timeline_impl_map["timeline.timeline.test"] = "test"
|
||||
assert service._get_class_implementation(Timeline, "test") == "test"
|
||||
assert service._get_class_implementation(Timeline, "other") == None
|
||||
assert service._get_class_implementation(Timeline, "other") is None
|
||||
|
||||
|
||||
def test_register_timeline_implementation():
|
||||
|
|
|
@ -25,6 +25,7 @@ from taiga.auth.tokens import get_token_for_user, get_user_for_token
|
|||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
|
||||
def test_valid_token():
|
||||
user = f.UserFactory.create(email="old@email.com")
|
||||
token = get_token_for_user(user, "testing_scope")
|
||||
|
@ -34,19 +35,19 @@ def test_valid_token():
|
|||
|
||||
@pytest.mark.xfail(raises=exc.NotAuthenticated)
|
||||
def test_invalid_token():
|
||||
user = f.UserFactory.create(email="old@email.com")
|
||||
user_from_token = get_user_for_token("testing_invalid_token", "testing_scope")
|
||||
f.UserFactory.create(email="old@email.com")
|
||||
get_user_for_token("testing_invalid_token", "testing_scope")
|
||||
|
||||
|
||||
@pytest.mark.xfail(raises=exc.NotAuthenticated)
|
||||
def test_invalid_token_expiration():
|
||||
user = f.UserFactory.create(email="old@email.com")
|
||||
token = get_token_for_user(user, "testing_scope")
|
||||
user_from_token = get_user_for_token(token, "testing_scope", max_age=1)
|
||||
get_user_for_token(token, "testing_scope", max_age=1)
|
||||
|
||||
|
||||
@pytest.mark.xfail(raises=exc.NotAuthenticated)
|
||||
def test_invalid_token_scope():
|
||||
user = f.UserFactory.create(email="old@email.com")
|
||||
token = get_token_for_user(user, "testing_scope")
|
||||
user_from_token = get_user_for_token(token, "testing_invalid_scope")
|
||||
get_user_for_token(token, "testing_invalid_scope")
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
import functools
|
||||
|
||||
from django.db.models import signals
|
||||
from taiga.base.utils import json
|
||||
|
@ -60,6 +59,7 @@ def _helper_test_http_method_responses(client, method, url, data, users, after_e
|
|||
after_each_request()
|
||||
return results
|
||||
|
||||
|
||||
def helper_test_http_method(client, method, url, data, users, after_each_request=None,
|
||||
content_type="application/json"):
|
||||
responses = _helper_test_http_method_responses(client, method, url, data, users, after_each_request,
|
||||
|
@ -71,6 +71,7 @@ def helper_test_http_method_and_count(client, method, url, data, users, after_ea
|
|||
responses = _helper_test_http_method_responses(client, method, url, data, users, after_each_request)
|
||||
return list(map(lambda r: (r.status_code, len(json.loads(r.content.decode('utf-8')))), responses))
|
||||
|
||||
|
||||
def helper_test_http_method_and_keys(client, method, url, data, users, after_each_request=None):
|
||||
responses = _helper_test_http_method_responses(client, method, url, data, users, after_each_request)
|
||||
return list(map(lambda r: (r.status_code, set(json.loads(r.content.decode('utf-8')).keys())), responses))
|
||||
|
|
Loading…
Reference in New Issue