Skip to content

Commit

Permalink
Updated tests for static files and made static.py raise all HTTP exce…
Browse files Browse the repository at this point in the history
…ptions
  • Loading branch information
vipera committed May 2, 2012
1 parent 04af145 commit 3d65afe
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 13 deletions.
6 changes: 3 additions & 3 deletions pyramid/static.py
Expand Up @@ -108,7 +108,7 @@ def __call__(self, context, request):
resource_path ='%s/%s' % (self.docroot.rstrip('/'), path) resource_path ='%s/%s' % (self.docroot.rstrip('/'), path)
if resource_isdir(self.package_name, resource_path): if resource_isdir(self.package_name, resource_path):
if not request.path_url.endswith('/'): if not request.path_url.endswith('/'):
return self.add_slash_redirect(request) self.add_slash_redirect(request)
resource_path = '%s/%s' % (resource_path.rstrip('/'),self.index) resource_path = '%s/%s' % (resource_path.rstrip('/'),self.index)
if not resource_exists(self.package_name, resource_path): if not resource_exists(self.package_name, resource_path):
raise HTTPNotFound(request.url) raise HTTPNotFound(request.url)
Expand All @@ -120,7 +120,7 @@ def __call__(self, context, request):
filepath = normcase(normpath(join(self.norm_docroot, path))) filepath = normcase(normpath(join(self.norm_docroot, path)))
if isdir(filepath): if isdir(filepath):
if not request.path_url.endswith('/'): if not request.path_url.endswith('/'):
return self.add_slash_redirect(request) self.add_slash_redirect(request)
filepath = join(filepath, self.index) filepath = join(filepath, self.index)
if not exists(filepath): if not exists(filepath):
raise HTTPNotFound(request.url) raise HTTPNotFound(request.url)
Expand All @@ -132,7 +132,7 @@ def add_slash_redirect(self, request):
qs = request.query_string qs = request.query_string
if qs: if qs:
url = url + '?' + qs url = url + '?' + qs
return HTTPMovedPermanently(url) raise HTTPMovedPermanently(url)


_seps = set(['/', os.sep]) _seps = set(['/', os.sep])
def _contains_slash(item): def _contains_slash(item):
Expand Down
32 changes: 22 additions & 10 deletions pyramid/tests/test_static.py
Expand Up @@ -38,11 +38,17 @@ def test_call_adds_slash_path_info_empty(self):
inst = self._makeOne('pyramid.tests:fixtures/static') inst = self._makeOne('pyramid.tests:fixtures/static')
request = self._makeRequest({'PATH_INFO':''}) request = self._makeRequest({'PATH_INFO':''})
context = DummyContext() context = DummyContext()
response = inst(context, request) from pyramid.httpexceptions import HTTPMovedPermanently
response.prepare(request.environ) try:
self.assertEqual(response.status, '301 Moved Permanently') response = inst(context, request)
self.assertTrue(b'http://example.com:6543/' in response.body) except HTTPMovedPermanently as e:

self.assertEqual(e.code, 301)
self.assertTrue(b'http://example.com:6543/' in e.location)
else:
response.prepare(request.environ)
self.assertEqual(response.status, '301 Moved Permanently')
self.assertTrue(b'http://example.com:6543/' in response.body)

def test_path_info_slash_means_index_html(self): def test_path_info_slash_means_index_html(self):
inst = self._makeOne('pyramid.tests:fixtures/static') inst = self._makeOne('pyramid.tests:fixtures/static')
request = self._makeRequest() request = self._makeRequest()
Expand Down Expand Up @@ -258,11 +264,17 @@ def test_call_adds_slash_path_info_empty(self):
request = self._makeRequest({'PATH_INFO':''}) request = self._makeRequest({'PATH_INFO':''})
request.subpath = () request.subpath = ()
context = DummyContext() context = DummyContext()
response = inst(context, request) from pyramid.httpexceptions import HTTPMovedPermanently
response.prepare(request.environ) try:
self.assertEqual(response.status, '301 Moved Permanently') response = inst(context, request)
self.assertTrue(b'http://example.com:6543/' in response.body) except HTTPMovedPermanently as e:

self.assertEqual(e.code, 301)
self.assertTrue(b'http://example.com:6543/' in e.location)
else:
response.prepare(request.environ)
self.assertEqual(response.status, '301 Moved Permanently')
self.assertTrue(b'http://example.com:6543/' in response.body)

def test_path_info_slash_means_index_html(self): def test_path_info_slash_means_index_html(self):
inst = self._makeOne('pyramid.tests:fixtures/static') inst = self._makeOne('pyramid.tests:fixtures/static')
request = self._makeRequest() request = self._makeRequest()
Expand Down

0 comments on commit 3d65afe

Please sign in to comment.