def test_basic_pageview_failure(self, logger, rpost, aw): def mocked_queue(function, data, headers, success_cb, failure_cb): function(data, headers, success_cb, failure_cb) aw().queue.side_effect = mocked_queue errors_raised = [] def failing_post(*a, **kw): try: raise NameError('oh no!') except Exception as exp: errors_raised.append(exp) raise rpost.side_effect = failing_post request = RequestFactory().get('/some/page') request.user = AnonymousUser() with self.settings(GOOGLE_ANALYTICS_ID='XYZ-123'): track_pageview(request, 'Test page') # Note that even those the mocked requests.post method # did raise an error, we're still here and things are still # working. assert errors_raised logger.exception.assert_called_with( 'Failed to send GA page tracking' )
def test_basic_pageview_failure(self, logger, rpost, aw): def mocked_queue(function, data, headers, success_cb, failure_cb): function(data, headers, success_cb, failure_cb) aw().queue.side_effect = mocked_queue errors_raised = [] def failing_post(*a, **kw): try: raise NameError('oh no!') except Exception as exp: errors_raised.append(exp) raise rpost.side_effect = failing_post request = RequestFactory().get('/some/page') request.user = AnonymousUser() with self.settings(GOOGLE_ANALYTICS_ID='XYZ-123'): track_pageview(request, 'Test page') # Note that even those the mocked requests.post method # did raise an error, we're still here and things are still # working. assert errors_raised logger.exception.assert_called_with( 'Failed to send GA page tracking')
def test_basic_pageview_strange_errors(self, logger, aw): def mocked_queue(function, data, headers, success_cb, failure_cb): raise Exception('crap') aw().queue.side_effect = mocked_queue request = RequestFactory().get('/some/page') request.user = AnonymousUser() with self.settings(GOOGLE_ANALYTICS_ID='XYZ-123'): track_pageview(request, 'Test page') # ANY error inside the queue will get caught logger.error.assert_called_with( 'Failed for unknown reason to send to GA', exc_info=True)
def test_basic_pageview_strange_errors(self, logger, aw): def mocked_queue(function, data, headers, success_cb, failure_cb): raise Exception('crap') aw().queue.side_effect = mocked_queue request = RequestFactory().get('/some/page') request.user = AnonymousUser() with self.settings(GOOGLE_ANALYTICS_ID='XYZ-123'): track_pageview(request, 'Test page') # ANY error inside the queue will get caught logger.error.assert_called_with( 'Failed for unknown reason to send to GA', exc_info=True )
def test_basic_pageview(self, logger, rpost, aw): queues_started = [] def mocked_queue(function, data, headers, success_cb, failure_cb): queues_started.append(data) function(data, headers, success_cb, failure_cb) aw().queue.side_effect = mocked_queue request = RequestFactory().get('/some/page') request.user = AnonymousUser() assert not settings.GOOGLE_ANALYTICS_ID # the default track_pageview(request, 'Test page') assert not queues_started with self.settings(GOOGLE_ANALYTICS_ID='XYZ-123'): # The reason for setting a client_id value is because if we # don't set it, it'll be a randomly generated UUID string # which we can't know. Then it becomes really hard to do # some_mocked_thing.assert_called_with(...) track_pageview(request, 'Test page', client_id='mycid') assert queues_started params = { 'v': 1, 't': 'pageview', 'cid': 'mycid', 'dh': 'testserver', 'tid': 'XYZ-123', 'dt': 'Test page', 'ds': 'web', 'dp': '/some/page', 'dl': 'http://testserver/some/page', } logger.info.assert_called_with( 'Successfully attempted to send pageview to Google ' 'Analytics (%s)', params ) rpost.assert_called_with( settings.GOOGLE_ANALYTICS_API_URL, verify=defaults.CA_BUNDLE, data=params, timeout=settings.GOOGLE_ANALYTICS_API_TIMEOUT, headers={} ) # Now test with a few more parameters and a user that is not # anonymous. request = RequestFactory(**{ 'REMOTE_ADDR': '123.123.123.123', 'HTTP_USER_AGENT': 'testingthings 1.0', }).get('/other/page?foo=bar') user = User.objects.create_user('koblaikahn') request.user = user with self.settings(GOOGLE_ANALYTICS_ID='XYZ-123'): track_pageview(request, 'Test page', client_id='mycid') params = { 'v': 1, 't': 'pageview', 'cid': 'mycid', 'dh': 'testserver', 'tid': 'XYZ-123', 'dt': 'Test page', 'ds': 'web', 'dp': '/other/page', 'uid': str(user.id), 'ua': 'testingthings 1.0', 'dl': 'http://testserver/other/page?foo=bar', } logger.info.assert_called_with( 'Successfully attempted to send pageview to Google ' 'Analytics (%s)', params ) rpost.assert_called_with( settings.GOOGLE_ANALYTICS_API_URL, verify=defaults.CA_BUNDLE, data=params, timeout=settings.GOOGLE_ANALYTICS_API_TIMEOUT, headers={} )
def test_basic_pageview(self, logger, rpost, aw): queues_started = [] def mocked_queue(function, data, headers, success_cb, failure_cb): queues_started.append(data) function(data, headers, success_cb, failure_cb) aw().queue.side_effect = mocked_queue request = RequestFactory().get('/some/page') request.user = AnonymousUser() assert not settings.GOOGLE_ANALYTICS_ID # the default track_pageview(request, 'Test page') assert not queues_started with self.settings(GOOGLE_ANALYTICS_ID='XYZ-123'): # The reason for setting a client_id value is because if we # don't set it, it'll be a randomly generated UUID string # which we can't know. Then it becomes really hard to do # some_mocked_thing.assert_called_with(...) track_pageview(request, 'Test page', client_id='mycid') assert queues_started params = { 'v': 1, 't': 'pageview', 'cid': 'mycid', 'dh': 'testserver', 'tid': 'XYZ-123', 'dt': 'Test page', 'ds': 'web', 'dp': '/some/page', 'dl': 'http://testserver/some/page', } logger.info.assert_called_with( 'Successfully attempted to send pageview to Google ' 'Analytics (%s)', params) rpost.assert_called_with( settings.GOOGLE_ANALYTICS_API_URL, verify=defaults.CA_BUNDLE, data=params, timeout=settings.GOOGLE_ANALYTICS_API_TIMEOUT, headers={}) # Now test with a few more parameters and a user that is not # anonymous. request = RequestFactory( **{ 'REMOTE_ADDR': '123.123.123.123', 'HTTP_USER_AGENT': 'testingthings 1.0', }).get('/other/page?foo=bar') user = User.objects.create_user('koblaikahn') request.user = user with self.settings(GOOGLE_ANALYTICS_ID='XYZ-123'): track_pageview(request, 'Test page', client_id='mycid') params = { 'v': 1, 't': 'pageview', 'cid': 'mycid', 'dh': 'testserver', 'tid': 'XYZ-123', 'dt': 'Test page', 'ds': 'web', 'dp': '/other/page', 'uid': str(user.id), 'ua': 'testingthings 1.0', 'dl': 'http://testserver/other/page?foo=bar', } logger.info.assert_called_with( 'Successfully attempted to send pageview to Google ' 'Analytics (%s)', params) rpost.assert_called_with( settings.GOOGLE_ANALYTICS_API_URL, verify=defaults.CA_BUNDLE, data=params, timeout=settings.GOOGLE_ANALYTICS_API_TIMEOUT, headers={})
def test_basic_pageview(self, logger, rpost, aw): queues_started = [] def mocked_queue(function, url, data, headers, success_cb, failure_cb): queues_started.append(data) function(url, data, headers, success_cb, failure_cb) aw().queue.side_effect = mocked_queue request = RequestFactory().get('/some/page') request.user = AnonymousUser() assert not settings.GOOGLE_ANALYTICS_ID # the default track_pageview(request, 'Test page') assert not queues_started with self.settings(GOOGLE_ANALYTICS_ID='XYZ-123'): track_pageview(request, 'Test page') assert queues_started params = { 'v': 1, 't': 'pageview', 'cid': EXPECTED_CID, 'dh': 'testserver', 'tid': 'XYZ-123', 'dt': 'Test page', 'ds': 'web', 'dp': '/some/page', 'dl': 'http://testserver/some/page', } logger.info.assert_called_with( 'Successfully attempted to send pageview to Google ' 'Analytics (%s)', params) rpost.assert_called_with( settings.GOOGLE_ANALYTICS_API_URL, verify=False, data=params, timeout=settings.GOOGLE_ANALYTICS_API_TIMEOUT, headers={}) # Now test with a few more parameters and a user that is not # anonymous. request = RequestFactory( **{ 'REMOTE_ADDR': '123.123.123.123', 'HTTP_USER_AGENT': 'testingthings 1.0', }).get('/other/page?foo=bar') user = User.objects.create_user('koblaikahn') request.user = user with self.settings(GOOGLE_ANALYTICS_ID='XYZ-123'): track_pageview(request, 'Test page') params = { 'v': 1, 't': 'pageview', 'cid': EXPECTED_CID, 'dh': 'testserver', 'tid': 'XYZ-123', 'dt': 'Test page', 'ds': 'web', 'dp': '/other/page', 'dl': 'http://testserver/other/page?foo=bar', } logger.info.assert_called_with( 'Successfully attempted to send pageview to Google ' 'Analytics (%s)', params) rpost.assert_called_with( settings.GOOGLE_ANALYTICS_API_URL, verify=False, data=params, timeout=settings.GOOGLE_ANALYTICS_API_TIMEOUT, headers={})
def test_basic_pageview(self, logger, rpost, aw): queues_started = [] def mocked_queue(function, url, data, headers, success_cb, failure_cb): queues_started.append(data) function(url, data, headers, success_cb, failure_cb) aw().queue.side_effect = mocked_queue request = RequestFactory().get('/some/page') request.user = AnonymousUser() assert not settings.GOOGLE_ANALYTICS_ID # the default track_pageview(request, 'Test page') assert not queues_started with self.settings(GOOGLE_ANALYTICS_ID='XYZ-123'): track_pageview(request, 'Test page') assert queues_started params = { 'v': 1, 't': 'pageview', 'cid': EXPECTED_CID, 'dh': 'testserver', 'tid': 'XYZ-123', 'dt': 'Test page', 'ds': 'web', 'dp': '/some/page', 'dl': 'http://testserver/some/page', } logger.info.assert_called_with( 'Successfully attempted to send pageview to Google ' 'Analytics (%s)', params ) rpost.assert_called_with( settings.GOOGLE_ANALYTICS_API_URL, verify=False, data=params, timeout=settings.GOOGLE_ANALYTICS_API_TIMEOUT, headers={} ) # Now test with a few more parameters and a user that is not # anonymous. request = RequestFactory(**{ 'REMOTE_ADDR': '123.123.123.123', 'HTTP_USER_AGENT': 'testingthings 1.0', }).get('/other/page?foo=bar') user = User.objects.create_user('koblaikahn') request.user = user with self.settings(GOOGLE_ANALYTICS_ID='XYZ-123'): track_pageview(request, 'Test page') params = { 'v': 1, 't': 'pageview', 'cid': EXPECTED_CID, 'dh': 'testserver', 'tid': 'XYZ-123', 'dt': 'Test page', 'ds': 'web', 'dp': '/other/page', 'dl': 'http://testserver/other/page?foo=bar', } logger.info.assert_called_with( 'Successfully attempted to send pageview to Google ' 'Analytics (%s)', params ) rpost.assert_called_with( settings.GOOGLE_ANALYTICS_API_URL, verify=False, data=params, timeout=settings.GOOGLE_ANALYTICS_API_TIMEOUT, headers={} )