From d4fc7e1781a148b5eac49e80c8eaacab41455577 Mon Sep 17 00:00:00 2001 From: Krzysztof Klimonda Date: Sun, 3 Mar 2013 09:11:49 -0800 Subject: [PATCH] Write unit tests for CombinedAuthBackend --- pinry/users/tests.py | 47 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 pinry/users/tests.py diff --git a/pinry/users/tests.py b/pinry/users/tests.py new file mode 100644 index 0000000..a91f604 --- /dev/null +++ b/pinry/users/tests.py @@ -0,0 +1,47 @@ +from django.test import TestCase + +import mock + +from .auth.backends import CombinedAuthBackend +from ..core.models import Image, Pin +from .models import User + + +def mock_urlopen(url): + return open('screenshot.png') + + +class CombinedAuthBackendTest(TestCase): + def setUp(self): + self.backend = CombinedAuthBackend() + self.username = 'jdoe' + self.email = 'jdoe@example.com' + self.password = 'password' + User.objects.create_user(username=self.username, email=self.email, password=self.password) + + def test_authenticate_username(self): + self.assertTrue(self.backend.authenticate(username=self.username, password=self.password)) + + def test_authenticate_email(self): + self.assertTrue(self.backend.authenticate(username=self.email, password=self.password)) + + def test_authenticate_wrong_password(self): + self.assertIsNone(self.backend.authenticate(username=self.username, password='wrong-password')) + + def test_authenticate_unknown_user(self): + self.assertIsNone(self.backend.authenticate(username='wrong-username', password='wrong-password')) + + @mock.patch('urllib2.urlopen', mock_urlopen) + def test_has_perm_on_pin(self): + image = Image.objects.create_for_url('http://testserver/mocked/screenshot.png') + user = User.objects.get(pk=1) + pin = Pin.objects.create(submitter=user, image=image) + self.assertTrue(self.backend.has_perm(user, 'add_pin', pin)) + + @mock.patch('urllib2.urlopen', mock_urlopen) + def test_has_perm_on_pin_unauthorized(self): + image = Image.objects.create_for_url('http://testserver/mocked/screenshot.png') + user = User.objects.get(pk=1) + other_user = User.objects.create_user('test', 'test@example.com', 'test') + pin = Pin.objects.create(submitter=user, image=image) + self.assertFalse(self.backend.has_perm(other_user, 'add_pin', pin)) \ No newline at end of file