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)
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/')
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/')
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/')
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/')
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/')