snipt/snipts/tests.py

112 lines
4.1 KiB
Python

from django.contrib.auth.models import User
from snipts.models import Snipt
from tastypie.models import ApiKey
from tastypie.test import ResourceTestCase
class SniptResourceTest(ResourceTestCase):
fixtures = ['test_entries.json']
def setUp(self):
super(SniptResourceTest, self).setUp()
# Johnny
self.johnny = User.objects.create_user('johnny', 'johnny@snipt.net',
'password')
ApiKey.objects.get_or_create(user=self.johnny)
self.johnny_auth = self.create_apikey(self.johnny,
self.johnny.api_key.key)
self.johnny_private = Snipt(title='Private snipt for Johnny',
lexer='text',
public=False,
user=self.johnny)
self.johnny_public = Snipt(title='Public snipt for Johnny',
lexer='text',
public=True,
user=self.johnny)
self.johnny_private.save()
self.johnny_public.save()
# Bob
self.bob = User.objects.create_user('bob', 'bob@snipt.net', 'password')
ApiKey.objects.get_or_create(user=self.bob)
self.bob_auth = self.create_apikey(self.bob, self.bob.api_key.key)
self.bob_private = Snipt(title='Private snipt for Bob',
lexer='text',
public=False,
user=self.bob)
self.bob_public = Snipt(title='Public snipt for Bob',
lexer='text',
public=True,
user=self.bob)
self.bob_private.save()
self.bob_public.save()
def test_get_private_list(self):
resp = self.api_client.get('/api/private/snipt/', format='json',
authentication=self.johnny_auth)
self.assertHttpOK(resp)
self.assertValidJSONResponse(resp)
self.assertEqual(len(self.deserialize(resp)['objects']), 2)
def test_get_private_detail(self):
resp = self.api_client.get(
'/api/private/snipt/{}/'.format(self.johnny_private.pk),
format='json',
authentication=self.johnny_auth)
self.assertHttpOK(resp)
self.assertValidJSONResponse(resp)
self.assertEqual(self.deserialize(resp)['key'],
self.johnny_private.key)
# Unauthenticated request.
resp = self.api_client.get(
'/api/private/snipt/{}/'.format(self.johnny_private.pk),
format='json')
self.assertHttpUnauthorized(resp)
# Unauthorized request.
resp = self.api_client.get(
'/api/private/snipt/{}/'.format(self.johnny_private.pk),
format='json',
authentication=self.bob_auth)
self.assertHttpUnauthorized(resp)
def test_post_private_list(self):
new_snipt = {
'title': 'A new private snipt.',
'lexer': 'text',
'public': False,
}
resp = self.api_client.post('/api/private/snipt/',
data=new_snipt,
format='json',
authentication=self.johnny_auth)
self.assertHttpCreated(resp)
self.assertEqual(Snipt.objects.count(), 5)
resp = self.api_client.get('/api/private/snipt/',
format='json',
authentication=self.johnny_auth)
self.assertEqual(len(self.deserialize(resp)['objects']), 3)
resp = self.api_client.get('/api/public/snipt/', format='json')
self.assertEqual(len(self.deserialize(resp)['objects']), 2)
def test_get_public_list(self):
self.assertEqual(Snipt.objects.count(), 4)
resp = self.api_client.get('/api/public/snipt/', format='json')
self.assertHttpOK(resp)
self.assertValidJSONResponse(resp)
self.assertEqual(len(self.deserialize(resp)['objects']), 2)