Esempio n. 1
0
class MiddlewareTest(TestCase):
    def setUp(self, *args, **kwargs):
        self.client = Client()
        self.factory = RequestFactory()
        self.request = self.factory.get("/", **{"REMOTE_ADDR": "6.6.6.6"})
        self.middleware = django_geoip.middleware.LocationMiddleware()

        self.get_location_patcher = patch.object(middleware, "get_location")
        self.get_location_patcher.start()
        self.get_location_mock = self.get_location_patcher.start()

    def tearDown(self):
        self.get_location_patcher.stop()

    def test_get_location_lazy(self):
        self.client.get("/")
        self.assertEqual(self.get_location_mock.call_count, 0)

    def test_process_request(self):
        self.get_location_mock.return_value = None
        self.middleware.process_request(self.request)
        self.assertEqual(self.request.location, None)
        self.assertEqual(self.get_location_mock.call_count, 1)

    @patch("django_geoip.storage.LocationCookieStorage.set")
    @patch.object(LocationCookieStorage, "__init__")
    def test_process_response_ok(self, mock, mock_location_set):
        mock.return_value = None
        base_response = HttpResponse()
        self.get_location_mock.return_value = mycity = any_model(City)
        self.middleware.process_request(self.request)
        self.middleware.process_response(self.request, base_response)
        mock.assert_called_once_with(request=self.request, response=base_response)
        # workaround simplelazyobject
        self.assertEqual(str(mycity), str(mock_location_set.call_args[1]["location"]))

    @patch("django_geoip.storage.LocationCookieStorage._do_set")
    def test_process_response_empty_request_location(self, mock_do_set):
        base_response = HttpResponse()
        self.request.location = None
        self.middleware.process_response(self.request, base_response)
        self.assertFalse(mock_do_set.called)

    @patch("django_geoip.storage.LocationCookieStorage.set")
    def test_process_response_no_request_location(self, mock_set):
        base_response = HttpResponse()
        self.middleware.process_response(self.request, base_response)
        self.assertFalse(mock_set.called)
Esempio n. 2
0
class SetLocationTest(TestCase):

    def setUp(self):
        self.client = Client()
        self.url = '/set_location/'
        self.location = any_model(MyCustomLocation)

        self.location_model_patcher = patch.object(settings, 'GEOIP_LOCATION_MODEL', 'test_app.models.MyCustomLocation')
        self.location_model = self.location_model_patcher.start()

    def tearDown(self):
        self.location_model_patcher.stop()

    def test_get(self):
        response = self.client.get(self.url, data={'location_id': self.location.id})
        self.assertFalse(settings.GEOIP_COOKIE_NAME in response.cookies)
        self.assertRedirects(response, 'http://testserver/')

    def test_get_or_post_next_url(self):
        for method in ['get', 'post']:
            method_call = getattr(self.client, method)
            response = method_call(self.url, data={'next': '/hello/',
                                                   'location_id': self.location.id})
            self.assertRedirects(response, 'http://testserver/hello/')

    def test_post_ok(self):
        response = self.client.post(self.url, data={'location_id': self.location.id})
        self.assertEqual(response.cookies[settings.GEOIP_COOKIE_NAME].value, str(self.location.id))
        self.assertRedirects(response, 'http://testserver/')

    def test_post_fake_location(self):
        response = self.client.post(self.url, data={'location_id': self.location.id+1})
        self.assertFalse(settings.GEOIP_COOKIE_NAME in response.cookies)
        self.assertRedirects(response, 'http://testserver/')
Esempio n. 3
0
class DjangoAnyClient(TestCase):
    urls = 'django_any.tests.test_client'

    def setUp(self):
        self.client = Client()

    def test_login_as_super_user(self):
        # TODO make test page which will not require is_staff like /admin
        self.assertTrue(self.client.login_as(is_superuser=True, is_staff=True))

        response = self.client.get('/admin/')
        self.assertEquals(200, response.status_code)

    def test_login_as_custom_user(self):
        user = User.objects.create_user('john', '*****@*****.**',
                                        'johnpassword')
        self.assertTrue(self.client.login_as(user=user))

    def test_login_as_failed(self):
        user = None
        self.assertRaises(AssertionError, self.client.login_as, user=user)

    def test_post_any_data(self):
        response = self.client.post_any_data('/view/')
        self.assertRedirects(response, '/view/')
Esempio n. 4
0
class DjangoAnyClient(TestCase):
    urls = 'django_any.tests.test_client'

    def setUp(self):
        self.client = Client()

    def test_login_as_super_user(self):
        self.assertTrue(self.client.login_as(is_superuser=True))

        response = self.client.get('/admin/')
        self.assertEquals(200, response.status_code)

    def test_post_any_data(self):
        response = self.client.post_any_data('/view/')
        self.assertRedirects(response, '/view/')
Esempio n. 5
0
class DjangoAnyClient(TestCase):
    urls = 'django_any.tests.test_client'

    def setUp(self):
        self.client = Client()

    def test_login_as_super_user(self):
        self.assertTrue(self.client.login_as(is_superuser=True))

        response = self.client.get('/admin/')
        self.assertEquals(200, response.status_code)

    def test_post_any_data(self):
        response = self.client.post_any_data('/view/')
        self.assertRedirects(response, '/view/')
Esempio n. 6
0
class DjangoAnyClient(TestCase):
    def setUp(self):
        self.client = Client()

    def test_login_as_super_user(self):
        # TODO make test page which will not require is_staff like /admin
        self.assertTrue(self.client.login_as(is_superuser=True, is_staff=True))

        response = self.client.get('/admin/')
        self.assertEqual(200, response.status_code)

    def test_login_as_custom_user(self):
        user = User.objects.create_user('john', '*****@*****.**', 'johnpassword')
        self.assertTrue(self.client.login_as(user=user))

    def test_login_as_failed(self):
        user = None
        self.assertRaises(AssertionError, self.client.login_as, user=user)

    def test_post_any_data(self):
        response = self.client.post_any_data('/view/')
        self.assertRedirects(response, '/view/')
Esempio n. 7
0
class DjangoAnyClient(TestCase):
    urls = 'django_any.tests.test_client'

    def setUp(self):
        self.client = Client()

    def test_login_as_super_user(self):
        self.assertTrue(self.client.login_as(is_superuser=True))

        response = self.client.get('/admin/')
        self.assertEquals(200, response.status_code)

    def test_login_as_custom_user(self):
        user = User.objects.create_user('john', '*****@*****.**', 'johnpassword')
        self.assertTrue(self.client.login_as(user=user))

    def test_login_as_failed(self):
        user = None
        self.assertRaises(AssertionError, self.client.login_as, user=user)

    def test_post_any_data(self):
        response = self.client.post_any_data('/view/')
        self.assertRedirects(response, '/view/')