示例#1
0
 def setUp(self):
     """
       This will be run before each test.
       """
     # prevent complaints about configuration if we only want to test the middleware
     if not getattr(settings, 'HTTPBL_KEY', False):
         setattr(settings, 'HTTPBL_KEY', 'abcdefghijkl'
                 )  # This API key is legal ONLY for testing purposes.
     self.mw = HttpBLMiddleware()
     # Override other settings - we need a tight and consistent test case ;)
     self.mw.age = 1
     self.mw.threat = 1
     self.mw.classification = 1
     self.mw.logging = False
     self.mw.quicklink = 'http://google.com/'
     self.req = RequestFactory().get('/')
示例#2
0
 def setUp(self):
     """
       This will be run before each test.
       """
     # prevent complaints about configuration if we only want to test the middleware
     if not getattr(settings, 'HTTPBL_KEY', False):
         setattr(settings, 'HTTPBL_KEY', 'abcdefghijkl') # This API key is legal ONLY for testing purposes.
     self.mw = HttpBLMiddleware()
     # Override other settings - we need a tight and consistent test case ;)
     self.mw.age = 1
     self.mw.threat = 1
     self.mw.classification = 1
     self.mw.logging = False
     self.mw.quicklink = 'http://google.com/'
     self.req = RequestFactory().get('/')
示例#3
0
class HttpBLMiddlewareTestCase(unittest.TestCase):
    def setUp(self):
        """
          This will be run before each test.
          """
        # prevent complaints about configuration if we only want to test the middleware
        if not getattr(settings, 'HTTPBL_KEY', False):
            setattr(settings, 'HTTPBL_KEY', 'abcdefghijkl') # This API key is legal ONLY for testing purposes.
        self.mw = HttpBLMiddleware()
        # Override other settings - we need a tight and consistent test case ;)
        self.mw.age = 1
        self.mw.threat = 1
        self.mw.classification = 1
        self.mw.logging = False
        self.mw.quicklink = 'http://google.com/'
        self.req = RequestFactory().get('/')

    def test_config(self):
        """
          Missing API key should raise ImproperlyConfigured
          """
        delattr(settings, 'HTTPBL_KEY')
        self.assertRaises(ImproperlyConfigured, HttpBLMiddleware)

    def test_threat(self):
        """
          Detecting a threat should redirect to QuickLink or return HttpResponseNotFound.
          """
        self.req.environ['REMOTE_ADDR'] = '127.1.1.1'
        threat = self.mw.is_threat(self.req)
        self.assertTrue(threat)

        response = self.mw.process_request(self.req)
        self.assertIsInstance(response, HttpResponsePermanentRedirect)

        self.mw.quicklink = False
        response = self.mw.process_request(self.req)
        self.assertIsInstance(response, HttpResponseNotFound)

    def test_search_engine(self):
        """
          Search engines should be allowed.
          """
        self.req.environ['REMOTE_ADDR'] = '127.1.1.0'
        threat = self.mw.is_threat(self.req)
        self.assertFalse(threat)

        response = self.mw.process_request(self.req)
        self.assertEqual(response, None)

    def test_innocent(self):
        """
          Innocent hosts should be allowed.
          """
        self.req.environ['REMOTE_ADDR'] = '127.0.0.1'
        threat = self.mw.is_threat(self.req)
        self.assertFalse(threat)

        response = self.mw.process_request(self.req)
        self.assertEqual(response, None)

    def test_suspicious(self):
        """
          Depending on the settings some Suspicious hosts can be let in.
          In such cases 'httpbl_suspicious' context variable should be set to True.
          """
        self.mw.classification = 2
        self.req.environ['REMOTE_ADDR'] = '127.1.1.1'
        threat = self.mw.is_threat(self.req)
        self.assertFalse(threat)

        response = self.mw.process_request(self.req)
        self.assertEqual(response, None)

    def test_template_response(self):
        """
          Test if template_response properly sets context variable.
          """
        response = SimpleTemplateResponse(template=Template(''), context={})

        self.req.environ['REMOTE_ADDR'] = '127.0.0.1'
        result = self.mw.process_template_response(self.req, response)
        self.assertFalse(result.context_data['httpbl_suspicious'])

        self.assertEqual(result.context_data['httpbl_quicklink'], self.mw.quicklink)

        self.mw.classification = 2
        self.req.environ['REMOTE_ADDR'] = '127.1.1.1'
        result = self.mw.process_template_response(self.req, response)
        self.assertTrue(result.context_data['httpbl_suspicious'])
示例#4
0
class HttpBLMiddlewareTestCase(unittest.TestCase):
    def setUp(self):
        """
          This will be run before each test.
          """
        # prevent complaints about configuration if we only want to test the middleware
        if not getattr(settings, 'HTTPBL_KEY', False):
            setattr(settings, 'HTTPBL_KEY', 'abcdefghijkl'
                    )  # This API key is legal ONLY for testing purposes.
        self.mw = HttpBLMiddleware()
        # Override other settings - we need a tight and consistent test case ;)
        self.mw.age = 1
        self.mw.threat = 1
        self.mw.classification = 1
        self.mw.logging = False
        self.mw.quicklink = 'http://google.com/'
        self.req = RequestFactory().get('/')

    def test_config(self):
        """
          Missing API key should raise ImproperlyConfigured
          """
        delattr(settings, 'HTTPBL_KEY')
        self.assertRaises(ImproperlyConfigured, HttpBLMiddleware)

    def test_threat(self):
        """
          Detecting a threat should redirect to QuickLink or return HttpResponseNotFound.
          """
        self.req.environ['REMOTE_ADDR'] = '127.1.1.1'
        threat = self.mw.is_threat(self.req)
        self.assertTrue(threat)

        response = self.mw.process_request(self.req)
        self.assertIsInstance(response, HttpResponsePermanentRedirect)

        self.mw.quicklink = False
        response = self.mw.process_request(self.req)
        self.assertIsInstance(response, HttpResponseNotFound)

    def test_search_engine(self):
        """
          Search engines should be allowed.
          """
        self.req.environ['REMOTE_ADDR'] = '127.1.1.0'
        threat = self.mw.is_threat(self.req)
        self.assertFalse(threat)

        response = self.mw.process_request(self.req)
        self.assertEqual(response, None)

    def test_innocent(self):
        """
          Innocent hosts should be allowed.
          """
        self.req.environ['REMOTE_ADDR'] = '127.0.0.1'
        threat = self.mw.is_threat(self.req)
        self.assertFalse(threat)

        response = self.mw.process_request(self.req)
        self.assertEqual(response, None)

    def test_suspicious(self):
        """
          Depending on the settings some Suspicious hosts can be let in.
          In such cases 'httpbl_suspicious' context variable should be set to True.
          """
        self.mw.classification = 2
        self.req.environ['REMOTE_ADDR'] = '127.1.1.1'
        threat = self.mw.is_threat(self.req)
        self.assertFalse(threat)

        response = self.mw.process_request(self.req)
        self.assertEqual(response, None)

    def test_template_response(self):
        """
          Test if template_response properly sets context variable.
          """
        response = SimpleTemplateResponse(template=Template(''), context={})

        self.req.environ['REMOTE_ADDR'] = '127.0.0.1'
        result = self.mw.process_template_response(self.req, response)
        self.assertFalse(result.context_data['httpbl_suspicious'])

        self.assertEqual(result.context_data['httpbl_quicklink'],
                         self.mw.quicklink)

        self.mw.classification = 2
        self.req.environ['REMOTE_ADDR'] = '127.1.1.1'
        result = self.mw.process_template_response(self.req, response)
        self.assertTrue(result.context_data['httpbl_suspicious'])