mirror of
https://github.com/nikdoof/vapemap.git
synced 2025-12-17 19:59:22 +00:00
New app called "moderation" which handles the reporting, and in the future, management of incorrect records in the database.
132 lines
4.6 KiB
Python
132 lines
4.6 KiB
Python
"""
|
|
This file demonstrates writing tests using the unittest module. These will pass
|
|
when you run "manage.py test".
|
|
|
|
Replace this with more appropriate tests for your application.
|
|
"""
|
|
|
|
import json
|
|
from django.test import TestCase
|
|
from django.core.urlresolvers import reverse
|
|
try:
|
|
from django.contrib.auth import get_user_model
|
|
USER_MODEL = get_user_model()
|
|
except ImportError:
|
|
from django.contrib.auth.models import User as USER_MODEL
|
|
from moderation.models import FlagType, FlaggedObject
|
|
|
|
|
|
class FlagObjectViewTestCase(TestCase):
|
|
|
|
def setUp(self):
|
|
self.u1 = USER_MODEL.objects.create_user('user1', 'test@test.com', 'user1')
|
|
self.f1 = FlagType.objects.create(name='Test')
|
|
|
|
def tearDown(self):
|
|
self.u1.delete()
|
|
self.f1.delete()
|
|
|
|
def post_to_flagobject(self, data={}):
|
|
return self.client.post(reverse('moderation_flagobject'), data, content_type='application/json', HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
|
|
|
|
|
def test_invalid_json(self):
|
|
resp = self.post_to_flagobject('')
|
|
self.assertEqual(resp.status_code, 400)
|
|
content = json.loads(resp.content)
|
|
self.assertEqual(content['result'], 'invalid-request')
|
|
self.assertEqual(content['reason'], 'invalid-request')
|
|
|
|
def test_invalid_json_2(self):
|
|
resp = self.post_to_flagobject({'data': '1234567890'})
|
|
self.assertEqual(resp.status_code, 400)
|
|
content = json.loads(resp.content)
|
|
self.assertEqual(content['result'], 'invalid-request')
|
|
self.assertEqual(content['reason'], 'invalid-json')
|
|
|
|
def test_missing_app_model_json(self):
|
|
resp = self.post_to_flagobject(json.dumps({'invalid': 'invalid'}))
|
|
self.assertEqual(resp.status_code, 400)
|
|
content = json.loads(resp.content)
|
|
self.assertEqual(content['result'], 'invalid-request')
|
|
self.assertEqual(content['reason'], 'no-app-or-model')
|
|
|
|
def test_unknown_type(self):
|
|
resp = self.post_to_flagobject(json.dumps({
|
|
'app': 'moderation',
|
|
'model': 'xxxxxxxxxxxxxxxxxxxx',
|
|
'id': 999999,
|
|
'flag_type': 1,
|
|
'note': 'test note',
|
|
}))
|
|
self.assertEqual(resp.status_code, 400)
|
|
content = json.loads(resp.content)
|
|
self.assertEqual(content['result'], 'invalid-request')
|
|
self.assertEqual(content['reason'], 'unknown-object-type')
|
|
|
|
def test_missing_object(self):
|
|
resp = self.post_to_flagobject(json.dumps({
|
|
'app': 'moderation',
|
|
'model': 'flaggedobject',
|
|
'id': 999999,
|
|
'flag_type': 1,
|
|
'note': 'test note',
|
|
}))
|
|
self.assertEqual(resp.status_code, 400)
|
|
content = json.loads(resp.content)
|
|
self.assertEqual(content['result'], 'invalid-request')
|
|
self.assertEqual(content['reason'], 'does-not-exist')
|
|
|
|
def test_missing_fields(self):
|
|
resp = self.post_to_flagobject(json.dumps({
|
|
'app': 'moderation',
|
|
'model': 'flaggedobject',
|
|
'id': 999999,
|
|
'flag_type': 1,
|
|
}))
|
|
self.assertEqual(resp.status_code, 400)
|
|
content = json.loads(resp.content)
|
|
self.assertEqual(content['result'], 'invalid-request')
|
|
self.assertEqual(content['reason'], 'missing-fields')
|
|
|
|
def test_flagging_authenticated(self):
|
|
|
|
self.client.login(username='user1', password='user1')
|
|
|
|
resp = self.post_to_flagobject(json.dumps({
|
|
'app': 'moderation',
|
|
'model': 'flagtype',
|
|
'id': self.f1.pk,
|
|
'flag_type': 1,
|
|
'note': 'test note',
|
|
}))
|
|
self.assertEqual(resp.status_code, 200)
|
|
content = json.loads(resp.content)
|
|
self.assertEqual(content['result'], 'ok')
|
|
self.assertIsNotNone(content['flag_id'])
|
|
|
|
flag = FlaggedObject.objects.get(pk=content['flag_id'])
|
|
self.assertIsNotNone(flag)
|
|
self.assertEqual(flag.user, self.u1)
|
|
self.assertEqual(flag.flag_type, self.f1)
|
|
|
|
def test_flagging_unauthenticated(self):
|
|
|
|
self.client.logout()
|
|
|
|
resp = self.post_to_flagobject(json.dumps({
|
|
'app': 'moderation',
|
|
'model': 'flagtype',
|
|
'id': self.f1.pk,
|
|
'flag_type': 1,
|
|
'note': 'test note',
|
|
}))
|
|
self.assertEqual(resp.status_code, 200)
|
|
content = json.loads(resp.content)
|
|
self.assertEqual(content['result'], 'ok')
|
|
self.assertIsNotNone(content['flag_id'])
|
|
|
|
flag = FlaggedObject.objects.get(pk=content['flag_id'])
|
|
self.assertIsNotNone(flag)
|
|
self.assertEqual(flag.user, None)
|
|
self.assertEqual(flag.flag_type, self.f1) |