Mercurial > public > sg101
view user_photos/tests/test_views.py @ 989:2908859c2fe4
Smilies now use relative links.
This is for upcoming switch to SSL. Currently we do not need absolute URLs for
smilies. If this changes we can add it later.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Thu, 29 Oct 2015 20:54:34 -0500 |
parents | 7138883966b3 |
children |
line wrap: on
line source
""" Tests for the views in the user_photos application. """ import json import mock from django.test import TestCase from django.test.utils import override_settings from django.contrib.auth.models import User from django.core.urlresolvers import reverse from django.http import JsonResponse class HotlinkImageTestCase(TestCase): def setUp(self): self.username = 'test_user' self.pw = 'password' self.user = User.objects.create_user(self.username, '', self.pw) self.user.save() self.assertTrue(self.client.login(username=self.username, password=self.pw)) self.view_url = reverse('user_photos-hotlink') def testUnauthenticatedUser(self): self.client.logout() response = self.client.post(self.view_url, {'url': 'http://example.com/test.jpg'}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertIsInstance(response, JsonResponse) self.assertEqual(response.status_code, 403) def testWrongMethod(self): response = self.client.get(self.view_url) self.assertIsInstance(response, JsonResponse) self.assertEqual(response.status_code, 405) def testNotAjax(self): response = self.client.post(self.view_url, {'url': 'http://example.com/test.jpg'}) self.assertIsInstance(response, JsonResponse) self.assertEqual(response.status_code, 405) @override_settings(USER_PHOTOS_ENABLED=False) def testServiceDisabled(self): response = self.client.post(self.view_url, {'url': 'http://example.com/test.jpg'}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertIsInstance(response, JsonResponse) self.assertEqual(response.status_code, 403) @mock.patch('user_photos.views.HotLinkImageForm') def testFormInvalid(self, form_mock): form_mock.return_value.is_valid.return_value = False form_mock.return_value.non_field_errors.return_value = mock.Mock() form_mock.return_value.non_field_errors.return_value.as_text.return_value = 'bad stuff' form_mock.return_value.errors.return_value = {} response = self.client.post(self.view_url, {'url': 'http://example.com/test.jpg'}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertIsInstance(response, JsonResponse) self.assertEqual(response.status_code, 400) @mock.patch('user_photos.views.HotLinkImageForm') def testHappyPath(self, form_mock): form_mock.return_value.is_valid.return_value = True form_mock.return_value.save.return_value = 'https://example.com/a.jpg' response = self.client.post(self.view_url, {'url': 'http://example.com/test.jpg'}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertIsInstance(response, JsonResponse) self.assertEqual(response.status_code, 200) expected = {"url": "https://example.com/a.jpg", "error_msg": ""} actual = json.loads(response.content) self.assertEqual(actual, expected) @mock.patch('user_photos.views.HotLinkImageForm') def testFormSaveRaises(self, form_mock): form_mock.return_value.is_valid.return_value = True form_mock.return_value.save.side_effect = ValueError response = self.client.post(self.view_url, {'url': 'http://example.com/test.jpg'}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertIsInstance(response, JsonResponse) self.assertEqual(response.status_code, 500)