Beispiel #1
0
    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'
            )
Beispiel #2
0
    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')
Beispiel #3
0
    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)
Beispiel #4
0
    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
            )
Beispiel #5
0
    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={}
            )
Beispiel #6
0
    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={})
Beispiel #7
0
    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={})
Beispiel #8
0
    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={}
            )