From 6e45af4671a2ce167651763e57e1e622796cfe14 Mon Sep 17 00:00:00 2001 From: "Mr. Senko" Date: Sat, 28 Oct 2017 00:28:37 +0300 Subject: [PATCH] Use correct permission names when editting Test Plan ENV Group Fixes #73 and also adds tests --- tcms/testplans/tests.py | 67 +++++++++++++++++++++++++++++++++++++++++ tcms/testplans/views.py | 4 +-- 2 files changed, 69 insertions(+), 2 deletions(-) diff --git a/tcms/testplans/tests.py b/tcms/testplans/tests.py index 22c006a519..ca882fbffa 100644 --- a/tcms/testplans/tests.py +++ b/tcms/testplans/tests.py @@ -21,6 +21,8 @@ from tcms.testplans.models import TCMSEnvPlanMap from tcms.testplans.models import TestPlan from tcms.testplans.models import TestPlanAttachment +from tcms.core.contrib.auth.backends import initiate_user_with_default_setups + from tcms.tests.factories import ComponentFactory from tcms.tests.factories import ClassificationFactory from tcms.tests.factories import ProductFactory @@ -28,6 +30,7 @@ from tcms.tests.factories import TestPlanFactory from tcms.tests.factories import TestPlanTypeFactory from tcms.tests.factories import TestTagFactory +from tcms.tests.factories import TCMSEnvGroupFactory from tcms.tests.factories import UserFactory from tcms.tests.factories import VersionFactory from tcms.tests import BasePlanCase @@ -35,6 +38,70 @@ from tcms.tests import user_should_have_perm +class TestPlanEnvironmentGroupTests(test.TestCase): + """Test setting/editting ENV groups in Test Plans""" + + @classmethod + def setUpTestData(cls): + super(TestPlanEnvironmentGroupTests, cls).setUpTestData() + + cls.product = ProductFactory() + cls.product_version = VersionFactory(product=cls.product) + + cls.env_group = TCMSEnvGroupFactory() + cls.new_env_group = TCMSEnvGroupFactory(name='Laptop hardware') + + cls.tester = UserFactory() + cls.tester.set_password('password') + initiate_user_with_default_setups(cls.tester) + + def setUp(self): + is_logged_in = self.client.login(username=self.tester.username, password='password') + self.assertTrue(is_logged_in) + + def test_user_with_default_perms_can_create_testplan_and_set_env_group(self): + # test for https://github.com/kiwitcms/Kiwi/issues/73 + url = reverse('plans-new') + response = self.client.post( + url, + { + 'name': 'TP for Issue #73', + 'product': self.product.pk, + 'product_version': self.product_version.pk, + 'type': TestPlanTypeFactory().pk, + 'env_group': self.env_group.pk, + }, + follow=True, + ) + + self.assertEqual(http.client.OK, response.status_code) + self.assertContains(response, ">%s" % self.env_group.name) + + def test_user_with_default_perms_can_edit_tp_and_change_env_group(self): + test_plan = TestPlanFactory( + product=self.product, + product_version=self.product_version, + env_group=[self.env_group] + ) + url = reverse('plan-edit', args=[test_plan.pk, ]) + + response = self.client.post( + url, + { + 'name': 'NEW TEST PLAN NAME', + 'product': test_plan.product.pk, + 'product_version': test_plan.product_version.pk, + 'type': test_plan.type.pk, + 'env_group': self.new_env_group.pk, + 'text': "We've changed the ENV group setting", + }, + follow=True, + ) + + self.assertEqual(http.client.OK, response.status_code) + self.assertContains(response, ">%s" % self.new_env_group.name) + + class PlanTests(test.TestCase): @classmethod diff --git a/tcms/testplans/views.py b/tcms/testplans/views.py index 1235082125..c3e88e085b 100644 --- a/tcms/testplans/views.py +++ b/tcms/testplans/views.py @@ -120,7 +120,7 @@ def new(request, template_name='plan/new.html'): tp.add_text(author=request.user, plan_text=form.cleaned_data['text']) # Add test plan environment groups - if request.user.has_perm('management.add_tcmsenvplanmap'): + if request.user.has_perm('testplans.add_tcmsenvplanmap'): if request.POST.get('env_group'): env_groups = TCMSEnvGroup.objects.filter( id__in=request.POST.getlist('env_group') @@ -581,7 +581,7 @@ def edit(request, plan_id, template_name='plan/edit.html'): plan_text=request.POST.get('text'), text_checksum=text_checksum) - if request.user.has_perm('management.change_tcmsenvplanmap'): + if request.user.has_perm('testplans.change_tcmsenvplanmap'): tp.clear_env_groups() if request.POST.get('env_group'):