1
|
|
|
# -*- coding: utf-8 -*- |
2
|
|
|
|
3
|
|
|
from http import HTTPStatus |
4
|
|
|
|
5
|
|
|
from django.urls import reverse |
6
|
|
|
from django.contrib.auth.models import Permission |
7
|
|
|
from django.utils.translation import ugettext_lazy as _ |
8
|
|
|
|
9
|
|
|
from tcms.tests.factories import TagFactory |
10
|
|
|
from tcms.tests.factories import UserFactory |
11
|
|
|
from tcms.tests import remove_perm_from_user |
12
|
|
|
from tcms.tests import BasePlanCase |
13
|
|
|
from tcms.utils.permissions import initiate_user_with_default_setups |
14
|
|
|
|
15
|
|
|
|
16
|
|
View Code Duplication |
class TestViewCaseTags(BasePlanCase): |
|
|
|
|
17
|
|
|
@classmethod |
18
|
|
|
def setUpTestData(cls): |
19
|
|
|
super().setUpTestData() |
20
|
|
|
|
21
|
|
|
initiate_user_with_default_setups(cls.tester) |
22
|
|
|
for _i in range(3): |
23
|
|
|
cls.case.add_tag(TagFactory()) |
24
|
|
|
|
25
|
|
|
cls.unauthorized = UserFactory() |
26
|
|
|
cls.unauthorized.set_password('password') |
27
|
|
|
cls.unauthorized.save() |
28
|
|
|
|
29
|
|
|
cls.unauthorized.user_permissions.add(*Permission.objects.all()) |
30
|
|
|
remove_perm_from_user(cls.unauthorized, 'testcases.add_testcasetag') |
31
|
|
|
remove_perm_from_user(cls.unauthorized, 'testcases.delete_testcasetag') |
32
|
|
|
|
33
|
|
|
def test_view_tags_with_permissions(self): |
34
|
|
|
url = reverse('ajax-tags') |
35
|
|
|
response = self.client.get(url, {'case': self.case.pk}) |
36
|
|
|
self.assertEqual(HTTPStatus.OK, response.status_code) |
37
|
|
|
|
38
|
|
|
# assert tag actions are shown |
39
|
|
|
self.assertContains(response, _('Add Tag')) |
40
|
|
|
self.assertContains(response, |
41
|
|
|
'class="remove js-remove-tag" title="remove tag">%s</a>' % |
42
|
|
|
_('Remove')) |
43
|
|
|
|
44
|
|
|
def test_view_tags_without_permissions(self): |
45
|
|
|
self.client.logout() |
46
|
|
|
|
47
|
|
|
self.client.login( # nosec:B106:hardcoded_password_funcarg |
48
|
|
|
username=self.unauthorized.username, |
49
|
|
|
password='password') |
50
|
|
|
|
51
|
|
|
url = reverse('ajax-tags') |
52
|
|
|
response = self.client.get(url, {'case': self.case.pk}) |
53
|
|
|
self.assertEqual(HTTPStatus.OK, response.status_code) |
54
|
|
|
|
55
|
|
|
# assert tag actions are shown |
56
|
|
|
self.assertNotContains(response, _('Add Tag')) |
57
|
|
|
self.assertContains(response, |
58
|
|
|
'<span class="disabled grey">%s</span>' % _('Remove')) |
59
|
|
|
|