def test_version_copy_adds_correct_locked_user(self): """ A copied version creates a lock for the user that copied the version. The users should not be the same. """ original_user = factories.UserFactory() original_version = factories.PollVersionFactory(created_by=original_user) copy_user = factories.UserFactory() copied_version = original_version.copy(copy_user) self.assertNotEqual(original_user, copy_user) self.assertEqual(original_version.versionlock.created_by, original_user) self.assertEqual(copied_version.versionlock.created_by, copy_user)
def test_unlock_link_only_present_for_draft_versions(self): draft_version = factories.PollVersionFactory( created_by=self.user_author) published_version = Version.objects.create( content=factories.PollContentFactory( poll=draft_version.content.poll), created_by=factories.UserFactory(), state=constants.PUBLISHED) draft_unlock_url = self.get_admin_url( self.versionable.version_model_proxy, 'unlock', draft_version.pk) draft_unlock_control = render_to_string( 'djangocms_version_locking/admin/unlock_icon.html', {'unlock_url': draft_unlock_url}) published_unlock_url = self.get_admin_url( self.versionable.version_model_proxy, 'unlock', published_version.pk) published_unlock_control = render_to_string( 'djangocms_version_locking/admin/unlock_icon.html', {'unlock_url': published_unlock_url}) changelist_url = version_list_url(draft_version.content) with self.login_user_context(self.superuser): response = self.client.post(changelist_url) # The draft version unlock control exists self.assertContains(response, draft_unlock_control, html=True) # The published version exists self.assertNotContains(response, published_unlock_control, html=True)
def test_published_version_copy_creates_draft_lock(self): """ A version lock is created for a published version copied from a draft version """ user = factories.UserFactory() published_version = factories.PollVersionFactory(state=constants.PUBLISHED) new_version = published_version.copy(user) self.assertTrue(hasattr(new_version, 'versionlock'))
def test_draft_version_copy_creates_draft_lock(self): """ A version lock is created for a new draft version copied from a draft version """ user = factories.UserFactory() draft_version = factories.PollVersionFactory(state=constants.DRAFT) new_version = draft_version.copy(user) self.assertTrue(hasattr(new_version, 'versionlock'))
def test_unpublish_link_not_present_for_published_version(self): draft_version = factories.PollVersionFactory( created_by=self.user_author) published_version = Version.objects.create( content=factories.PollContentFactory( poll=draft_version.content.poll), created_by=factories.UserFactory(), state=constants.PUBLISHED) with self.login_user_context(self.superuser): request = RequestFactory() request.user = self.superuser unpublish_url = self.version_admin._get_unpublish_link( published_version, request) self.assertNotIn("inactive", unpublish_url) with self.login_user_context(self.user_author): request = RequestFactory() request.user = factories.UserFactory() unpublish_url = self.version_admin._get_unpublish_link( draft_version, request) self.assertEqual("", unpublish_url)
def test_user_does_not_have_change_permission(self): """ A different user from the user who created the version does not have permission to change it """ author = factories.UserFactory(is_staff=True) content = factories.PollVersionFactory(state=DRAFT, created_by=author) url = self.get_admin_url(self.versionable.version_model_proxy, 'change', content.pk) with self.login_user_context(self.user_has_change_perms): response = self.client.get(url) self.assertEqual(response.status_code, 403)
def test_user_does_not_have_change_permission(self): """ Test that a different user from the user who created the version does not have permission to change it """ author = factories.UserFactory() editor = self.get_superuser() content = factories.PollVersionFactory(state=DRAFT, created_by=author) url = self.get_admin_url(PollContent, 'change', content.pk) with self.login_user_context(editor): response = self.client.get(url) self.assertEqual(response.status_code, 403)