def setUp(self): settings.EMAIL_BACKEND = \ 'django.core.mail.backends.locmem.EmailBackend' self.mas = ProfileFactory().user settings.ZDS_APP['member']['bot_account'] = self.mas.username self.user_author = ProfileFactory().user self.user = ProfileFactory().user self.staff = StaffProfileFactory().user self.licence = LicenceFactory() self.article = ArticleFactory() self.article.authors.add(self.user_author) self.article.licence = self.licence self.article.save() # connect with user login_check = self.client.login(username=self.user_author.username, password='******') self.assertEqual(login_check, True) # ask public article pub = self.client.post(reverse('zds.article.views.modify'), { 'article': self.article.pk, 'comment': u'Valides moi ce bébé', 'pending': 'Demander validation', 'version': self.article.sha_draft, 'is_major': True }, follow=False) self.assertEqual(pub.status_code, 302) self.assertEqual(Validation.objects.count(), 1) login_check = self.client.login(username=self.staff.username, password='******') self.assertEqual(login_check, True) # reserve tutorial validation = Validation.objects.get(article__pk=self.article.pk) pub = self.client.post(reverse('zds.article.views.reservation', args=[validation.pk]), follow=False) self.assertEqual(pub.status_code, 302) # publish article pub = self.client.post(reverse('zds.article.views.modify'), { 'article': self.article.pk, 'comment-v': u'Cet article est excellent', 'valid-article': 'Demander validation', 'is_major': True }, follow=False) self.assertEqual(pub.status_code, 302) self.assertEquals(len(mail.outbox), 1) mail.outbox = [] self.articlefeed = LastArticlesFeedRSS()
def test_workflow_licence(self): '''Ensure the behavior of licence on articles''' # create a new licence new_licence = LicenceFactory(code='CC_BY', title='Creative Commons BY') new_licence = Licence.objects.get(pk=new_licence.pk) # check value first article = Article.objects.get(pk=self.article.pk) self.assertEqual(article.licence.pk, self.licence.pk) # logout before self.client.logout() # login with author self.assertTrue( self.client.login(username=self.user_author.username, password='******')) # change licence (get 302) : result = self.client.post( reverse('zds.article.views.edit') + '?article={}'.format(self.article.pk), { 'title': self.article.title, 'description': self.article.description, 'text': self.article.get_text(), 'subcategory': self.article.subcategory.all(), 'licence': new_licence.pk }, follow=False) self.assertEqual(result.status_code, 302) # test change : article = Article.objects.get(pk=self.article.pk) self.assertNotEqual(article.licence.pk, self.licence.pk) self.assertEqual(article.licence.pk, new_licence.pk) # test change in JSON : json = article.load_json() self.assertEquals(json['licence'].code, new_licence.code) # then logout ... self.client.logout() # ... and login with staff self.assertTrue( self.client.login(username=self.staff.username, password='******')) # change licence back to old one (get 302, staff can change licence) : result = self.client.post( reverse('zds.article.views.edit') + '?article={}'.format(self.article.pk), { 'title': self.article.title, 'description': self.article.description, 'text': self.article.get_text(), 'subcategory': self.article.subcategory.all(), 'licence': self.licence.pk }, follow=False) self.assertEqual(result.status_code, 302) # test change : article = Article.objects.get(pk=self.article.pk) self.assertEqual(article.licence.pk, self.licence.pk) self.assertNotEqual(article.licence.pk, new_licence.pk) # test change in JSON : json = article.load_json() self.assertEquals(json['licence'].code, self.licence.code) # then logout ... self.client.logout() # change licence (get 302, redirection to login page) : result = self.client.post( reverse('zds.article.views.edit') + '?article={}'.format(self.article.pk), { 'title': self.article.title, 'description': self.article.description, 'text': self.article.get_text(), 'subcategory': self.article.subcategory.all(), 'licence': new_licence.pk }, follow=False) self.assertEqual(result.status_code, 302) # test change (normaly, nothing has) : article = Article.objects.get(pk=self.article.pk) self.assertEqual(article.licence.pk, self.licence.pk) self.assertNotEqual(article.licence.pk, new_licence.pk) # login with random user self.assertTrue( self.client.login(username=self.user.username, password='******')) # change licence (get 403, random user cannot edit article if not in # authors list) : result = self.client.post( reverse('zds.article.views.edit') + '?article={}'.format(self.article.pk), { 'title': self.article.title, 'description': self.article.description, 'text': self.article.get_text(), 'subcategory': self.article.subcategory.all(), 'licence': new_licence.pk }, follow=False) self.assertEqual(result.status_code, 403) # test change (normaly, nothing has) : article = Article.objects.get(pk=self.article.pk) self.assertEqual(article.licence.pk, self.licence.pk) self.assertNotEqual(article.licence.pk, new_licence.pk) # test change in JSON (normaly, nothing has) : json = article.load_json() self.assertEquals(json['licence'].code, self.licence.code)