Пример #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))