def test_user_track_with_middleware(self): middleware = TrackMiddleware() request = self.request_factory.get('/event', { 'page': self.url_with_course, 'event_type': sentinel.event_type, 'event': {} }) middleware.process_request(request) try: views.user_track(request) expected_event = { 'username': '******', 'session': '', 'ip': '127.0.0.1', 'event_source': 'browser', 'event_type': str(sentinel.event_type), 'event': '{}', 'agent': '', 'page': self.url_with_course, 'time': expected_time, 'host': 'testserver', 'context': { 'course_id': 'foo/bar/baz', 'org_id': 'foo', 'user_id': '', 'path': u'/event' }, } finally: middleware.process_response(request, None) self.mock_tracker.send.assert_called_once_with(expected_event)
def test_user_track(self): request = self.request_factory.get('/event', { 'page': self.url_with_course, 'event_type': sentinel.event_type, 'event': {} }) with tracker.get_tracker().context('edx.request', {'session': sentinel.session}): views.user_track(request) expected_event = { 'username': '******', 'session': sentinel.session, 'ip': '127.0.0.1', 'event_source': 'browser', 'event_type': str(sentinel.event_type), 'event': '{}', 'agent': '', 'page': self.url_with_course, 'time': expected_time, 'host': 'testserver', 'context': { 'course_id': 'foo/bar/baz', 'org_id': 'foo', }, } self.mock_tracker.send.assert_called_once_with(expected_event)
def test_user_track_with_missing_values(self): request = self.request_factory.get('/event') with tracker.get_tracker().context('edx.request', {'session': sentinel.session}): views.user_track(request) expected_event = { 'accept_language': '', 'referer': '', 'username': '******', 'session': sentinel.session, 'ip': '127.0.0.1', 'event_source': 'browser', 'event_type': '', 'event': '', 'agent': '', 'page': '', 'time': expected_time, 'host': 'testserver', 'context': { 'course_id': '', 'org_id': '', }, } self.mock_tracker.send.assert_called_once_with(expected_event)
def test_user_track_with_missing_values(self): request = self.request_factory.get('/event') request.session = {"referer": "www.baidu.com"} with tracker.get_tracker().context('edx.request', {'session': sentinel.session}): views.user_track(request) expected_event = { 'username': '******', 'session': None, 'ip': '127.0.0.1', 'event_source': 'browser', 'event_type': '', 'event': '', 'agent': '', 'page': '', 'time': '2013/10/03 16:24:55', 'referer': '', 'origin_referer': 'www.baidu.com', 'spam': None, 'host': 'testserver', 'context': { 'course_id': '', 'org_id': '', }, } self.mock_tracker.send.assert_called_once_with(expected_event)
def test_user_track(self): request = self.request_factory.get('/event', { 'page': self.url_with_course, 'event_type': sentinel.event_type, 'event': {} }) request.user = self.user request.session = {"referer": "www.baidu.com"} with tracker.get_tracker().context('edx.request', {'session': sentinel.session}): views.user_track(request) expected_event = { 'username': '', 'session': None, 'ip': '127.0.0.1', 'event_source': 'browser', 'event_type': u'sentinel.event_type', 'event': {}, 'agent': '', 'page': unicode(self.url_with_course), 'time': '2013/10/03 16:24:55', 'host': 'testserver', 'referer': '', 'origin_referer': 'www.baidu.com', 'spam': None, 'context': { 'course_id': u'foo/bar/baz', 'org_id': u'foo', } } self.mock_tracker.send.assert_called_once_with(expected_event)
def test_user_track_with_middleware_and_processors(self): self.recreate_tracker() middleware = TrackMiddleware() payload = '{"foo": "bar"}' user_id = 1 request = self.request_factory.get( '/event', { 'page': self.url_with_course, 'event_type': sentinel.event_type, 'event': payload }) request.user = User.objects.create(pk=user_id, username=str(sentinel.username)) request.META['REMOTE_ADDR'] = '10.0.0.1' request.META['HTTP_REFERER'] = str(sentinel.referer) request.META['HTTP_ACCEPT_LANGUAGE'] = str(sentinel.accept_language) request.META['HTTP_USER_AGENT'] = str(sentinel.user_agent) request.META['SERVER_NAME'] = 'testserver2' middleware.process_request(request) try: views.user_track(request) expected_event = { 'accept_language': str(sentinel.accept_language), 'referer': str(sentinel.referer), 'username': str(sentinel.username), 'session': '', 'ip': '10.0.0.1', 'event_source': 'browser', 'event_type': str(sentinel.event_type), 'name': str(sentinel.event_type), 'event': payload, 'agent': str(sentinel.user_agent), 'page': self.url_with_course, 'time': FROZEN_TIME, 'host': 'testserver2', 'context': { 'course_id': 'foo/bar/baz', 'org_id': 'foo', 'user_id': user_id, 'path': u'/event' }, } finally: middleware.process_response(request, None) actual_event = self.get_event() assert_event_matches(expected_event, actual_event)
def test_user_track_with_middleware_and_processors(self): self.recreate_tracker() middleware = TrackMiddleware() payload = '{"foo": "bar"}' user_id = 1 request = self.request_factory.get('/event', { 'page': self.url_with_course, 'event_type': sentinel.event_type, 'event': payload }) request.user = User.objects.create(pk=user_id, username=str(sentinel.username)) request.META['REMOTE_ADDR'] = '10.0.0.1' request.META['HTTP_REFERER'] = str(sentinel.referer) request.META['HTTP_ACCEPT_LANGUAGE'] = str(sentinel.accept_language) request.META['HTTP_USER_AGENT'] = str(sentinel.user_agent) request.META['SERVER_NAME'] = 'testserver2' middleware.process_request(request) try: views.user_track(request) expected_event = { 'accept_language': str(sentinel.accept_language), 'referer': str(sentinel.referer), 'username': str(sentinel.username), 'session': '', 'ip': '10.0.0.1', 'event_source': 'browser', 'event_type': str(sentinel.event_type), 'name': str(sentinel.event_type), 'event': payload, 'agent': str(sentinel.user_agent), 'page': self.url_with_course, 'time': FROZEN_TIME, 'host': 'testserver2', 'context': { 'course_id': 'foo/bar/baz', 'org_id': 'foo', 'user_id': user_id, 'path': u'/event' }, } finally: middleware.process_response(request, None) actual_event = self.get_event() assert_event_matches(expected_event, actual_event)
def test_user_track_with_missing_values(self): request = self.request_factory.get('/event') views.user_track(request) actual_event = self.get_event() expected_event = { 'context': { 'course_id': '', 'org_id': '', 'event_source': 'browser', 'page': '', 'username': '******' }, 'data': {}, 'timestamp': FROZEN_TIME, 'name': 'unknown' } assert_event_matches(expected_event, actual_event)
def test_user_track(self): request = self.request_factory.get( "/event", {"page": self.url_with_course, "event_type": sentinel.event_type, "event": {}} ) views.user_track(request) expected_event = { "username": "******", "session": "", "ip": "127.0.0.1", "event_source": "browser", "event_type": str(sentinel.event_type), "event": "{}", "agent": "", "page": self.url_with_course, "time": expected_time, "host": "testserver", "context": {"course_id": "foo/bar/baz", "org_id": "foo"}, } self.mock_tracker.send.assert_called_once_with(expected_event)
def test_user_track_with_middleware(self): middleware = TrackMiddleware() request = self.request_factory.get('/event', { 'page': self.url_with_course, 'event_type': sentinel.event_type, 'event': {} }) request.user = self.user request.session = {"referer": "www.baidu.com"} middleware.process_request(request) try: views.user_track(request) expected_event = { 'username': '', 'session': None, 'ip': '127.0.0.1', 'event_source': 'browser', 'event_type': str(sentinel.event_type), 'event': {}, 'agent': '', 'page': self.url_with_course, 'time': '2013/10/03 16:24:55', 'host': 'testserver', 'spam': None, 'referer': '', 'origin_referer': 'www.baidu.com', 'context': { 'course_id': 'foo/bar/baz', 'org_id': 'foo', 'user_id': '', 'path': u'/event' }, } finally: middleware.process_response(request, None) self.mock_tracker.send.assert_called_once_with(expected_event)
def test_user_track_with_empty_event(self): request = self.request_factory.get('/event', { 'page': self.url_with_course, 'event_type': sentinel.event_type, 'event': '' }) views.user_track(request) actual_event = self.get_event() expected_event = { 'context': { 'course_id': 'foo/bar/baz', 'org_id': 'foo', 'event_source': 'browser', 'page': self.url_with_course, 'username': '******' }, 'data': {}, 'timestamp': FROZEN_TIME, 'name': str(sentinel.event_type) } assert_event_matches(expected_event, actual_event)