1
0
Fork 0
forked from github/pelican
pelican-theme/pelican/tests/test_server.py

56 lines
1.7 KiB
Python
Raw Normal View History

import os
from io import BytesIO
from shutil import rmtree
from tempfile import mkdtemp
from pelican.server import ComplexHTTPRequestHandler
from pelican.tests.support import unittest
class MockRequest:
def makefile(self, *args, **kwargs):
return BytesIO(b"")
class MockServer:
pass
class TestServer(unittest.TestCase):
def setUp(self):
self.server = MockServer()
self.temp_output = mkdtemp(prefix='pelicantests.')
self.old_cwd = os.getcwd()
os.chdir(self.temp_output)
def tearDown(self):
os.chdir(self.old_cwd)
rmtree(self.temp_output)
def test_get_path_that_exists(self):
handler = ComplexHTTPRequestHandler(MockRequest(), ('0.0.0.0', 8888),
self.server)
handler.base_path = self.temp_output
open(os.path.join(self.temp_output, 'foo.html'), 'a').close()
os.mkdir(os.path.join(self.temp_output, 'foo'))
open(os.path.join(self.temp_output, 'foo', 'index.html'), 'a').close()
os.mkdir(os.path.join(self.temp_output, 'bar'))
open(os.path.join(self.temp_output, 'bar', 'index.html'), 'a').close()
os.mkdir(os.path.join(self.temp_output, 'baz'))
for suffix in ['', '/']:
path = handler.get_path_that_exists('foo' + suffix)
self.assertEqual(path, 'foo.html')
path = handler.get_path_that_exists('bar' + suffix)
self.assertEqual(path, 'bar/index.html')
path = handler.get_path_that_exists('baz' + suffix)
self.assertEqual(path, 'baz/')
path = handler.get_path_that_exists('quux' + suffix)
self.assertIsNone(path)