first comit
This commit is contained in:
171
venv/lib/python3.10/site-packages/django_gravatar/tests.py
Normal file
171
venv/lib/python3.10/site-packages/django_gravatar/tests.py
Normal file
@@ -0,0 +1,171 @@
|
||||
from django.template import Context, Template
|
||||
from django.test import TestCase
|
||||
from django.utils.html import escape
|
||||
|
||||
from .compat import parse_qs, quote_plus, urlparse
|
||||
from .helpers import *
|
||||
|
||||
|
||||
class TestGravatarHelperMethods(TestCase):
|
||||
|
||||
def test_gravatar_hash_generation(self):
|
||||
"""
|
||||
Verify the generation of hash from email string.
|
||||
"""
|
||||
email = "MyEmailAddress@example.com"
|
||||
email_hash = "0bc83cb571cd1c50ba6f3e8a78ef1346"
|
||||
|
||||
self.assertEqual(calculate_gravatar_hash(email), email_hash)
|
||||
self.assertEqual(calculate_gravatar_hash(email), calculate_gravatar_hash(email.lower()))
|
||||
|
||||
def test_gravatar_url(self):
|
||||
"""
|
||||
Verify that the gravatar_url method returns the expected output.
|
||||
"""
|
||||
email = "joe@example.com"
|
||||
email_upper = "JOE@example.com"
|
||||
email_strip = " JOE@example.com "
|
||||
|
||||
# Construct the url
|
||||
url = get_gravatar_url(email)
|
||||
|
||||
# Verify email is properly sanitized
|
||||
self.assertEqual(url, get_gravatar_url(email_upper))
|
||||
self.assertEqual(url, get_gravatar_url(email_strip))
|
||||
|
||||
# Parse query string from url
|
||||
urlp = urlparse(url)
|
||||
qs = parse_qs(urlp.query)
|
||||
|
||||
# Verify the correct query arguments are included with the proper defaults
|
||||
self.assertTrue('s' in qs)
|
||||
self.assertTrue('d' in qs)
|
||||
self.assertTrue('r' in qs)
|
||||
|
||||
self.assertEqual(qs.get('s').pop(), str(GRAVATAR_DEFAULT_SIZE))
|
||||
self.assertEqual(qs.get('d').pop(), GRAVATAR_DEFAULT_IMAGE)
|
||||
self.assertEqual(qs.get('r').pop(), GRAVATAR_DEFAULT_RATING)
|
||||
|
||||
# Verify the correct protocol is used
|
||||
if GRAVATAR_DEFAULT_SECURE:
|
||||
self.assertTrue(GRAVATAR_SECURE_URL in url)
|
||||
else:
|
||||
self.assertTrue(GRAVATAR_URL in url)
|
||||
|
||||
# Verify that a url value for default is urlencoded
|
||||
default_url = 'https://www.example.com/default.jpg'
|
||||
url = get_gravatar_url(email, default=default_url)
|
||||
|
||||
# Verify urlencoding
|
||||
self.assertTrue(quote_plus(default_url) in url)
|
||||
|
||||
def test_has_gravatar(self):
|
||||
"""
|
||||
Verify that the has_gravatar helper method correctly
|
||||
determines if a user has a gravatar or not.
|
||||
"""
|
||||
bad_email = 'eve@example.com'
|
||||
good_email = 'matt@automattic.com'
|
||||
|
||||
self.assertFalse(has_gravatar(bad_email))
|
||||
self.assertTrue(has_gravatar(good_email))
|
||||
|
||||
def test_gravatar_profile_url(self):
|
||||
"""
|
||||
Verify that the get_gravatar_profile_url helper method correctly
|
||||
generates a profile url for gravatar user.
|
||||
"""
|
||||
email = 'joe@example.com'
|
||||
profile_url = get_gravatar_profile_url(email)
|
||||
email_hash = calculate_gravatar_hash(email)
|
||||
|
||||
self.assertTrue(profile_url.endswith(email_hash))
|
||||
|
||||
|
||||
class TestGravatarTemplateTags(TestCase):
|
||||
def test_gravatar_url(self):
|
||||
email = 'matt@automattic.com'
|
||||
context = Context({'email': email})
|
||||
|
||||
t = Template("{% load gravatar %}{% gravatar_url email %}")
|
||||
rendered = t.render(context)
|
||||
|
||||
self.assertEqual(rendered, escape(get_gravatar_url(email)))
|
||||
|
||||
def test_gravatar_img(self):
|
||||
# Some defaults for testing
|
||||
email = 'matt@automattic.com'
|
||||
alt_text = 'some alt text'
|
||||
css_class = 'gravatar-thumb'
|
||||
size = 250
|
||||
|
||||
# Build context
|
||||
context = Context({
|
||||
'email': email,
|
||||
'size': size,
|
||||
'alt_text': alt_text,
|
||||
'css_class': css_class,
|
||||
})
|
||||
|
||||
# Default behavior
|
||||
t = Template("{% load gravatar %}{% gravatar email %}")
|
||||
rendered = t.render(context)
|
||||
|
||||
self.assertTrue(escape(get_gravatar_url(email)) in rendered)
|
||||
self.assertTrue('class="gravatar"' in rendered)
|
||||
self.assertTrue('alt=""' in rendered)
|
||||
|
||||
t = Template("{% load gravatar %}{% gravatar email size alt_text css_class %}")
|
||||
rendered = t.render(context)
|
||||
|
||||
self.assertTrue('width="%s"' % (size,) in rendered)
|
||||
self.assertTrue('height="%s"' % (size,) in rendered)
|
||||
self.assertTrue('alt="%s"' % (alt_text,) in rendered)
|
||||
self.assertTrue('class="%s"' % (css_class,) in rendered)
|
||||
|
||||
def test_gravatar_user_url(self):
|
||||
# class with email attribute
|
||||
class user:
|
||||
email = 'bouke@webatoom.nl'
|
||||
|
||||
context = Context({'user': user})
|
||||
|
||||
t = Template("{% load gravatar %}{% gravatar_url user %}")
|
||||
rendered = t.render(context)
|
||||
|
||||
self.assertEqual(rendered, escape(get_gravatar_url(user.email)))
|
||||
|
||||
def test_gravatar_user_img(self):
|
||||
# class with email attribute
|
||||
class user:
|
||||
email = 'bouke@webatoom.nl'
|
||||
|
||||
context = Context({'user': user})
|
||||
|
||||
t = Template("{% load gravatar %}{% gravatar user %}")
|
||||
rendered = t.render(context)
|
||||
|
||||
self.assertTrue(escape(get_gravatar_url(user.email)) in rendered)
|
||||
|
||||
def test_invalid_input(self):
|
||||
context = Context({'email': None})
|
||||
|
||||
t = Template("{% load gravatar %}{% gravatar email %}")
|
||||
rendered = t.render(context)
|
||||
|
||||
self.assertEqual("", rendered, "Invalid input should return empty result")
|
||||
|
||||
def test_gravatar_profile_url(self):
|
||||
"""
|
||||
Verify the profile url generated from template gravatar_profile_url tag.
|
||||
"""
|
||||
# class with email attribute
|
||||
class user:
|
||||
email = 'bouke@webatoom.nl'
|
||||
|
||||
context = Context({'user': user})
|
||||
|
||||
t = Template("{% load gravatar %}{% gravatar_profile_url user %}")
|
||||
rendered = t.render(context)
|
||||
|
||||
self.assertEqual(rendered, escape(get_gravatar_profile_url(user.email)))
|
||||
Reference in New Issue
Block a user