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
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'
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
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]
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
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
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