예제 #1
0
    def test_post__invalid_params(self):
        area = self.create_area(x2=50, y2=50)
        view = AjaxUpdateAreaView()
        view.kwargs = {
            'storage_path': area.storage_path,
            'pk': area.pk,
        }

        params = {
            'x1': 0,
            'y1': 0,
            'x2': 50,
            'y2': 50,
            'priority': 3,
        }
        user = self.create_user(permissions=['daguerre.change_area'])
        self.assertTrue(user.has_perm('daguerre.change_area'))
        for key in params:
            params_copy = params.copy()
            params_copy[key] = 'hi'
            request = self.factory.post('/', params_copy,
                                        HTTP_X_REQUESTED_WITH='XMLHttpRequest')
            request.user = user
            with self.assertNumQueries(0):
                self.assertRaises(Http404, view.post, request)
예제 #2
0
    def test_post__add(self):
        area = self.create_area(x2=50, y2=50)
        self.assertEqual(Area.objects.count(), 1)
        view = AjaxUpdateAreaView()
        view.kwargs = {
            'storage_path': area.storage_path,
            'pk': None,
        }

        params = {
            'x1': 50,
            'y1': 50,
            'x2': 100,
            'y2': 100,
            'priority': 1,
            'name': 'fun'
        }
        request = self.factory.post('/', params,
                                    HTTP_X_REQUESTED_WITH='XMLHttpRequest')
        request.user = self.create_user(permissions=['daguerre.change_area',
                                                     'daguerre.add_area'])
        self.assertTrue(request.user.has_perm('daguerre.change_area'))
        self.assertTrue(request.user.has_perm('daguerre.add_area'))
        with self.assertNumQueries(3):
            response = view.post(request)

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response['Content-Type'], "application/json")
        self.assertEqual(Area.objects.count(), 2)
        data = json.loads(force_text(response.content))
        new_area = Area.objects.exclude(pk=area.pk).get()
        self.assertEqual(data, new_area.serialize())
        del data['storage_path']
        del data['id']
        self.assertEqual(data, params)
예제 #3
0
    def test_post__invalid_params(self):
        area = self.create_area(x2=50, y2=50)
        view = AjaxUpdateAreaView()
        view.kwargs = {
            'storage_path': area.storage_path,
            'pk': area.pk,
        }

        params = {
            'x1': 0,
            'y1': 0,
            'x2': 50,
            'y2': 50,
            'priority': 3,
        }
        user = self.create_user(permissions=['daguerre.change_area'])
        self.assertTrue(user.has_perm('daguerre.change_area'))
        for key in params:
            params_copy = params.copy()
            params_copy[key] = 'hi'
            request = self.factory.post('/',
                                        params_copy,
                                        HTTP_X_REQUESTED_WITH='XMLHttpRequest')
            request.user = user
            with self.assertNumQueries(0):
                self.assertRaises(Http404, view.post, request)
예제 #4
0
    def test_post__add__no_perms(self):
        area = self.create_area(x2=50, y2=50)
        self.assertEqual(Area.objects.count(), 1)
        view = AjaxUpdateAreaView()
        view.kwargs = {
            'storage_path': area.storage_path,
            'pk': None,
        }

        params = {
            'x1': 50,
            'y1': 50,
            'x2': 100,
            'y2': 100,
            'priority': 1,
            'name': 'fun'
        }
        request = self.factory.post('/', params,
                                    HTTP_X_REQUESTED_WITH='XMLHttpRequest')
        request.user = self.create_user(permissions=['daguerre.change_area'])
        self.assertTrue(request.user.has_perm('daguerre.change_area'))
        with self.assertNumQueries(1):
            response = view.post(request)

        self.assertEqual(response.status_code, 403)
        self.assertEqual(Area.objects.count(), 1)
        self.assertEqual(force_text(response.content), '')
예제 #5
0
    def test_post__add__no_perms(self):
        area = self.create_area(x2=50, y2=50)
        self.assertEqual(Area.objects.count(), 1)
        view = AjaxUpdateAreaView()
        view.kwargs = {
            'storage_path': area.storage_path,
            'pk': None,
        }

        params = {
            'x1': 50,
            'y1': 50,
            'x2': 100,
            'y2': 100,
            'priority': 1,
            'name': 'fun'
        }
        request = self.factory.post('/',
                                    params,
                                    HTTP_X_REQUESTED_WITH='XMLHttpRequest')
        request.user = self.create_user(permissions=['daguerre.change_area'])
        self.assertTrue(request.user.has_perm('daguerre.change_area'))
        with self.assertNumQueries(1):
            response = view.post(request)

        self.assertEqual(response.status_code, 403)
        self.assertEqual(Area.objects.count(), 1)
        self.assertEqual(force_text(response.content), '')
예제 #6
0
	def test_post__no_change_perms(self):
		view = AjaxUpdateAreaView()
		request = self.factory.post('/', HTTP_X_REQUESTED_WITH='XMLHttpRequest')
		request.user = AnonymousUser()
		self.assertFalse(request.user.has_perm('daguerre.change_area'))
		with self.assertNumQueries(0):
			response = view.post(request)

		self.assertEqual(response.status_code, 403)
		self.assertEqual(response.content, '')
예제 #7
0
 def test_get__pk__wrong(self):
     area = self.create_area(x2=50, y2=50)
     view = AjaxUpdateAreaView()
     view.kwargs = {
         'storage_path': area.storage_path,
         'pk': area.pk + 1,
     }
     request = self.factory.get('/', HTTP_X_REQUESTED_WITH='XMLHttpRequest')
     with self.assertNumQueries(1):
         self.assertRaises(Http404, view.get, request)
예제 #8
0
 def test_get__pk__wrong(self):
     area = self.create_area(x2=50, y2=50)
     view = AjaxUpdateAreaView()
     view.kwargs = {
         'storage_path': area.storage_path,
         'pk': area.pk + 1,
     }
     request = self.factory.get('/', HTTP_X_REQUESTED_WITH='XMLHttpRequest')
     with self.assertNumQueries(1):
         self.assertRaises(Http404, view.get, request)
예제 #9
0
    def test_post__no_change_perms(self):
        view = AjaxUpdateAreaView()
        request = self.factory.post('/',
                                    HTTP_X_REQUESTED_WITH='XMLHttpRequest')
        request.user = AnonymousUser()
        self.assertFalse(request.user.has_perm('daguerre.change_area'))
        with self.assertNumQueries(0):
            response = view.post(request)

        self.assertEqual(response.status_code, 403)
        self.assertEqual(force_text(response.content), '')
예제 #10
0
    def test_get__no_pk(self):
        area1 = self.create_area(x2=50, y2=50)
        area2 = self.create_area(x2=50, y2=50, storage_path=area1.storage_path)
        view = AjaxUpdateAreaView()
        view.kwargs = {'storage_path': area1.storage_path, 'pk': None}
        request = self.factory.get('/', HTTP_X_REQUESTED_WITH='XMLHttpRequest')
        with self.assertNumQueries(1):
            response = view.get(request)

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response['Content-Type'], "application/json")
        data = json.loads(force_text(response.content))
        self.assertEqual(data, [area1.serialize(), area2.serialize()])
예제 #11
0
    def test_get__pk(self):
        area = self.create_area(x2=50, y2=50)
        view = AjaxUpdateAreaView()
        view.kwargs = {
            'storage_path': area.storage_path,
            'pk': area.pk,
        }
        request = self.factory.get('/', HTTP_X_REQUESTED_WITH='XMLHttpRequest')
        with self.assertNumQueries(1):
            response = view.get(request)

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response['Content-Type'], "application/json")
        data = json.loads(force_text(response.content))
        self.assertEqual(data, area.serialize())
예제 #12
0
	def test_delete__no_pk(self):
		area = self.create_area(x2=50, y2=50)
		self.assertEqual(Area.objects.count(), 1)
		view = AjaxUpdateAreaView()
		view.kwargs = {
			'storage_path': area.storage_path,
			'pk': None,
		}

		request = self.factory.delete('/', HTTP_X_REQUESTED_WITH='XMLHttpRequest')
		request.user = self.create_user(permissions=['daguerre.delete_area'])
		self.assertTrue(request.user.has_perm('daguerre.delete_area'))
		with self.assertNumQueries(0):
			self.assertRaises(Http404, view.delete, request)

		self.assertEqual(Area.objects.count(), 1)
예제 #13
0
    def test_delete__no_pk(self):
        area = self.create_area(x2=50, y2=50)
        self.assertEqual(Area.objects.count(), 1)
        view = AjaxUpdateAreaView()
        view.kwargs = {
            'storage_path': area.storage_path,
            'pk': None,
        }

        request = self.factory.delete('/',
                                      HTTP_X_REQUESTED_WITH='XMLHttpRequest')
        request.user = self.create_user(permissions=['daguerre.delete_area'])
        self.assertTrue(request.user.has_perm('daguerre.delete_area'))
        with self.assertNumQueries(0):
            self.assertRaises(Http404, view.delete, request)

        self.assertEqual(Area.objects.count(), 1)
예제 #14
0
	def test_delete(self):
		area = self.create_area(x2=50, y2=50)
		self.assertEqual(Area.objects.count(), 1)
		view = AjaxUpdateAreaView()
		view.kwargs = {
			'storage_path': area.storage_path,
			'pk': area.pk,
		}

		request = self.factory.delete('/', HTTP_X_REQUESTED_WITH='XMLHttpRequest')
		request.user = self.create_user(permissions=['daguerre.delete_area'])
		self.assertTrue(request.user.has_perm('daguerre.delete_area'))
		with self.assertNumQueries(3):
			response = view.delete(request)

		self.assertEqual(response.status_code, 200)
		self.assertEqual(response.content, '')
		self.assertEqual(Area.objects.count(), 0)
예제 #15
0
	def test_delete__no_perms(self):
		area = self.create_area(x2=50, y2=50)
		self.assertEqual(Area.objects.count(), 1)
		view = AjaxUpdateAreaView()
		view.kwargs = {
			'storage_path': area.storage_path,
			'pk': area.pk,
		}

		request = self.factory.delete('/', HTTP_X_REQUESTED_WITH='XMLHttpRequest')
		request.user = AnonymousUser()
		self.assertFalse(request.user.has_perm('daguerre.delete_area'))
		with self.assertNumQueries(0):
			response = view.delete(request)

		self.assertEqual(response.status_code, 403)
		self.assertEqual(Area.objects.count(), 1)
		self.assertEqual(response.content, '')
예제 #16
0
    def test_delete(self):
        area = self.create_area(x2=50, y2=50)
        self.assertEqual(Area.objects.count(), 1)
        view = AjaxUpdateAreaView()
        view.kwargs = {
            'storage_path': area.storage_path,
            'pk': area.pk,
        }

        request = self.factory.delete('/',
                                      HTTP_X_REQUESTED_WITH='XMLHttpRequest')
        request.user = self.create_user(permissions=['daguerre.delete_area'])
        self.assertTrue(request.user.has_perm('daguerre.delete_area'))
        with self.assertNumQueries(3):
            response = view.delete(request)

        self.assertEqual(response.status_code, 200)
        self.assertEqual(force_text(response.content), '')
        self.assertEqual(Area.objects.count(), 0)
예제 #17
0
    def test_post__update(self):
        area = self.create_area(x2=50, y2=50)
        self.assertEqual(Area.objects.count(), 1)
        old_serialize = area.serialize()
        view = AjaxUpdateAreaView()
        view.kwargs = {
            'storage_path': area.storage_path,
            'pk': area.pk,
        }

        params = {
            'x1': 50,
            'y1': 50,
            'x2': 100,
            'y2': 100,
            'priority': 1,
            'name': 'fun'
        }
        request = self.factory.post('/',
                                    params,
                                    HTTP_X_REQUESTED_WITH='XMLHttpRequest')
        request.user = self.create_user(permissions=['daguerre.change_area'])
        self.assertTrue(request.user.has_perm('daguerre.change_area'))
        # SB: Used to assert 4 - don't remember why.
        # Three queries expected: get the area, update the area,
        # and clear the adjustment cache.
        with self.assertNumQueries(3):
            response = view.post(request)

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response['Content-Type'], "application/json")
        self.assertEqual(Area.objects.count(), 1)
        data = json.loads(force_text(response.content))
        new_area = Area.objects.get(pk=area.pk, storage_path=area.storage_path)
        self.assertEqual(data, new_area.serialize())
        self.assertNotEqual(data, old_serialize)
        del data['storage_path']
        del data['id']
        self.assertEqual(data, params)
예제 #18
0
    def test_post__update(self):
        area = self.create_area(x2=50, y2=50)
        self.assertEqual(Area.objects.count(), 1)
        old_serialize = area.serialize()
        view = AjaxUpdateAreaView()
        view.kwargs = {
            'storage_path': area.storage_path,
            'pk': area.pk,
        }

        params = {
            'x1': 50,
            'y1': 50,
            'x2': 100,
            'y2': 100,
            'priority': 1,
            'name': 'fun'
        }
        request = self.factory.post('/', params,
                                    HTTP_X_REQUESTED_WITH='XMLHttpRequest')
        request.user = self.create_user(permissions=['daguerre.change_area'])
        self.assertTrue(request.user.has_perm('daguerre.change_area'))
        # SB: Used to assert 4 - don't remember why.
        # Three queries expected: get the area, update the area,
        # and clear the adjustment cache.
        with self.assertNumQueries(3):
            response = view.post(request)

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response['Content-Type'], "application/json")
        self.assertEqual(Area.objects.count(), 1)
        data = json.loads(force_text(response.content))
        new_area = Area.objects.get(pk=area.pk, storage_path=area.storage_path)
        self.assertEqual(data, new_area.serialize())
        self.assertNotEqual(data, old_serialize)
        del data['storage_path']
        del data['id']
        self.assertEqual(data, params)
예제 #19
0
    def test_post__add(self):
        area = self.create_area(x2=50, y2=50)
        self.assertEqual(Area.objects.count(), 1)
        view = AjaxUpdateAreaView()
        view.kwargs = {
            'storage_path': area.storage_path,
            'pk': None,
        }

        params = {
            'x1': 50,
            'y1': 50,
            'x2': 100,
            'y2': 100,
            'priority': 1,
            'name': 'fun'
        }
        request = self.factory.post('/',
                                    params,
                                    HTTP_X_REQUESTED_WITH='XMLHttpRequest')
        request.user = self.create_user(
            permissions=['daguerre.change_area', 'daguerre.add_area'])
        self.assertTrue(request.user.has_perm('daguerre.change_area'))
        self.assertTrue(request.user.has_perm('daguerre.add_area'))
        with self.assertNumQueries(3):
            response = view.post(request)

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response['Content-Type'], "application/json")
        self.assertEqual(Area.objects.count(), 2)
        data = json.loads(force_text(response.content))
        new_area = Area.objects.exclude(pk=area.pk).get()
        self.assertEqual(data, new_area.serialize())
        del data['storage_path']
        del data['id']
        self.assertEqual(data, params)
예제 #20
0
from django.conf.urls.defaults import patterns, url

from daguerre.views import (AdjustedImageRedirectView, AjaxAdjustmentInfoView,
                            AjaxUpdateAreaView)


urlpatterns = patterns(
    '',
    url(r'^adjust/(?P<storage_path>.+)$',
        AdjustedImageRedirectView.as_view(),
        name="daguerre_adjusted_image_redirect"),
    url(r'^info/(?P<storage_path>.+)$',
        AjaxAdjustmentInfoView.as_view(),
        name="daguerre_ajax_adjustment_info"),
    url(r'^area/(?P<storage_path>.+?)(?:/(?P<pk>\d+))?$',
        AjaxUpdateAreaView.as_view(),
        name="daguerre_ajax_update_area"),
)
예제 #21
0
from django.conf.urls import patterns, url

from daguerre.views import (AdjustedImageRedirectView, AjaxAdjustmentInfoView,
                            AjaxUpdateAreaView)

urlpatterns = patterns(
    '',
    url(r'^adjust/(?P<storage_path>.+)$',
        AdjustedImageRedirectView.as_view(),
        name="daguerre_adjusted_image_redirect"),
    url(r'^info/(?P<storage_path>.+)$',
        AjaxAdjustmentInfoView.as_view(),
        name="daguerre_ajax_adjustment_info"),
    url(r'^area/(?P<storage_path>.+?)(?:/(?P<pk>\d+))?$',
        AjaxUpdateAreaView.as_view(),
        name="daguerre_ajax_update_area"),
)
예제 #22
0
from django.conf.urls.defaults import patterns, url
from daguerre.views import AdjustedImageRedirectView, AjaxAdjustmentInfoView, AjaxUpdateAreaView

urlpatterns = patterns('',
	url(r'^adjust/(?P<storage_path>.+)$', AdjustedImageRedirectView.as_view(), name="daguerre_adjusted_image_redirect"),
	url(r'^info/(?P<storage_path>.+)$', AjaxAdjustmentInfoView.as_view(), name="daguerre_ajax_adjustment_info"),
	url(r'^area/(?P<storage_path>.+?)(?:/(?P<pk>\d+))?$', AjaxUpdateAreaView.as_view(), name="daguerre_ajax_update_area"),
)
예제 #23
0
 def test_not_ajax(self):
     request = self.factory.get('/')
     view = AjaxUpdateAreaView()
     self.assertRaises(Http404, view.get, request)
     self.assertRaises(Http404, view.post, request)
     self.assertRaises(Http404, view.delete, request)