示例#1
0
    def test_incorrect_uri(self):
        self.assertEqual(Note.objects.count(), 2)
        nr = NoteResource()

        # For this test, we need a ``User`` with the same PK as a ``Note``.
        note_1 = Note.objects.latest('created')
        User.objects.create(id=note_1.pk,
                            username='******',
                            email='*****@*****.**',
                            password='******')

        data = {
            # This URI is flat-out wrong (wrong resource).
            # This should cause the request to fail.
            'author': '/v1/notes/{0}/'.format(note_1.pk),
            'title': 'Nopenopenope',
            'slug': 'invalid-request',
            'content': "This shouldn't work.",
            'is_active': True,
        }

        request = MockRequest()
        request.GET = {'format': 'json'}
        request.method = 'POST'
        request.set_body(json.dumps(data))

        with self.assertRaises(NotFound) as cm:
            nr.post_list(request)

        self.assertEqual(
            str(cm.exception),
            "An incorrect URL was provided '/v1/notes/2/' for the 'UserResource' resource."
        )
        self.assertEqual(Note.objects.count(), 2)
示例#2
0
    def test_patch_detail_dont_update_related_without_permission(self):
        """
        When fields are excluded the value of the field should not be set to a
        default value if updated by bmga.
        """
        resource = NoteResource()
        note = Note.objects.create(author_id=1)
        user = User.objects.get(pk=1)

        self.assertEqual(user.password, 'this_is_not_a_valid_password_string')

        request = MockRequest()
        request.GET = {'format': 'json'}
        request.method = 'PATCH'
        request.path = "/v1/note/%(pk)s/" % {'pk': note.pk}

        data = {
            'author': {
                'id': 1,
                'username': '******',
                'email': '*****@*****.**',
            }
        }

        request.set_body(json.dumps(data))

        resp = resource.patch_detail(request, pk=note.pk)

        self.assertEqual(resp.status_code, 202)

        user2 = User.objects.get(pk=1)

        self.assertEqual(user2.email, '*****@*****.**')
        self.assertEqual(user2.password, 'this_is_not_a_valid_password_string')
示例#3
0
    def test_incorrect_uri(self):
        self.assertEqual(Note.objects.count(), 2)
        nr = NoteResource()

        # For this test, we need a ``User`` with the same PK as a ``Note``.
        note_1 = Note.objects.latest('created')
        User.objects.create(
            id=note_1.pk,
            username='******',
            email='*****@*****.**',
            password='******'
        )

        data = {
            # This URI is flat-out wrong (wrong resource).
            # This should cause the request to fail.
            'author': '/v1/notes/{0}/'.format(
                note_1.pk
            ),
            'title': 'Nopenopenope',
            'slug': 'invalid-request',
            'content': "This shouldn't work.",
            'is_active': True,
        }

        request = MockRequest()
        request.GET = {'format': 'json'}
        request.method = 'POST'
        request.set_body(json.dumps(data))

        with self.assertRaises(NotFound) as cm:
            nr.post_list(request)

        self.assertEqual(str(cm.exception), "An incorrect URL was provided '/v1/notes/2/' for the 'UserResource' resource.")
        self.assertEqual(Note.objects.count(), 2)
示例#4
0
    def test_patch_detail_dont_update_related_without_permission(self):
        """
        When fields are excluded the value of the field should not be set to a
        default value if updated by tastypie.
        """
        resource = NoteResource()
        note = Note.objects.create(author_id=1)
        user = User.objects.get(pk=1)

        self.assertEqual(user.password, 'this_is_not_a_valid_password_string')

        request = MockRequest()
        request.GET = {'format': 'json'}
        request.method = 'PATCH'
        request.path = "/v1/note/%(pk)s/" % {'pk': note.pk}

        data = {
            'author': {
                'id': 1,
                'username': '******',
                'email': '*****@*****.**',
            }
        }

        request.set_body(json.dumps(data))

        resp = resource.patch_detail(request, pk=note.pk)

        self.assertEqual(resp.status_code, 202)

        user2 = User.objects.get(pk=1)

        self.assertEqual(user2.email, '*****@*****.**')
        self.assertEqual(user2.password, 'this_is_not_a_valid_password_string')
示例#5
0
    def test_incorrect_uri(self):
        self.assertEqual(Note.objects.count(), 2)
        nr = NoteResource()

        # For this test, we need a ``User`` with the same PK as a ``Note``.
        note_1 = Note.objects.latest("created")
        user_2 = User.objects.create(id=note_1.pk, username="******", email="*****@*****.**", password="******")

        data = {
            # This URI is flat-out wrong (wrong resource).
            # This should cause the request to fail.
            "author": "/v1/notes/{0}/".format(note_1.pk),
            "title": "Nopenopenope",
            "slug": "invalid-request",
            "content": "This shouldn't work.",
            "is_active": True,
        }

        request = MockRequest()
        request.GET = {"format": "json"}
        request.method = "POST"
        request.set_body(json.dumps(data))

        with self.assertRaises(NotFound) as cm:
            nr.post_list(request)

        self.assertEqual(
            str(cm.exception), "An incorrect URL was provided '/v1/notes/2/' for the 'UserResource' resource."
        )
        self.assertEqual(Note.objects.count(), 2)
示例#6
0
    def test_patch_to_one_with_excluded_fields(self):
        """When fields are excluded the value of the field should not be set to a default value if updated by tastypie"""
        resource = NoteResource()
        note = Note.objects.create(author_id=1)
        user = User.objects.get(pk=1)
        self.assertEqual(user.password, 'this_is_not_a_valid_password_string')
        request = HttpRequest()
        request.GET = {'format': 'json'}
        request.method = 'PATCH'
        request.path = "/v1/note/%(pk)s/" % {'pk': note.pk}
        request._read_started = False

        data = {
            'author': {
                'id': 1,
                'username': '******',
                'email': '*****@*****.**',
            }
        }

        setattr(request, self.body_attr, json.dumps(data))
        resp = resource.patch_detail(request, pk=note.pk)
        user2 = User.objects.get(pk=1)
        self.assertEqual(user2.email, '*****@*****.**')
        self.assertEqual(user2.password, 'this_is_not_a_valid_password_string')
示例#7
0
    def test_patch_to_one_with_excluded_fields(self):
        """When fields are excluded the value of the field should not be set to a default value if updated by tastypie"""
        resource = NoteResource()
        note = Note.objects.create(author_id=1)
        user = User.objects.get(pk=1)
        self.assertEqual(user.password, "this_is_not_a_valid_password_string")
        request = HttpRequest()
        request.GET = {"format": "json"}
        request.method = "PATCH"
        request.path = "/v1/note/%(pk)s/" % {"pk": note.pk}
        request._read_started = False

        data = {"author": {"id": 1, "username": "******", "email": "*****@*****.**"}}

        setattr(request, self.body_attr, json.dumps(data))
        resp = resource.patch_detail(request, pk=note.pk)
        user2 = User.objects.get(pk=1)
        self.assertEqual(user2.email, "*****@*****.**")
        self.assertEqual(user2.password, "this_is_not_a_valid_password_string")
from tastypie.api import Api

from related_resource.api.resources import NoteResource, UserResource,\
    CategoryResource, TagResource, TaggableTagResource, TaggableResource,\
    ExtraDataResource, FreshNoteResource, FreshMediaBitResource,\
    ForumResource, CompanyResource, ProductResource, AddressResource,\
    PersonResource, DogResource, DogHouseResource, BoneResource,\
    LabelResource, PostResource, OrderResource, OrderItemResource,\
    NoteWithUpdatableUserResource, ContactResource, ContactGroupResource


api = Api(api_name='v1')
api.register(NoteResource(), canonical=True)
api.register(NoteWithUpdatableUserResource(), canonical=True)
api.register(UserResource(), canonical=True)
api.register(CategoryResource(), canonical=True)
api.register(TagResource(), canonical=True)
api.register(TaggableResource(), canonical=True)
api.register(TaggableTagResource(), canonical=True)
api.register(ExtraDataResource(), canonical=True)
api.register(FreshNoteResource(), canonical=True)
api.register(FreshMediaBitResource(), canonical=True)
api.register(ForumResource(), canonical=True)
api.register(CompanyResource(), canonical=True)
api.register(ProductResource(), canonical=True)
api.register(AddressResource(), canonical=True)
api.register(PersonResource(), canonical=True)
api.register(DogResource(), canonical=True)
api.register(DogHouseResource(), canonical=True)
api.register(BoneResource(), canonical=True)
api.register(PostResource(), canonical=True)