def test_provides_only_subscriptions_associated_with_the_current_journal(self): # Setup AuthorizationFactory.create( content_type=ContentType.objects.get_for_model(self.journal), object_id=self.journal.id, user=self.user, authorization_codename=AC.can_manage_individual_subscription.codename) plan = JournalManagementPlanFactory.create(max_accounts=10) JournalManagementSubscriptionFactory.create(journal=self.journal, plan=plan) other_journal = JournalFactory.create() subscription_1 = JournalAccessSubscriptionFactory.create( user=self.user, journal=self.journal) JournalAccessSubscriptionFactory.create( user=self.user, journal=other_journal) self.client.login(username='******', password='******') url = reverse('userspace:journal:subscription:list', kwargs={ 'journal_pk': self.journal.pk, }) # Run response = self.client.get(url) # Check self.assertEqual(response.status_code, 200) self.assertEqual(list(response.context['subscriptions']), [subscription_1, ])
def test_can_grant_access_to_an_article_if_it_is_associated_to_an_institutional_account(self): # Setup issue = IssueFactory.create( journal=self.journal, date_published=dt.datetime.now(), localidentifier='test', open_access=False) article = ArticleFactory.create(issue=issue) organisation = OrganisationFactory.create() subscription = JournalAccessSubscriptionFactory.create( journal=self.journal, organisation=organisation) InstitutionIPAddressRangeFactory.create( subscription=subscription, ip_start='192.168.1.2', ip_end='192.168.1.4') class MyView(ArticleAccessCheckMixin): def get_article(self): return article request = self.factory.get('/') request.user = AnonymousUser() parameters = request.META.copy() parameters['HTTP_X_FORWARDED_FOR'] = '192.168.1.3' request.META = parameters view = MyView() view.request = request # Run # check self.assertTrue(view.has_access())
def test_can_grant_access_to_an_article_if_it_is_associated_to_an_individual_subscription(self): # Setup issue = IssueFactory.create( journal=self.journal, date_published=dt.datetime.now(), localidentifier='test', open_access=False) article = ArticleFactory.create(issue=issue) JournalAccessSubscriptionFactory.create(user=self.user, journal=self.journal) class MyView(ArticleAccessCheckMixin): def get_article(self): return article request = self.factory.get('/') request.user = self.user view = MyView() view.request = request # Run # check self.assertTrue(view.has_access())
def test_cannot_allow_the_creation_of_subscription_if_the_plan_limit_has_been_reached(self): # Setup plan = JournalManagementPlanFactory.create(code='test', max_accounts=3) JournalManagementSubscriptionFactory.create(journal=self.journal, plan=plan) JournalAccessSubscriptionFactory.create(user=self.user, journal=self.journal) token_1 = AccountActionTokenFactory.create(content_object=self.journal) token_2 = AccountActionTokenFactory.create(content_object=self.journal) # noqa token_1.consume(self.user) AuthorizationFactory.create( content_type=ContentType.objects.get_for_model(self.journal), object_id=self.journal.id, user=self.user, authorization_codename=AC.can_manage_individual_subscription.codename) self.client.login(username='******', password='******') url = reverse('userspace:journal:subscription:create', kwargs={ 'journal_pk': self.journal.pk}) # Run response = self.client.get(url) # Check self.assertEqual(response.status_code, 302)
def test_cannot_be_accessed_by_a_user_who_cannot_manage_individual_subscriptions(self): # Setup subscription = JournalAccessSubscriptionFactory.create( user=self.user, journal=self.journal) self.client.login(username='******', password='******') url = reverse('userspace:journal:subscription:delete', kwargs={ 'journal_pk': self.journal.pk, 'pk': subscription.pk, }) # Run response = self.client.get(url) # Check self.assertEqual(response.status_code, 403)
def test_can_properly_delete_a_subscription(self): # Setup AuthorizationFactory.create( content_type=ContentType.objects.get_for_model(self.journal), object_id=self.journal.id, user=self.user, authorization_codename=AC.can_manage_individual_subscription.codename) subscription = JournalAccessSubscriptionFactory.create( user=self.user, journal=self.journal) self.client.login(username='******', password='******') url = reverse('userspace:journal:subscription:delete', kwargs={ 'journal_pk': self.journal.pk, 'pk': subscription.pk, }) # Run response = self.client.post(url, follow=False) # Check self.assertEqual(response.status_code, 302) self.assertFalse(JournalAccessSubscription.objects.exists())