def test_ensureEditByNonAuthorForbidden(self): original_msg = MemoMessage.getMessages()[0] for user in User.objects.all(): if user.username != original_msg.author.username and not user.is_superuser: self.loginUser(user.pk) break modified_content = "The content has been modified" response = self.client.post(reverse("memo_edit_message", args=[original_msg.pk]), data={ "content": modified_content, "author": original_msg.author.pk }) self.assertEqual(response.status_code, 302, "ensureEditByNonAuthorForbidden Failed") new_msg = MemoMessage.getMessages()[0] # should be redirected when form post is successful: self.assertEquals(new_msg.content, original_msg.content, "ensureEditByNonAuthorForbidden Failed") self.assertNotEqual(modified_content, new_msg.content, "ensureEditByNonAuthorForbidden Failed") self.assertEqual(new_msg.content_timestamp, original_msg.content_timestamp, "ensureEditByNonAuthorForbidden Failed") self.assertEqual(new_msg.latitude, original_msg.latitude, "ensureEditByNonAuthorForbidden Failed") self.assertEqual(new_msg.longitude, original_msg.longitude, "ensureEditByNonAuthorForbidden Failed")
def handle(self, *args, **options): username = None if args: username = args[0] try: user = User.objects.get(username=username) args = args[1:] except: # pylint: disable=W0702 users = User.objects.all() user = users[random.randrange(0, len(users) - 1)] messageContent = " ".join(args) if not args: messageContent = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec elit erat, porttitor sed tempor id, eleifend et diam. Mauris quam libero, tristique non fringilla nec, suscipit ac mauris. Curabitur sed lacus et ipsum vestibulum suscipit sed a neque. Nullam sed ipsum vitae nisi imperdiet egestas nec a nisi. Mauris pulvinar massa in felis dapibus tempus. Donec in nulla tellus, vel venenatis augue. Duis nisi tellus, vehicula at egestas et, laoreet vitae quam. Ut ullamcorper fermentum facilisis. Sed dapibus odio a mi congue interdum dapibus urna placerat. Vestibulum faucibus metus sed justo convallis mollis. Mauris lorem mauris, blandit eget faucibus nec, feugiat non risus.".split() random.shuffle(messageContent) messageContent = " ".join(messageContent[0:random.randrange(10, 30)]) contenttimestamp = datetime.now() msg = MemoMessage() msg.content_timestamp = contenttimestamp msg.content = messageContent msg.author = user cmusvlat = 37.41029 cmusvlon = -122.05944 msg.latitude = cmusvlat + (random.random() - 0.5) * 0.02 msg.longitude = cmusvlon + (random.random() - 0.5) * 0.02 msg.accuracy = random.randrange(0, 120) msg.save() print msg
def test_submitFormToEditMessage(self): """ submit the Memo Message through the form """ original_msg = MemoMessage.getMessages()[0] original_content = original_msg.content self.loginUser(original_msg.author.pk) modified_content = "The content has been modified" response = self.client.post("/memo/messages/edit/%s" % original_msg.pk, data={ "content": modified_content, "author": original_msg.author.pk }) self.assertEqual(response.status_code, 302, "submitFormToEditMessage Failed") new_msg = MemoMessage.getMessages()[0] self.assertNotEquals(new_msg.content, original_content, "submitFormToEditMessage Failed") self.assertEqual(modified_content, new_msg.content, "submitFormToEditMessage Failed") self.assertEqual(new_msg.content_timestamp, original_msg.content_timestamp, "submitFormToEditMessage Failed") self.assertEqual(new_msg.latitude, original_msg.latitude, "submitFormToEditMessage Failed") self.assertEqual(new_msg.longitude, original_msg.longitude, "submitFormToEditMessage Failed")
def get_messages(request, author_username=None): if author_username is not None: author = get_object_or_404(User, username=author_username) else: author = None since = request.GET.get('since', None) if since is not None: since_dt = since messages = MemoMessage.getMessages(author).filter(pk__gt=since_dt) message_count = MemoMessage.getMessages(request.user).filter(pk__gt=since_dt).count() else: messages = MemoMessage.getMessages(author) message_count = MemoMessage.getMessages(request.user).count() return messages, message_count
def testEnsureMapDisplaysAllMessagesWithGeolocationByAllUsers(self): #arrange messages = MemoMessage.getMessages() assert not messages[0].has_geolocation(), "Fixtures should have a non-geolocated message as latest" #let's find the first message that has a geoloction and ensure the map is centered on it message = None for m in messages: if m.has_geolocation(): message = m break lat = message.latitude lon = message.longitude #act response = self.get_map_response() #assert self.assertContains(response, "createMap(" + str(lat) + "," + str(lon) + ")") self.assertContains(response, "<section id=\"map_canvas\"") for m in messages: if m.has_geolocation(): self.assertContains(response, "latitude:" + str(m.latitude)) else: self.assertNotContains(response, "google.maps.LatLng(" + str(m.latitude) + "," + str(m.longitude) + ")")
def testEnsureMapDisplaysAllMessagesWithGeolocationByAllUsers(self): #arrange messages = MemoMessage.getMessages() assert not messages[0].has_geolocation(), "Fixtures should have a non-geolocated message as latest" #let's find the first message that has a geoloction and ensure the map is centered on it message = None for m in messages: if m.has_geolocation(): message = m break lat = message.latitude lon = message.longitude #act response = self.get_map_response() #assert self.assertContains(response, "createMap("+str(lat)+","+str(lon)+")") self.assertContains(response, "<section id=\"map_canvas\"") for m in messages: if m.has_geolocation(): self.assertContains(response, "latitude:"+str(m.latitude)) else: self.assertNotContains(response, "google.maps.LatLng("+str(m.latitude)+","+str(m.longitude)+")")
def message_map(request): messages = MemoMessage.getMessages() return render_to_response( 'geocamMemo/map.html', dict(gc_msg=messages, first_geolocation=get_first_geolocation(messages)), context_instance=RequestContext(request))
def get_messages(request, author_username=None): if author_username is not None: author = get_object_or_404(User, username=author_username) else: author = None since = request.GET.get('since', None) if since is not None: since_dt = since messages = MemoMessage.getMessages(author).filter(pk__gt=since_dt) message_count = MemoMessage.getMessages( request.user).filter(pk__gt=since_dt).count() else: messages = MemoMessage.getMessages(author) message_count = MemoMessage.getMessages(request.user).count() return messages, message_count
def test_submitFormToEditMessage(self): """ submit the Memo Message through the form """ original_msg = MemoMessage.getMessages()[0] original_content = original_msg.content self.loginUser(original_msg.author.pk) modified_content = "The content has been modified" response = self.client.post("/memo/messages/edit/%s"% original_msg.pk, data={"content":modified_content, "author":original_msg.author.pk}) self.assertEqual(response.status_code, 302, "submitFormToEditMessage Failed") new_msg = MemoMessage.getMessages()[0] self.assertNotEquals(new_msg.content, original_content, "submitFormToEditMessage Failed") self.assertEqual(modified_content, new_msg.content, "submitFormToEditMessage Failed") self.assertEqual(new_msg.content_timestamp, original_msg.content_timestamp, "submitFormToEditMessage Failed") self.assertEqual(new_msg.latitude, original_msg.latitude, "submitFormToEditMessage Failed") self.assertEqual(new_msg.longitude, original_msg.longitude, "submitFormToEditMessage Failed")
def message_list(request, author_username=None): if author_username is not None: author = get_object_or_404(User, username=author_username) else: author = None return render_to_response('geocamMemo/message_list.html', dict(gc_msg=MemoMessage.getMessages(author), author=author), context_instance=RequestContext(request))
def test_MessagesJsonFeed(self): ordered_messages = MemoMessage.getMessages() # yes the order of this dict does matter... unfortunately stringified_msg_list = json.dumps([msg.getJson() for msg in ordered_messages ]) self.client.login(username="******", password='******') response = self.client.get(reverse("memo_message_list_all_json")) self.assertContains(response,stringified_msg_list)
def test_MessagesJsonFeed(self): ordered_messages = MemoMessage.getMessages() # yes the order of this dict does matter... unfortunately stringified_msg_list = json.dumps( [msg.getJson() for msg in ordered_messages]) self.client.login(username="******", password='******') response = self.client.get(reverse("memo_message_list_all_json")) self.assertContains(response, stringified_msg_list)
def test_ensureEditByNonAuthorForbidden(self): original_msg = MemoMessage.getMessages()[0] for user in User.objects.all(): if user.username != original_msg.author.username and not user.is_superuser: self.loginUser(user.pk) break modified_content = "The content has been modified" response = self.client.post(reverse("memo_edit_message", args=[original_msg.pk]), data={"content":modified_content, "author":original_msg.author.pk}) self.assertEqual(response.status_code, 302, "ensureEditByNonAuthorForbidden Failed") new_msg = MemoMessage.getMessages()[0] # should be redirected when form post is successful: self.assertEquals(new_msg.content, original_msg.content, "ensureEditByNonAuthorForbidden Failed") self.assertNotEqual(modified_content, new_msg.content, "ensureEditByNonAuthorForbidden Failed") self.assertEqual(new_msg.content_timestamp, original_msg.content_timestamp, "ensureEditByNonAuthorForbidden Failed") self.assertEqual(new_msg.latitude, original_msg.latitude, "ensureEditByNonAuthorForbidden Failed") self.assertEqual(new_msg.longitude, original_msg.longitude, "ensureEditByNonAuthorForbidden Failed")
def testMessageListSizeAndOrder(self): u = User.objects.all()[0] self.client.login(username=u.username, password='******') response = self.get_messages_response() displayedmessages = response.context['gc_msg'] # get the data object sent to the template displayed_message_ids = [m.pk for m in displayedmessages] messages = MemoMessage.getMessages() # descending (newest at top) message_ids = [m.pk for m in messages] self.assertEqual(displayed_message_ids, message_ids, "Order should be the same")
def testMessageListSizeAndOrder(self): u = User.objects.all()[0] self.client.login(username=u.username, password='******') response = self.get_messages_response() displayedmessages = response.context['gc_msg'] # get the data object sent to the template displayed_message_ids = [m.pk for m in displayedmessages] messages = MemoMessage.getMessages() #descending (newest at top) message_ids = [m.pk for m in messages] self.assertEqual(displayed_message_ids, message_ids, "Order should be the same")
def create_message_json(request): if request.user.is_authenticated(): if request.method == 'POST': jsonstring = request.POST["message"] messageDict = json.loads(jsonstring) messageDict["userId"] = request.user.pk message = MemoMessage.fromJson(messageDict) try: message.save() return HttpResponse("", 200) except: return HttpResponseServerError() else: return HttpResponseServerError() else: return HttpResponseForbidden()
def create_message_json(request): if request.user.is_authenticated(): if request.method == 'POST': jsonstring = request.POST["message"] messageDict = json.loads(jsonstring) messageDict["userId"] = request.user.pk message = MemoMessage.fromJson(messageDict) try: message.save() return HttpResponse("", 200) except: # pylint: disable=W0702 return HttpResponseServerError() else: return HttpResponseServerError() else: return HttpResponseForbidden()
def testEnsureFilteredMessageListSizeAndOrder(self): #arrange u = User.objects.all()[1] #descending (newest at top) messages = MemoMessage.getMessages(u) message_ids = [m.pk for m in messages] #act response = self.get_messages_response_filtered(u) #Looks at last parameter of context. Denoted by -1 displayedmessages = response.context[-1]['gc_msg'] # get the data object sent to the template displayed_message_ids = [m.pk for m in displayedmessages] #assert self.assertEqual(displayed_message_ids, message_ids, "Order should be the same")
def testEnsureFromJsonCreatesMessag(self): #arrange timestamp = datetime(2011, 04, 03, 14, 30, 00) message = dict( userId=User.objects.all()[0].pk, content="Sting!!!", contentTimestamp=time.mktime(timestamp.timetuple()) * 1000, latitude=1.1, longitude=222.2, accuracy=60) #act memoMessage = MemoMessage.fromJson(message) memoMessage.save() #assert self.assertEqual(memoMessage.author.pk, User.objects.all()[0].pk) self.assertEqual(memoMessage.content, "Sting!!!") self.assertEqual(memoMessage.content_timestamp, timestamp) self.assertEqual(memoMessage.latitude, 1.1) self.assertEqual(memoMessage.longitude, 222.2) self.assertEqual(memoMessage.accuracy, 60)
def message_list_json(request): if request.user.is_authenticated(): messages = MemoMessage.getMessages() return HttpResponse(json.dumps([msg.getJson() for msg in messages])) else: return HttpResponseForbidden()
def message_map(request): messages = MemoMessage.getMessages() return render_to_response('geocamMemo/map.html', dict(gc_msg=messages, first_geolocation=get_first_geolocation(messages)), context_instance=RequestContext(request))