示例#1
0
    def test_create_from_request(self):
        note = Annotation.create_from_request(self.mockrequest)
        self.assertEqual(self.annotation_data['text'], note.text)
        self.assertEqual(self.annotation_data['quote'], note.quote)
        self.assertEqual(self.annotation_data['uri'], note.uri)
        self.assert_('ranges' in note.extra_data)
        self.assertEqual(self.annotation_data['ranges'][0]['start'],
                         note.extra_data['ranges'][0]['start'])
        self.assert_('permissions' in note.extra_data)

        # create from request with user specified
        user = get_user_model().objects.get(username='******')
        self.mockrequest.user = user
        note = Annotation.create_from_request(self.mockrequest)
        self.assertEqual(user, note.user)
示例#2
0
文件: tests.py 项目: WSULib/readux
    def test_create_from_request(self):
        note = Annotation.create_from_request(self.mockrequest)
        self.assertEqual(self.annotation_data['text'], note.text)
        self.assertEqual(self.annotation_data['quote'], note.quote)
        self.assertEqual(self.annotation_data['uri'], note.uri)
        self.assert_('ranges' in note.extra_data)
        self.assertEqual(self.annotation_data['ranges'][0]['start'],
            note.extra_data['ranges'][0]['start'])
        self.assert_('permissions' in note.extra_data)

        # create from request with user specified
        user = get_user_model().objects.get(username='******')
        self.mockrequest.user = user
        note = Annotation.create_from_request(self.mockrequest)
        self.assertEqual(user, note.user)
示例#3
0
    def test_permissions_dict(self):
        note = Annotation.create_from_request(self.mockrequest)
        note.save()
        # get some users and groups to work with
        user = get_user_model().objects.get(username='******')
        group1 = AnnotationGroup.objects.create(name='foo')
        group2 = AnnotationGroup.objects.create(name='foobar')

        perms = {
            'read':
            [user.username, group1.annotation_id, group2.annotation_id],
            'update': [user.username, group1.annotation_id],
            'delete': [user.username],
            'admin': []
        }
        # test round-trip: convert to db permissions and then back
        note.db_permissions(perms)
        self.assertEqual(perms, note.permissions_dict())

        perms = {
            'read': [user.username, group1.annotation_id],
            'update': [user.username],
            'delete': [],
            'admin': []
        }
        note.db_permissions(perms)
        self.assertEqual(perms, note.permissions_dict())

        perms = {'read': [], 'update': [], 'delete': [], 'admin': []}
        note.db_permissions(perms)
        self.assertEqual(perms, note.permissions_dict())
示例#4
0
    def test_user_permissions(self):
        # annotation user/owner automatically gets permissions
        user = get_user_model().objects.get(username='******')
        note = Annotation.create_from_request(self.mockrequest)
        note.user = user
        note.save()

        user_perms = note.user_permissions()
        self.assertEqual(4, user_perms.count())
        self.assert_(
            user_perms.filter(user=user,
                              permission__codename='view_annotation').exists())
        self.assert_(
            user_perms.filter(
                user=user, permission__codename='change_annotation').exists())
        self.assert_(
            user_perms.filter(
                user=user, permission__codename='delete_annotation').exists())
        self.assert_(
            user_perms.filter(
                user=user, permission__codename='admin_annotation').exists())

        note.save()
        # saving again shouldn't duplicate the permissions
        self.assertEqual(4, note.user_permissions().count())
示例#5
0
文件: tests.py 项目: WSULib/readux
    def test_user_permissions(self):
        # annotation user/owner automatically gets permissions
        user = get_user_model().objects.get(username='******')
        note = Annotation.create_from_request(self.mockrequest)
        note.user = user
        note.save()

        user_perms = note.user_permissions()
        self.assertEqual(4, user_perms.count())
        self.assert_(user_perms.filter(user=user,
                                       permission__codename='view_annotation')
                               .exists())
        self.assert_(user_perms.filter(user=user,
                                       permission__codename='change_annotation')
                               .exists())
        self.assert_(user_perms.filter(user=user,
                                       permission__codename='delete_annotation')
                               .exists())
        self.assert_(user_perms.filter(user=user,
                                       permission__codename='admin_annotation')
                               .exists())

        note.save()
        # saving again shouldn't duplicate the permissions
        self.assertEqual(4, note.user_permissions().count())
示例#6
0
文件: tests.py 项目: WSULib/readux
    def last_updated_time(self):
        Annotation.objects.all().delete()  # delete fixture annotations
        self.assertEqual(None, Annotation.objects.all().last_updated_time())

        note = Annotation.create_from_request(self.mockrequest)
        note.save()  # save so created/updated will get set
        self.assertEqual(note.updated,
                         Annotation.objects.all().last_updated_time())
示例#7
0
    def last_updated_time(self):
        Annotation.objects.all().delete()  # delete fixture annotations
        self.assertEqual(None, Annotation.objects.all().last_updated_time())

        note = Annotation.create_from_request(self.mockrequest)
        note.save()  # save so created/updated will get set
        self.assertEqual(note.updated,
                         Annotation.objects.all().last_updated_time())
示例#8
0
文件: tests.py 项目: WSULib/readux
    def test_last_created_time(self):
        # test custom queryset methods
        Annotation.objects.all().delete()  # delete fixture annotations
        self.assertEqual(None, Annotation.objects.all().last_created_time())

        note = Annotation.create_from_request(self.mockrequest)
        note.save()  # save so created/updated will get set
        self.assertEqual(note.created,
                         Annotation.objects.all().last_created_time())
示例#9
0
    def test_last_created_time(self):
        # test custom queryset methods
        Annotation.objects.all().delete()  # delete fixture annotations
        self.assertEqual(None, Annotation.objects.all().last_created_time())

        note = Annotation.create_from_request(self.mockrequest)
        note.save()  # save so created/updated will get set
        self.assertEqual(note.created,
                         Annotation.objects.all().last_created_time())
示例#10
0
文件: tests.py 项目: WSULib/readux
    def test_related_pages(self):
        note = Annotation.create_from_request(self.mockrequest)
        self.assertEqual(len(self.annotation_data['related_pages']),
            len(note.related_pages))
        for idx in range(len(self.annotation_data['related_pages'])):
            self.assertEqual(self.annotation_data['related_pages'][idx],
                note.related_pages[idx])
            self.assertEqual(self.annotation_data['related_pages'][idx],
                note.extra_data['related_pages'][idx])

        note = Annotation()
        self.assertEqual(None, note.related_pages)
示例#11
0
    def test_related_pages(self):
        note = Annotation.create_from_request(self.mockrequest)
        self.assertEqual(len(self.annotation_data['related_pages']),
                         len(note.related_pages))
        for idx in range(len(self.annotation_data['related_pages'])):
            self.assertEqual(self.annotation_data['related_pages'][idx],
                             note.related_pages[idx])
            self.assertEqual(self.annotation_data['related_pages'][idx],
                             note.extra_data['related_pages'][idx])

        note = Annotation()
        self.assertEqual(None, note.related_pages)
示例#12
0
文件: views.py 项目: WSULib/readux
    def post(self, request):
        'Create a new annotation via AJAX.'
        # for now, only support creation via ajax
        if request.is_ajax():
            note = Annotation.create_from_request(request)
            note.save()
            # annotator store documentation says to return 303
            # not sure why this isn't a 201 Created...
            return HttpResponseSeeOtherRedirect(note.get_absolute_url())

        else:
            return HttpResponseBadRequest(non_ajax_error_msg)
示例#13
0
文件: tests.py 项目: WSULib/readux
    def test_info(self):
        note = Annotation.create_from_request(self.mockrequest)
        note.save()  # save so created/updated will get set
        info = note.info()
        fields = ['id', 'annotator_schema_version', 'created', 'updated',
            'text', 'quote', 'uri', 'user', 'ranges', 'permissions']
        # test that expected fields are present
        for f in fields:
            self.assert_(f in info)
        # test that dates are in isoformat
        self.assertEqual(info['created'], note.created.isoformat())
        self.assertEqual(info['updated'], note.updated.isoformat())

        # associate note with a user
        user = get_user_model().objects.get(username='******')
        note.user = user
        info = note.info()
        self.assertEqual(user.username, info['user'])
示例#14
0
    def test_info(self):
        note = Annotation.create_from_request(self.mockrequest)
        note.save()  # save so created/updated will get set
        info = note.info()
        fields = [
            'id', 'annotator_schema_version', 'created', 'updated', 'text',
            'quote', 'uri', 'user', 'ranges', 'permissions'
        ]
        # test that expected fields are present
        for f in fields:
            self.assert_(f in info)
        # test that dates are in isoformat
        self.assertEqual(info['created'], note.created.isoformat())
        self.assertEqual(info['updated'], note.updated.isoformat())

        # associate note with a user
        user = get_user_model().objects.get(username='******')
        note.user = user
        info = note.info()
        self.assertEqual(user.username, info['user'])
示例#15
0
文件: tests.py 项目: WSULib/readux
    def test_permissions_dict(self):
        note = Annotation.create_from_request(self.mockrequest)
        note.save()
        # get some users and groups to work with
        user = get_user_model().objects.get(username='******')
        group1 = AnnotationGroup.objects.create(name='foo')
        group2 = AnnotationGroup.objects.create(name='foobar')

        perms = {
            'read': [user.username, group1.annotation_id,
                     group2.annotation_id],
            'update': [user.username, group1.annotation_id],
            'delete': [user.username],
            'admin': []
        }
        # test round-trip: convert to db permissions and then back
        note.db_permissions(perms)
        self.assertEqual(perms, note.permissions_dict())

        perms = {
            'read': [user.username, group1.annotation_id],
            'update': [user.username],
            'delete': [],
            'admin': []
        }
        note.db_permissions(perms)
        self.assertEqual(perms, note.permissions_dict())

        perms = {
            'read': [],
            'update': [],
            'delete': [],
            'admin': []
        }
        note.db_permissions(perms)
        self.assertEqual(perms, note.permissions_dict())
示例#16
0
    def test_db_permissions(self):
        note = Annotation.create_from_request(self.mockrequest)
        note.save()
        # get some users and groups to work with
        user = get_user_model().objects.get(username='******')
        group1 = AnnotationGroup.objects.create(name='foo')
        group2 = AnnotationGroup.objects.create(name='foobar')

        note.db_permissions({
            'read':
            [user.username, group1.annotation_id, group2.annotation_id],
            'update': [user.username, group1.annotation_id],
            'delete': [user.username]
        })

        # inspect the db permissions created

        # should be two total user permissions, one to view and one to change
        user_perms = note.user_permissions()
        self.assertEqual(3, user_perms.count())
        self.assert_(
            user_perms.filter(user=user,
                              permission__codename='view_annotation').exists())
        self.assert_(
            user_perms.filter(
                user=user, permission__codename='change_annotation').exists())
        self.assert_(
            user_perms.filter(
                user=user, permission__codename='delete_annotation').exists())

        # should be three total group permissions
        group_perms = note.group_permissions()
        self.assertEqual(3, group_perms.count())
        self.assert_(
            group_perms.filter(
                group=group1, permission__codename='view_annotation').exists())
        self.assert_(
            group_perms.filter(
                group=group1,
                permission__codename='change_annotation').exists())
        self.assert_(
            group_perms.filter(
                group=group2, permission__codename='view_annotation').exists())

        # updating the permissions for the same note should
        # remove permissions that no longer apply
        note.db_permissions({
            'read': [user.username, group1.annotation_id],
            'update': [user.username],
            'delete': []
        })

        # counts should reflect the changes
        user_perms = note.user_permissions()
        self.assertEqual(2, user_perms.count())
        group_perms = note.group_permissions()
        self.assertEqual(1, group_perms.count())

        # permissions created before should be gone
        self.assertFalse(
            user_perms.filter(
                user=user, permission__codename='delete_annotation').exists())
        self.assertFalse(
            group_perms.filter(
                group=group1,
                permission__codename='change_annotation').exists())
        self.assertFalse(
            group_perms.filter(
                group=group2, permission__codename='view_annotation').exists())

        # invalid group/user should not error
        note.db_permissions({
            'read': ['bogus', 'group:666', 'group:foo'],
            'update': ['group:__world__'],
            'delete': []
        })

        self.assertEqual(0, note.user_permissions().count())
        self.assertEqual(0, note.group_permissions().count())
示例#17
0
文件: tests.py 项目: WSULib/readux
    def test_db_permissions(self):
        note = Annotation.create_from_request(self.mockrequest)
        note.save()
        # get some users and groups to work with
        user = get_user_model().objects.get(username='******')
        group1 = AnnotationGroup.objects.create(name='foo')
        group2 = AnnotationGroup.objects.create(name='foobar')

        note.db_permissions({
            'read': [user.username, group1.annotation_id,
                     group2.annotation_id],
            'update': [user.username, group1.annotation_id],
            'delete': [user.username]
        })

        # inspect the db permissions created

        # should be two total user permissions, one to view and one to change
        user_perms = note.user_permissions()
        self.assertEqual(3, user_perms.count())
        self.assert_(user_perms.filter(user=user,
                                       permission__codename='view_annotation')
                               .exists())
        self.assert_(user_perms.filter(user=user,
                                       permission__codename='change_annotation')
                               .exists())
        self.assert_(user_perms.filter(user=user,
                                       permission__codename='delete_annotation')
                               .exists())

        # should be three total group permissions
        group_perms = note.group_permissions()
        self.assertEqual(3, group_perms.count())
        self.assert_(group_perms.filter(group=group1,
                                        permission__codename='view_annotation')
                                .exists())
        self.assert_(group_perms.filter(group=group1,
                                        permission__codename='change_annotation')
                                .exists())
        self.assert_(group_perms.filter(group=group2,
                                        permission__codename='view_annotation')
                                .exists())

        # updating the permissions for the same note should
        # remove permissions that no longer apply
        note.db_permissions({
            'read': [user.username, group1.annotation_id],
            'update': [user.username],
            'delete': []
        })

        # counts should reflect the changes
        user_perms = note.user_permissions()
        self.assertEqual(2, user_perms.count())
        group_perms = note.group_permissions()
        self.assertEqual(1, group_perms.count())

        # permissions created before should be gone
        self.assertFalse(user_perms.filter(user=user,
                                           permission__codename='delete_annotation')
                                   .exists())
        self.assertFalse(group_perms.filter(group=group1,
                                            permission__codename='change_annotation')
                                    .exists())
        self.assertFalse(group_perms.filter(group=group2,
                                            permission__codename='view_annotation')
                                    .exists())

        # invalid group/user should not error
        note.db_permissions({
            'read': ['bogus', 'group:666', 'group:foo'],
            'update': ['group:__world__'],
            'delete': []
        })

        self.assertEqual(0, note.user_permissions().count())
        self.assertEqual(0, note.group_permissions().count())