示例#1
0
    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")
示例#2
0
    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
示例#3
0
    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")
示例#4
0
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
示例#5
0
    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) + ")")
示例#6
0
    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)+")")
示例#7
0
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))
示例#8
0
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
示例#9
0
 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")                                            
示例#10
0
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))
示例#11
0
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))
示例#12
0
    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)
示例#13
0
    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)
示例#14
0
    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")   
示例#15
0
    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")
示例#16
0
    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")
示例#17
0
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()
示例#18
0
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()
示例#19
0
    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")
示例#20
0
    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")
示例#21
0
    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)
示例#22
0
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()
示例#23
0
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()
示例#24
0
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))