def test_throws_on_error(self, post): tracker = TrackerMiddleware("foo") response = MagicMock() response.status_code = 500 response.text = "bar" post.side_effect = [response] with pytest.raises(Exception): result = tracker._send({})
def setup_method(self, method): with override_settings(**default_settings): self.tracker = TrackerMiddleware("foo") self.tracker._send = MagicMock() self.tracker._is_ignored_path = MagicMock() self.tracker._is_ignored_path.return_value = False self.request = MagicMock() self.request.headers = {}
def test_returns_list_of_touples(self): tracker = TrackerMiddleware("foo") result = tracker._parse_accept_language( "en-GB,en-US;q=0.9,en;q=0.8") assert result == [ ("en-GB", "1"), ("en-US", "0.9"), ("en", "0.8"), ] assert tracker._parse_accept_language() == [] assert tracker._parse_accept_language(None) == []
def test_returns_response(self, post): tracker = TrackerMiddleware("foo") response = MagicMock() response.status_code = 202 response.json.side_effect = ["foo"] post.side_effect = [response] result = tracker._send({"bar": "baz"}) post.assert_called_once_with("foo/domains/123/records", json={"bar": "baz"}) assert result == "foo"
class TestProcessingRequest: def setup_method(self, method): with override_settings(**default_settings): self.tracker = TrackerMiddleware("foo") self.tracker._send = MagicMock() self.tracker._is_ignored_path = MagicMock() self.tracker._is_ignored_path.return_value = False self.request = MagicMock() self.request.headers = {} def test_skips_when_dnt(self): self.request.headers = {"DNT": "1"} self.tracker.process_request(self.request) self.tracker._send.assert_not_called() def test_skips_when_ignored(self): self.tracker._is_ignored_path.return_value = True self.request.get_full_path.return_value = "/foo" self.tracker.process_request(self.request) self.tracker._is_ignored_path.assert_called_once_with("/foo") self.tracker._send.assert_not_called() def test_sends_data(self): self.request.headers = { "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Mobile/15E148 Safari/604.1", "Referer": "http://example.com", "Accept-Language": "en-GB,en-US;q=0.9,en;q=0.8", } self.request.build_absolute_uri.return_value = "http://foo.bar" self.tracker._send.side_effect = Exception() self.tracker.process_request(self.request) self.tracker._send.assert_called_once_with({ "siteLocation": "http://foo.bar", "siteReferrer": "http://example.com", "siteLanguage": "en", "deviceName": "iPhone", "deviceManufacturer": "Apple", "osName": "iOS", "osVersion": "13.3.1", "browserName": "Mobile Safari", "browserVersion": "13.0.5", })
def test_returns_bool(self): tracker = TrackerMiddleware("foo") assert tracker._is_ignored_path("/foo") == False with patch("ackee.middleware.settings.ACKEE_IGNORED_PATHS", "^/bar"): assert tracker._is_ignored_path("/bar") == True
def test_returns_first_language(self): tracker = TrackerMiddleware("foo") assert (tracker._sanitize_accept_language( "en-GB,en-US;q=0.9,en;q=0.8") == "en")
def test_returns_none(self): tracker = TrackerMiddleware("foo") assert tracker._sanitize_accept_language("") == None
def test_throws_when_no_ignored_paths(self, settings): del settings.ACKEE_IGNORED_PATHS with pytest.raises(ImproperlyConfigured): TrackerMiddleware("foo")
def test_throws_when_no_domain_id(self, settings): del settings.ACKEE_DOMAIN_ID with pytest.raises(ImproperlyConfigured): TrackerMiddleware("foo")
def test_throws_when_no_server(self, settings): del settings.ACKEE_SERVER with pytest.raises(ImproperlyConfigured): TrackerMiddleware("foo")