def test_update_password(self): test_user = self.http_req.user # make sure user who is shooting the request has proper permission to # update an user's attributes, whatever itself or others. user_should_have_perm(test_user, 'auth.change_user') user_new_attrs = self.user_new_attrs.copy() new_password = '******' user_new_attrs['password'] = new_password self.assertRaisesXmlrpcFault(FORBIDDEN, XUser.update, self.http_req, user_new_attrs, test_user.pk) user_new_attrs['old_password'] = '******' self.assertRaisesXmlrpcFault(FORBIDDEN, XUser.update, self.http_req, user_new_attrs, test_user.pk) user_new_attrs['old_password'] = test_user.username data = XUser.update(self.http_req, user_new_attrs, test_user.pk) self.assertNotIn('password', data) self.assertEqual(data['first_name'], user_new_attrs['first_name']) self.assertEqual(data['last_name'], user_new_attrs['last_name']) self.assertEqual(data['email'], user_new_attrs['email']) user = User.objects.get(pk=test_user.pk) self.assertTrue(user.check_password(new_password))
def test_update_password(self): test_user = self.http_req.user # make sure user who is shooting the request has proper permission to # update an user's attributes, whatever itself or others. user_should_have_perm(test_user, 'auth.change_user') user_new_attrs = self.user_new_attrs.copy() new_password = '******' user_new_attrs['password'] = new_password self.assertXmlrpcFaultForbidden(XUser.update, self.http_req, user_new_attrs, test_user.pk) user_new_attrs['old_password'] = '******' self.assertXmlrpcFaultForbidden(XUser.update, self.http_req, user_new_attrs, test_user.pk) user_new_attrs['old_password'] = test_user.username data = XUser.update(self.http_req, user_new_attrs, test_user.pk) self.assertNotIn('password', data) self.assertEqual(data['first_name'], user_new_attrs['first_name']) self.assertEqual(data['last_name'], user_new_attrs['last_name']) self.assertEqual(data['email'], user_new_attrs['email']) user = User.objects.get(pk=test_user.pk) self.assertTrue(user.check_password(new_password))
def test_enable_a_group(self): user_should_have_perm(self.tester, self.permission) self.client.post(self.set_status_url, {'status': 1}) group = TCMSEnvGroup.objects.get(pk=self.group_nitrate.pk) self.assertTrue(group.is_active)
def setUpTestData(cls): super().setUpTestData() cls.property_py = f.TCMSEnvPropertyFactory(name='python') cls.property_db = f.TCMSEnvPropertyFactory(name='db') f.TCMSEnvValueFactory(value='mysql', property=cls.property_db) user_should_have_perm(cls.tester, 'management.add_tcmsenvvalue')
def setUpTestData(cls): super().setUpTestData() cls.upload_file_url = reverse('upload-file') user_should_have_perm(cls.tester, 'management.add_testattachment') user_should_have_perm(cls.tester, 'testcases.add_testcaseattachment')
def test_update_other_with_proper_permission(self): user_should_have_perm(self.http_req.user, 'auth.change_user') data = XUser.update(self.http_req, self.user_new_attrs, self.user.pk) updated_user = User.objects.get(pk=self.user.pk) self.assertEqual(data['first_name'], updated_user.first_name) self.assertEqual(data['last_name'], updated_user.last_name) self.assertEqual(data['email'], updated_user.email)
def test_missing_status(self): user_should_have_perm(self.tester, self.permission) response = self.client.post(self.set_status_url) self.assertJsonResponse( response, {'message': 'Environment group status is missing.'}, status_code=HTTPStatus.BAD_REQUEST)
def setUpTestData(cls): super().setUpTestData() cls.plan_tester = User.objects.create_user(username='******', email='*****@*****.**', password='******') user_should_have_perm(cls.plan_tester, 'testcases.add_testcaseplan')
def test_404_if_group_pk_not_exist(self): user_should_have_perm(self.tester, self.permission) self.client.login(username=self.tester.username, password='******') response = self.client.get(self.group_modify_url, {'action': 'modify', 'id': 999999999, 'status': 1}) self.assertEqual(http_client.NOT_FOUND, response.status_code)
def setUpTestData(cls): super(TestUploadFile, cls).setUpTestData() cls.upload_file_url = reverse('upload-file') cls.password = '******' cls.user = create_request_user(username='******', password=cls.password) user_should_have_perm(cls.user, 'management.add_testattachment') user_should_have_perm(cls.user, 'testcases.add_testcaseattachment')
def setUpTestData(cls): super(TestImportCasesToPlan, cls).setUpTestData() cls.plan_tester = User.objects.create_user( username='******', email='*****@*****.**', password='******') user_should_have_perm(cls.plan_tester, 'testcases.add_testcaseplan')
def test_404_if_group_pk_not_exist(self): user_should_have_perm(self.tester, self.permission) self.client.login(username=self.tester.username, password='******') response = self.client.get(self.group_modify_url, { 'action': 'modify', 'id': 999999999, 'status': 1 }) self.assert404(response)
def test_refuse_invalid_status_value(self): user_should_have_perm(self.tester, self.permission) # Status value is not valid as long as it's not 0 or 1. for status in ('true', 'false', 'yes', 'no', '2'): response = self.client.post(self.set_status_url, {'status': status}) self.assertJsonResponse( response, {'message': f'Environment group status "{status}" is invalid.'}, status_code=HTTPStatus.BAD_REQUEST)
def setUpTestData(cls): super().setUpTestData() user_should_have_perm(cls.tester, 'management.change_tcmsenvvalue') cls.property_db = f.TCMSEnvPropertyFactory(name='db') cls.property_value = f.TCMSEnvValueFactory( value='mysql', property=cls.property_db) cls.edit_url = reverse('management-env-property-value-edit', args=[cls.property_value.pk])
def test_disable_a_group(self): user_should_have_perm(self.tester, self.permission) self.client.login(username=self.tester.username, password='******') self.client.get(self.group_modify_url, {'action': 'modify', 'id': self.group_nitrate.pk, 'status': 0}) group = TCMSEnvGroup.objects.get(pk=self.group_nitrate.pk) self.assertFalse(group.is_active)
def test_delete_group_by_non_manager(self): user_should_have_perm(self.tester, self.permission) url = reverse('management-delete-env-group', args=[self.group_fedora.pk]) response = self.client.post(url) self.assertJsonResponse( response, {'env_group_id': self.group_fedora.pk}) self.assertFalse( TCMSEnvGroup.objects.filter(pk=self.group_fedora.pk).exists())
def test_delete_group_by_non_manager(self): user_should_have_perm(self.tester, self.permission) self.client.login(username=self.tester.username, password='******') response = self.client.get(self.group_delete_url, {'action': 'del', 'id': self.group_fedora.pk}) self.assertEqual({'rc': 0, 'response': 'ok'}, json_loads(response.content)) self.assertFalse( TCMSEnvGroup.objects.filter(pk=self.group_fedora.pk).exists())
def setUpTestData(cls): super().setUpTestData() # Create an empty run for test cls.test_run_2 = f.TestRunFactory(product_version=cls.version, plan=cls.plan, build=cls.build, manager=cls.tester, default_tester=cls.tester) user_should_have_perm(cls.tester, 'testruns.change_testrun') cls.url = reverse('plan-choose-run', args=[cls.plan.pk])
def setUpTestData(cls): super(TestAddGroup, cls).setUpTestData() cls.group_add_url = reverse('management-env-groups') cls.tester = User.objects.create_user(username='******', email='*****@*****.**', password='******') cls.new_group_name = 'nitrate-dev' cls.permission = 'management.add_tcmsenvgroup' user_should_have_perm(cls.tester, cls.permission)
def test_disable_a_group(self): user_should_have_perm(self.tester, self.permission) self.client.login(username=self.tester.username, password='******') self.client.get(self.group_modify_url, { 'action': 'modify', 'id': self.group_nitrate.pk, 'status': 0 }) group = TCMSEnvGroup.objects.get(pk=self.group_nitrate.pk) self.assertFalse(group.is_active)
def setUpTestData(cls): super().setUpTestData() cls.another_plan = f.TestPlanFactory(name='Another plan for test', author=cls.tester, owner=cls.tester, product=cls.product, product_version=cls.version) cls.another_case_1 = f.TestCaseFactory(author=cls.tester, default_tester=None, reviewer=cls.tester, plan=[cls.another_plan]) cls.another_case_2 = f.TestCaseFactory(author=cls.tester, default_tester=None, reviewer=cls.tester, plan=[cls.another_plan]) cls.third_plan = f.TestPlanFactory(name='Third plan for test', author=cls.tester, owner=cls.tester, product=cls.product, product_version=cls.version) cls.third_case_1 = f.TestCaseFactory(author=cls.tester, default_tester=None, reviewer=cls.tester, plan=[cls.third_plan]) cls.third_case_2 = f.TestCaseFactory(author=cls.tester, default_tester=None, reviewer=cls.tester, plan=[cls.third_plan]) cls.totally_new_plan = f.TestPlanFactory( name='Test clone plan with copying cases', author=cls.tester, owner=cls.tester, product=cls.product, product_version=cls.version) cls.case_maintain_original_author = f.TestCaseFactory( author=cls.tester, default_tester=None, reviewer=cls.tester, plan=[cls.totally_new_plan]) cls.case_keep_default_tester = f.TestCaseFactory( author=cls.tester, default_tester=None, reviewer=cls.tester, plan=[cls.totally_new_plan]) cls.plan_tester = User.objects.create_user(username='******', email='*****@*****.**', password='******') user_should_have_perm(cls.plan_tester, 'testplans.add_testplan') cls.plan_clone_url = reverse('plans-clone')
def setUpTestData(cls): super().setUpTestData() user_should_have_perm(cls.tester, 'management.change_tcmsenvvalue') cls.set_status_url = reverse('management-set-env-property-values-status') cls.property_db = f.TCMSEnvPropertyFactory(name='db') cls.value_mysql = f.TCMSEnvValueFactory( value='mysql', is_active=False, property=cls.property_db) cls.value_pgsql = f.TCMSEnvValueFactory( value='pgsql', is_active=False, property=cls.property_db) cls.value_mariadb = f.TCMSEnvValueFactory( value='mariadb', property=cls.property_db)
def test_refuse_invalid_status_value(self): user_should_have_perm(self.tester, self.permission) self.client.login(username=self.tester.username, password='******') # Status value is not valid as long as it's not 0 or 1. for invalid_status in ('true', 'false', 'yes', 'no', '2'): response = self.client.get(self.group_modify_url, {'action': 'modify', 'id': self.group_nitrate.pk, 'status': invalid_status}) self.assertEqual({'rc': 1, 'response': 'Argument illegel.'}, json_loads(response.content))
def setUpTestData(cls): super().setUpTestData() cls.group_add_url = reverse('management-add-env-group') cls.tester = User.objects.create_user(username='******', email='*****@*****.**', password='******') cls.new_group_name = 'nitrate-dev' cls.permission = 'management.add_tcmsenvgroup' user_should_have_perm(cls.tester, cls.permission)
def setUpTestData(cls): super(TestVisitEnvironmentGroupPage, cls).setUpTestData() cls.tester = User.objects.create_user(username='******', email='*****@*****.**', password='******') user_should_have_perm(cls.tester, 'management.change_tcmsenvgroup') cls.group_edit_url = reverse('management-env-group-edit') cls.group_nitrate = TCMSEnvGroupFactory(name='nitrate', manager=cls.tester) cls.disabled_group = TCMSEnvGroupFactory(name='disabled-group', is_active=False, manager=cls.tester)
def setUpTestData(cls): super().setUpTestData() cls.tester = User.objects.create_user(username='******', email='*****@*****.**', password='******') user_should_have_perm(cls.tester, 'management.change_tcmsenvgroup') cls.group_edit_url = reverse('management-env-group-edit') cls.group_nitrate = f.TCMSEnvGroupFactory(name='nitrate', manager=cls.tester) cls.disabled_group = f.TCMSEnvGroupFactory(name='disabled-group', is_active=False, manager=cls.tester)
def test_visit_group_page_with_permission(self): self.client.login(username=self.new_tester.username, password='******') user_should_have_perm(self.new_tester, 'management.change_tcmsenvgroup') group_edit_url = reverse('management-env-group-edit') response = self.client.get(self.group_url) for group in (self.group_1, self.group_2): self.assertContains( response, '<a href="{}?id={}">{}</a>'.format(group_edit_url, group.pk, group.name), html=True)
def setUpTestData(cls): super().setUpTestData() user_should_have_perm(cls.tester, 'management.change_tcmsenvgroup') cls.group_nitrate = f.TCMSEnvGroupFactory( name='nitrate', manager=cls.tester) cls.group_db = f.TCMSEnvGroupFactory( name='db', is_active=False, manager=cls.tester) cls.duplicate_group = f.TCMSEnvGroupFactory( name='fedora', manager=cls.tester) cls.property_1 = f.TCMSEnvPropertyFactory() cls.property_2 = f.TCMSEnvPropertyFactory() cls.property_3 = f.TCMSEnvPropertyFactory()
def test_visit_group_page_with_permission(self): self.client.login(username=self.new_tester.username, password='******') user_should_have_perm(self.new_tester, 'management.change_tcmsenvgroup') group_edit_url = reverse('management-env-group-edit') response = self.client.get(self.group_url) for group in (self.group_1, self.group_2): self.assertContains(response, '<a href="{}?id={}">{}</a>'.format( group_edit_url, group.pk, group.name), html=True)
def setUpTestData(cls): super(TestEditEnvironmentGroup, cls).setUpTestData() cls.tester = User.objects.create_user(username='******', email='*****@*****.**', password='******') user_should_have_perm(cls.tester, 'management.change_tcmsenvgroup') cls.group_nitrate = TCMSEnvGroupFactory(name='nitrate', manager=cls.tester) cls.duplicate_group = TCMSEnvGroupFactory(name='fedora', manager=cls.tester) cls.property_1 = TCMSEnvPropertyFactory() cls.property_2 = TCMSEnvPropertyFactory() cls.property_3 = TCMSEnvPropertyFactory() cls.group_edit_url = reverse('management-env-group-edit')
def test_link_cases(self): user_should_have_perm(self.tester, 'testcases.add_testcaseplan') post_data = {'case': [self.another_case_1.pk, self.another_case_2.pk]} response = self.client.post(self.link_cases_url, post_data) self.assertRedirects(response, reverse('plan-get', args=[self.plan.pk]), target_status_code=HTTPStatus.MOVED_PERMANENTLY) self.assertTrue( TestCasePlan.objects.filter(plan=self.plan, case=self.another_case_1).exists()) self.assertTrue( TestCasePlan.objects.filter(plan=self.plan, case=self.another_case_2).exists())
def test_delete_group_by_non_manager(self): user_should_have_perm(self.tester, self.permission) self.client.login(username=self.tester.username, password='******') response = self.client.get(self.group_delete_url, { 'action': 'del', 'id': self.group_fedora.pk }) self.assertEqual({ 'rc': 0, 'response': 'ok' }, json.loads(response.content)) self.assertFalse( TCMSEnvGroup.objects.filter(pk=self.group_fedora.pk).exists())
def test_refuse_invalid_status_value(self): user_should_have_perm(self.tester, self.permission) self.client.login(username=self.tester.username, password='******') # Status value is not valid as long as it's not 0 or 1. for invalid_status in ('true', 'false', 'yes', 'no', '2'): response = self.client.get( self.group_modify_url, { 'action': 'modify', 'id': self.group_nitrate.pk, 'status': invalid_status }) self.assertEqual({ 'rc': 1, 'response': 'Argument illegel.' }, json.loads(response.content))
def setUpTestData(cls): super().setUpTestData() cls.plan = f.TestPlanFactory(owner=cls.tester, author=cls.tester) cls.case_1 = f.TestCaseFactory(author=cls.tester, reviewer=cls.tester, default_tester=None, plan=[cls.plan]) cls.case_2 = f.TestCaseFactory(author=cls.tester, reviewer=cls.tester, default_tester=None, plan=[cls.plan]) user_should_have_perm(cls.tester, 'testcases.change_testcase') cls.user_1 = f.UserFactory(username='******') cls.url = reverse('ajax-update-cases-default-tester')
def setUpTestData(cls): super().setUpTestData() cls.tester = User.objects.create_user(username='******', email='*****@*****.**', password='******') user_should_have_perm(cls.tester, 'management.change_tcmsenvgroup') cls.group_nitrate = f.TCMSEnvGroupFactory(name='nitrate', manager=cls.tester) cls.duplicate_group = f.TCMSEnvGroupFactory(name='fedora', manager=cls.tester) cls.property_1 = f.TCMSEnvPropertyFactory() cls.property_2 = f.TCMSEnvPropertyFactory() cls.property_3 = f.TCMSEnvPropertyFactory() cls.group_edit_url = reverse('management-env-group-edit')
def test_set_plan_parent_for_the_first_time(self): user_should_have_perm(self.tester, 'testplans.change_testplan') self.client.post( reverse('ajax-update'), { 'content_type': 'testplans.testplan', 'object_pk': self.plan.pk, 'field': 'parent', 'value': self.parent.pk, 'value_type': 'int' }) plan = TestPlan.objects.get(pk=self.plan.pk) assert self.parent.pk == plan.parent.pk log = TCMSLogModel.objects.first() assert log.field == 'parent' assert log.original_value == 'None' assert log.new_value == str(self.parent.pk)
def setUpTestData(cls): super(TestCloneView, cls).setUpTestData() cls.another_plan = TestPlanFactory( name='Another plan for test', author=cls.tester, owner=cls.tester, product=cls.product, product_version=cls.version) cls.another_case_1 = TestCaseFactory( author=cls.tester, default_tester=None, reviewer=cls.tester, plan=[cls.another_plan]) cls.another_case_2 = TestCaseFactory( author=cls.tester, default_tester=None, reviewer=cls.tester, plan=[cls.another_plan]) cls.third_plan = TestPlanFactory( name='Third plan for test', author=cls.tester, owner=cls.tester, product=cls.product, product_version=cls.version) cls.third_case_1 = TestCaseFactory( author=cls.tester, default_tester=None, reviewer=cls.tester, plan=[cls.third_plan]) cls.third_case_2 = TestCaseFactory( author=cls.tester, default_tester=None, reviewer=cls.tester, plan=[cls.third_plan]) cls.totally_new_plan = TestPlanFactory( name='Test clone plan with copying cases', author=cls.tester, owner=cls.tester, product=cls.product, product_version=cls.version) cls.case_maintain_original_author = TestCaseFactory( author=cls.tester, default_tester=None, reviewer=cls.tester, plan=[cls.totally_new_plan]) cls.case_keep_default_tester = TestCaseFactory( author=cls.tester, default_tester=None, reviewer=cls.tester, plan=[cls.totally_new_plan]) cls.plan_tester = User.objects.create_user( username='******', email='*****@*****.**', password='******') user_should_have_perm(cls.plan_tester, 'testplans.add_testplan') cls.plan_clone_url = reverse('plans-clone')
def make_http_request(user=None, user_perm=None, data=None): """Factory method to make instance of FakeHTTPRequest :param user: a user bound to created fake HTTP request. That simulates a user requests an HTTP request. If omitted, a user will be created automatically. :type user: :class:`User <django.contrib.auth.models.User>` :param str user_perm: the permission user should have to perform the request. If omitted, no permission is set. :param data: not used at this moment. :return: a fake HTTP request object. :rtype: :class:`FakeHTTPRequest <tcms.xmlrpc.tests.utils.FakeHTTPRequest>` """ _user = user if _user is None: _user = create_http_user() if user_perm is not None: user_should_have_perm(_user, user_perm) return FakeHTTPRequest(_user, data)
def setUpTestData(cls): super().setUpTestData() cls.comment_author = f.UserFactory() user_should_have_perm(cls.tester, 'django_comments.can_moderate') cls.case_1 = f.TestCaseFactory() cls.case_2 = f.TestCaseFactory() add_comment(cls.tester, 'testcases.testcase', [cls.case_1.pk, cls.case_2.pk], 'first comment') add_comment(cls.tester, 'testcases.testcase', [cls.case_1.pk, cls.case_2.pk], 'second comment') add_comment(cls.tester, 'testcases.testcase', [cls.case_1.pk, cls.case_2.pk], 'third comment') add_comment(cls.comment_author, 'testcases.testcase', [cls.case_1.pk], '4th comment')
def test_link_cases(self): self.client.login(username=self.plan_tester.username, password='******') user_should_have_perm(self.plan_tester, 'testcases.add_testcaseplan') post_data = { 'case': [self.another_case_1.pk, self.another_case_2.pk] } response = self.client.post(self.link_cases_url, post_data) self.assertRedirects( response, reverse('plan-get', args=[self.plan.pk]), target_status_code=http_client.MOVED_PERMANENTLY) self.assertTrue( TestCasePlan.objects.filter( plan=self.plan, case=self.another_case_1).exists()) self.assertTrue( TestCasePlan.objects.filter( plan=self.plan, case=self.another_case_2).exists())
def setUpTestData(cls): super().setUpTestData() cls.tester = User.objects.create_user(username='******', email='*****@*****.**') cls.tester.set_password('password') cls.tester.save() cls.comment_author = f.UserFactory() user_should_have_perm(cls.tester, 'django_comments.can_moderate') cls.case_1 = f.TestCaseFactory() cls.case_2 = f.TestCaseFactory() add_comment(cls.tester, 'testcases.testcase', [cls.case_1.pk, cls.case_2.pk], 'first comment') add_comment(cls.tester, 'testcases.testcase', [cls.case_1.pk, cls.case_2.pk], 'second comment') add_comment(cls.tester, 'testcases.testcase', [cls.case_1.pk, cls.case_2.pk], 'third comment') add_comment(cls.comment_author, 'testcases.testcase', [cls.case_1.pk], '4th comment')
def setUp(self): user_should_have_perm(self.tester, self.permission)
def setUp(self): super().setUp() user_should_have_perm(self.tester, self.permission)
def test_404_if_group_pk_not_exist(self): user_should_have_perm(self.tester, self.permission) url = reverse('management-set-env-group-status', args=[999999999]) response = self.client.post(url, {'status': 1}) self.assert404(response)