예제 #1
0
    def test_subscription_middleware_log_requests_in_case_of_referer(
            self, mock_log):
        request = self.factory.get('/revues/shortname/issue/article.html')
        request.user = AnonymousUser()
        request.session = dict()
        request.META['HTTP_REFERER'] = 'http://www.umontreal.ca'

        middleware = SubscriptionMiddleware()
        valid_period = ValidJournalAccessSubscriptionPeriodFactory()
        subscription = valid_period.subscription
        InstitutionRefererFactory(subscription=subscription,
                                  referer="http://www.umontreal.ca")

        article = EmbargoedArticleFactory()
        subscription.journals.add(article.issue.journal)
        subscription.save()

        middleware.process_request(request)
        assert mock_log.info.call_count == 0
        middleware.process_response(request, HttpResponse())
        assert mock_log.info.call_count == 1

        request = self.factory.get('/')
        request.user = AnonymousUser()
        request.session = dict()
        request.META['HTTP_REFERER'] = 'http://www.no-referer.ca'

        middleware.process_request(request)
        middleware.process_response(request, HttpResponse())
        assert mock_log.info.call_count == 1
예제 #2
0
    def test_associates_the_subscription_type_to_the_request_in_case_of_referer_header(
            self):
        # Setup
        request = self.factory.get('/')
        request.user = AnonymousUser()
        request.session = dict()
        request.META['HTTP_REFERER'] = 'http://www.umontreal.ca'

        middleware = SubscriptionMiddleware()
        valid_period = ValidJournalAccessSubscriptionPeriodFactory()
        subscription = valid_period.subscription
        InstitutionRefererFactory(subscription=subscription,
                                  referer="http://www.umontreal.ca")

        article = EmbargoedArticleFactory()
        subscription.journals.add(article.issue.journal)
        subscription.save()

        middleware.process_request(request)

        assert request.subscription_type == 'institution-referer'

        request = self.factory.get('/')
        request.user = AnonymousUser()
        request.session = dict()
        request.META['HTTP_REFERER'] = None
        middleware.process_request(request)
        assert request.subscription_type == 'open_access'
예제 #3
0
    def test_can_only_find_institution_referer_when_path_fully_match(self):
        valid_period = ValidJournalAccessSubscriptionPeriodFactory()
        institution_referer = InstitutionRefererFactory(
            subscription=valid_period.subscription,
            referer="http://www.erudit.org.proxy.com/")

        assert not JournalAccessSubscription.valid_objects.get_for_referer(
            "http://www.erudit.org/")  # noqa
예제 #4
0
    def test_can_return_subscriptions_for_an_ip(self):

        subscription_period = ValidJournalAccessSubscriptionPeriodFactory.create()

        InstitutionIPAddressRangeFactory.create(
            subscription=subscription_period.subscription,
            ip_start='192.168.1.1',
            ip_end='192.168.1.2',
        )

        assert list(JournalAccessSubscription.valid_objects.get_for_ip_address('192.168.1.1')) == [subscription_period.subscription]
예제 #5
0
    def test_can_return_subscriptions_for_an_ip(self):

        subscription_period = ValidJournalAccessSubscriptionPeriodFactory.create()

        InstitutionIPAddressRangeFactory.create(
            subscription=subscription_period.subscription,
            ip_start='192.168.1.1',
            ip_end='192.168.1.2',
        )

        assert list(JournalAccessSubscription.valid_objects.get_for_ip_address('192.168.1.1')) == [subscription_period.subscription]
예제 #6
0
 def test_can_find_an_institution_referer_with_netloc_port_path_and_querystring(
         self):
     valid_period = ValidJournalAccessSubscriptionPeriodFactory()
     institution_referer = InstitutionRefererFactory(
         subscription=valid_period.subscription,
         referer="http://externalservice.com:2049/login?url=")
     assert JournalAccessSubscription.valid_objects.get_for_referer(
         "http://externalservice.com:2049/login?url='allo'"
     ) == institution_referer.subscription  # noqa
     assert JournalAccessSubscription.valid_objects.get_for_referer(
         "https://externalservice.com:2049/login?url='allo'"
     ) == institution_referer.subscription  # noqa
예제 #7
0
    def test_can_find_an_institution_referer_by_netloc(self):

        valid_period = ValidJournalAccessSubscriptionPeriodFactory()
        institution_referer = InstitutionRefererFactory(
            subscription=valid_period.subscription,
            referer="https://www.erudit.org/")
        assert JournalAccessSubscription.valid_objects.get_for_referer(
            "https://www.erudit.org/"
        ) == institution_referer.subscription  # noqa
        assert JournalAccessSubscription.valid_objects.get_for_referer(
            "http://www.erudit.org/"
        ) == institution_referer.subscription  # noqa
예제 #8
0
    def test_can_find_an_institution_referer_by_netloc_and_path(self):

        valid_period = ValidJournalAccessSubscriptionPeriodFactory()
        institution_referer = InstitutionRefererFactory(
            subscription=valid_period.subscription,
            referer=
            "https://www.topsecurity.org/bulletproofauthenticationmechanism")
        assert JournalAccessSubscription.valid_objects.get_for_referer(
            "http://www.topsecurity.org/bulletproofauthenticationmechanism"
        ) == institution_referer.subscription  # noqa
        assert not JournalAccessSubscription.valid_objects.get_for_referer(
            "http://www.topsecurity.org/")
        assert JournalAccessSubscription.valid_objects.get_for_referer(
            "http://www.topsecurity.org/bulletproofauthenticationmechanism/journal123"
        ) == institution_referer.subscription  # noqa