|
@@ -0,0 +1,85 @@
|
|
|
+"""Unit testing suite for the Libravatar Plugin"""
|
|
|
+
|
|
|
+## Copyright (C) 2015 Rafael Laboissiere <rafael@laboissiere.net>
|
|
|
+##
|
|
|
+## This program is free software: you can redistribute it and/or modify it
|
|
|
+## under the terms of the GNU General Affero Public License as published by
|
|
|
+## the Free Software Foundation, either version 3 of the License, or (at
|
|
|
+## your option) any later version.
|
|
|
+##
|
|
|
+## This program is distributed in the hope that it will be useful, but
|
|
|
+## WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
+## Affero General Public License for more details.
|
|
|
+##
|
|
|
+## You should have received a copy of the GNU Affero General Public License
|
|
|
+## along with this program. If not, see http://www.gnu.org/licenses/.
|
|
|
+
|
|
|
+import os
|
|
|
+import re
|
|
|
+import unittest
|
|
|
+import hashlib
|
|
|
+from tempfile import mkdtemp
|
|
|
+from shutil import rmtree
|
|
|
+
|
|
|
+from . import libravatar
|
|
|
+from pelican import Pelican
|
|
|
+from pelican.settings import read_settings
|
|
|
+
|
|
|
+
|
|
|
+AUTHOR_EMAIL = 'bart.simpson@example.com'
|
|
|
+MD5_HASH = hashlib.md5 (AUTHOR_EMAIL).hexdigest ()
|
|
|
+LIBRAVATAR_BASE_URL = 'http://cdn.libravatar.org/avatar/'
|
|
|
+
|
|
|
+
|
|
|
+class TestLibravatarURL (unittest.TestCase):
|
|
|
+ """Class for testing the URL output of the Libravatar plugin"""
|
|
|
+
|
|
|
+ def setUp (self, override = None):
|
|
|
+ self.output_path = mkdtemp (prefix = 'pelicantests.')
|
|
|
+ self.content_path = mkdtemp (prefix = 'pelicantests.')
|
|
|
+ theme_path = os.path.join (os.path.dirname (os.path.abspath (__file__)),
|
|
|
+ 'test_data', 'theme')
|
|
|
+ settings = {
|
|
|
+ 'PATH': self.content_path,
|
|
|
+ 'THEME': theme_path,
|
|
|
+ 'OUTPUT_PATH': self.output_path,
|
|
|
+ 'PLUGINS': [libravatar],
|
|
|
+ 'CACHE_CONTENT': False
|
|
|
+ }
|
|
|
+ if override:
|
|
|
+ settings.update (override)
|
|
|
+
|
|
|
+ fid = open (os.path.join (self.content_path, 'test.md'), 'w')
|
|
|
+ fid.write ('Title: Test\nDate:\nEmail: ' + AUTHOR_EMAIL + '\n\n')
|
|
|
+ fid.close ()
|
|
|
+
|
|
|
+ self.settings = read_settings (override = settings)
|
|
|
+ pelican = Pelican (settings = self.settings)
|
|
|
+ pelican.run ()
|
|
|
+
|
|
|
+ def tearDown (self):
|
|
|
+ rmtree (self.output_path)
|
|
|
+ rmtree (self.content_path)
|
|
|
+
|
|
|
+ def test_url (self, options = ''):
|
|
|
+ fid = open (os.path.join (self.output_path, 'test.html'), 'r')
|
|
|
+ found = False
|
|
|
+ for line in fid.readlines ():
|
|
|
+ print line
|
|
|
+ if re.search (LIBRAVATAR_BASE_URL + MD5_HASH + options, line):
|
|
|
+ found = True
|
|
|
+ break
|
|
|
+ assert found
|
|
|
+
|
|
|
+
|
|
|
+class TestLibravatarMissing (TestLibravatarURL):
|
|
|
+ """Class for testing the Libravatar "missing picture" option"""
|
|
|
+
|
|
|
+ def setUp (self, override = None):
|
|
|
+ self.library = 'wavatar'
|
|
|
+ TestLibravatarURL.setUp (self,
|
|
|
+ override = {'LIBRAVATAR_MISSING': 'wavatar'})
|
|
|
+
|
|
|
+ def test_url (self):
|
|
|
+ TestLibravatarURL.test_url (self, '\?d=' + self.library)
|