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)
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')
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)