diff options
| -rw-r--r-- | CONTRIBUTORS.txt | 3 | ||||
| -rw-r--r-- | docs/narr/security.rst | 15 | ||||
| -rw-r--r-- | pyramid/tests/test_chameleon_text.py | 30 | ||||
| -rw-r--r-- | pyramid/tests/test_chameleon_zpt.py | 28 | ||||
| -rw-r--r-- | pyramid/tests/test_config.py | 4 | ||||
| -rw-r--r-- | tox.ini | 2 |
6 files changed, 46 insertions, 36 deletions
diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index dba39d630..1ef785c3d 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -128,3 +128,6 @@ Contributors - Wichert Akkerman, 2011/01/19 - Christopher Lambacehr, 2011/02/12 + +- Malthe Borch, 2011/02/28 + diff --git a/docs/narr/security.rst b/docs/narr/security.rst index 6e07c9338..c7a07b857 100644 --- a/docs/narr/security.rst +++ b/docs/narr/security.rst @@ -564,12 +564,23 @@ that implements the following interface: class AuthenticationPolicy(object): """ An object representing a Pyramid authentication policy. """ + def authenticated_userid(self, request): """ Return the authenticated userid or ``None`` if no - authenticated userid can be found. """ + authenticated userid can be found. This method of the policy + should ensure that a record exists in whatever persistent store is + used related to the user (the user should not have been deleted); + if a record associated with the current id does not exist in a + persistent store, it should return ``None``.""" + + def unauthenticated_userid(self, request): + """ Return the *unauthenticated* userid. This method performs the + same duty as ``authenticated_userid`` but is permitted to return the + userid based only on data present in the request; it needn't (and + shouldn't) check any persistent store to ensure that the user record + related to the request userid exists.""" def effective_principals(self, request): - """ Return a sequence representing the effective principals including the userid and any groups belonged to by the current user, including 'system' groups such as diff --git a/pyramid/tests/test_chameleon_text.py b/pyramid/tests/test_chameleon_text.py index 789c78bbe..dcc4f8344 100644 --- a/pyramid/tests/test_chameleon_text.py +++ b/pyramid/tests/test_chameleon_text.py @@ -32,7 +32,6 @@ class TextTemplateRendererTests(Base, unittest.TestCase): klass = self._getTargetClass() return klass(*arg, **kw) - @skip_on('pypy') def test_instance_implements_ITemplate(self): from zope.interface.verify import verifyObject from pyramid.interfaces import ITemplateRenderer @@ -40,13 +39,12 @@ class TextTemplateRendererTests(Base, unittest.TestCase): lookup = DummyLookup() verifyObject(ITemplateRenderer, self._makeOne(path, lookup)) - @skip_on('pypy') def test_class_implements_ITemplate(self): from zope.interface.verify import verifyClass from pyramid.interfaces import ITemplateRenderer verifyClass(ITemplateRenderer, self._getTargetClass()) - @skip_on('java', 'pypy') + @skip_on('java') def test_template_reified(self): minimal = self._getTemplatePath('minimal.txt') lookup = DummyLookup() @@ -55,7 +53,7 @@ class TextTemplateRendererTests(Base, unittest.TestCase): template = instance.template self.assertEqual(template, instance.__dict__['template']) - @skip_on('java', 'pypy') + @skip_on('java') def test_template_with_ichameleon_translate(self): minimal = self._getTemplatePath('minimal.txt') lookup = DummyLookup() @@ -64,7 +62,7 @@ class TextTemplateRendererTests(Base, unittest.TestCase): template = instance.template self.assertEqual(template.translate, lookup.translate) - @skip_on('java', 'pypy') + @skip_on('java') def test_template_with_debug_templates(self): minimal = self._getTemplatePath('minimal.txt') lookup = DummyLookup() @@ -74,7 +72,7 @@ class TextTemplateRendererTests(Base, unittest.TestCase): template = instance.template self.assertEqual(template.debug, True) - @skip_on('java', 'pypy') + @skip_on('java') def test_template_with_reload_templates(self): minimal = self._getTemplatePath('minimal.txt') lookup = DummyLookup() @@ -84,7 +82,7 @@ class TextTemplateRendererTests(Base, unittest.TestCase): template = instance.template self.assertEqual(template.auto_reload, True) - @skip_on('java', 'pypy') + @skip_on('java') def test_template_without_reload_templates(self): minimal = self._getTemplatePath('minimal.txt') lookup = DummyLookup() @@ -94,7 +92,7 @@ class TextTemplateRendererTests(Base, unittest.TestCase): template = instance.template self.assertEqual(template.auto_reload, False) - @skip_on('java', 'pypy') + @skip_on('java') def test_call(self): minimal = self._getTemplatePath('minimal.txt') lookup = DummyLookup() @@ -103,14 +101,14 @@ class TextTemplateRendererTests(Base, unittest.TestCase): self.failUnless(isinstance(result, str)) self.assertEqual(result, 'Hello.\n') - @skip_on('java', 'pypy') + @skip_on('java') def test_call_with_nondict_value(self): minimal = self._getTemplatePath('minimal.txt') lookup = DummyLookup() instance = self._makeOne(minimal, lookup) self.assertRaises(ValueError, instance, None, {}) - @skip_on('java', 'pypy') + @skip_on('java') def test_call_nonminimal(self): nonminimal = self._getTemplatePath('nonminimal.txt') lookup = DummyLookup() @@ -119,7 +117,7 @@ class TextTemplateRendererTests(Base, unittest.TestCase): self.failUnless(isinstance(result, str)) self.assertEqual(result, 'Hello, Chris!\n') - @skip_on('java', 'pypy') + @skip_on('java') def test_implementation(self): minimal = self._getTemplatePath('minimal.txt') lookup = DummyLookup() @@ -133,7 +131,7 @@ class RenderTemplateTests(Base, unittest.TestCase): from pyramid.chameleon_text import render_template return render_template(name, **kw) - @skip_on('java', 'pypy') + @skip_on('java') def test_it(self): minimal = self._getTemplatePath('minimal.txt') result = self._callFUT(minimal) @@ -145,7 +143,7 @@ class RenderTemplateToResponseTests(Base, unittest.TestCase): from pyramid.chameleon_text import render_template_to_response return render_template_to_response(name, **kw) - @skip_on('java', 'pypy') + @skip_on('java') def test_minimal(self): minimal = self._getTemplatePath('minimal.txt') result = self._callFUT(minimal) @@ -155,7 +153,7 @@ class RenderTemplateToResponseTests(Base, unittest.TestCase): self.assertEqual(result.status, '200 OK') self.assertEqual(len(result.headerlist), 2) - @skip_on('java', 'pypy') + @skip_on('java') def test_iresponsefactory_override(self): from webob import Response class Response2(Response): @@ -171,7 +169,7 @@ class GetRendererTests(Base, unittest.TestCase): from pyramid.chameleon_text import get_renderer return get_renderer(name) - @skip_on('java', 'pypy') + @skip_on('java') def test_it(self): from pyramid.interfaces import IRendererFactory class Dummy: @@ -189,7 +187,7 @@ class GetTemplateTests(Base, unittest.TestCase): from pyramid.chameleon_text import get_template return get_template(name) - @skip_on('java', 'pypy') + @skip_on('java') def test_it(self): from pyramid.interfaces import IRendererFactory class Dummy: diff --git a/pyramid/tests/test_chameleon_zpt.py b/pyramid/tests/test_chameleon_zpt.py index 1b015e158..9bdb47776 100644 --- a/pyramid/tests/test_chameleon_zpt.py +++ b/pyramid/tests/test_chameleon_zpt.py @@ -33,7 +33,6 @@ class ZPTTemplateRendererTests(Base, unittest.TestCase): klass = self._getTargetClass() return klass(*arg, **kw) - @skip_on('pypy') def test_instance_implements_ITemplate(self): from zope.interface.verify import verifyObject from pyramid.interfaces import ITemplateRenderer @@ -41,13 +40,12 @@ class ZPTTemplateRendererTests(Base, unittest.TestCase): lookup = DummyLookup() verifyObject(ITemplateRenderer, self._makeOne(path, lookup)) - @skip_on('pypy') def test_class_implements_ITemplate(self): from zope.interface.verify import verifyClass from pyramid.interfaces import ITemplateRenderer verifyClass(ITemplateRenderer, self._getTargetClass()) - @skip_on('java', 'pypy') + @skip_on('java') def test_call(self): minimal = self._getTemplatePath('minimal.pt') lookup = DummyLookup() @@ -57,7 +55,7 @@ class ZPTTemplateRendererTests(Base, unittest.TestCase): self.assertEqual(result.rstrip('\n'), '<div xmlns="http://www.w3.org/1999/xhtml">\n</div>') - @skip_on('java', 'pypy') + @skip_on('java') def test_template_reified(self): minimal = self._getTemplatePath('minimal.pt') lookup = DummyLookup() @@ -66,7 +64,7 @@ class ZPTTemplateRendererTests(Base, unittest.TestCase): template = instance.template self.assertEqual(template, instance.__dict__['template']) - @skip_on('java', 'pypy') + @skip_on('java') def test_template_with_ichameleon_translate(self): minimal = self._getTemplatePath('minimal.pt') lookup = DummyLookup() @@ -75,7 +73,7 @@ class ZPTTemplateRendererTests(Base, unittest.TestCase): template = instance.template self.assertEqual(template.translate, lookup.translate) - @skip_on('java', 'pypy') + @skip_on('java') def test_template_with_debug_templates(self): minimal = self._getTemplatePath('minimal.pt') lookup = DummyLookup() @@ -85,7 +83,7 @@ class ZPTTemplateRendererTests(Base, unittest.TestCase): template = instance.template self.assertEqual(template.debug, True) - @skip_on('java', 'pypy') + @skip_on('java') def test_template_without_debug_templates(self): minimal = self._getTemplatePath('minimal.pt') lookup = DummyLookup() @@ -95,7 +93,7 @@ class ZPTTemplateRendererTests(Base, unittest.TestCase): template = instance.template self.assertEqual(template.debug, False) - @skip_on('java', 'pypy') + @skip_on('java') def test_template_with_reload_templates(self): minimal = self._getTemplatePath('minimal.pt') lookup = DummyLookup() @@ -105,7 +103,7 @@ class ZPTTemplateRendererTests(Base, unittest.TestCase): template = instance.template self.assertEqual(template.auto_reload, True) - @skip_on('java', 'pypy') + @skip_on('java') def test_template_without_reload_templates(self): minimal = self._getTemplatePath('minimal.pt') lookup = DummyLookup() @@ -115,7 +113,7 @@ class ZPTTemplateRendererTests(Base, unittest.TestCase): template = instance.template self.assertEqual(template.auto_reload, False) - @skip_on('java', 'pypy') + @skip_on('java') def test_call_with_nondict_value(self): minimal = self._getTemplatePath('minimal.pt') lookup = DummyLookup() @@ -138,7 +136,7 @@ class RenderTemplateTests(Base, unittest.TestCase): from pyramid.chameleon_zpt import render_template return render_template(name, **kw) - @skip_on('java', 'pypy') + @skip_on('java') def test_it(self): minimal = self._getTemplatePath('minimal.pt') result = self._callFUT(minimal) @@ -151,7 +149,7 @@ class RenderTemplateToResponseTests(Base, unittest.TestCase): from pyramid.chameleon_zpt import render_template_to_response return render_template_to_response(name, **kw) - @skip_on('java', 'pypy') + @skip_on('java') def test_it(self): minimal = self._getTemplatePath('minimal.pt') result = self._callFUT(minimal) @@ -162,7 +160,7 @@ class RenderTemplateToResponseTests(Base, unittest.TestCase): self.assertEqual(result.status, '200 OK') self.assertEqual(len(result.headerlist), 2) - @skip_on('java', 'pypy') + @skip_on('java') def test_iresponsefactory_override(self): from webob import Response class Response2(Response): @@ -178,7 +176,7 @@ class GetRendererTests(Base, unittest.TestCase): from pyramid.chameleon_zpt import get_renderer return get_renderer(name) - @skip_on('java', 'pypy') + @skip_on('java') def test_it(self): from pyramid.interfaces import IRendererFactory class Dummy: @@ -196,7 +194,7 @@ class GetTemplateTests(Base, unittest.TestCase): from pyramid.chameleon_zpt import get_template return get_template(name) - @skip_on('java', 'pypy') + @skip_on('java') def test_it(self): from pyramid.interfaces import IRendererFactory class Dummy: diff --git a/pyramid/tests/test_config.py b/pyramid/tests/test_config.py index 9f3f39fb3..8b57e4c74 100644 --- a/pyramid/tests/test_config.py +++ b/pyramid/tests/test_config.py @@ -2274,7 +2274,7 @@ class ConfiguratorTests(unittest.TestCase): result = view(None, request) self.assertEqual(result, ('abc', request)) - @testing.skip_on('pypy', 'java') + @testing.skip_on('java') def test_set_notfound_view_with_renderer(self): from zope.interface import implementedBy from pyramid.interfaces import IRequest @@ -2321,7 +2321,7 @@ class ConfiguratorTests(unittest.TestCase): result = view(None, request) self.assertEqual(result, ('abc', request)) - @testing.skip_on('pypy', 'java') + @testing.skip_on('java') def test_set_forbidden_view_with_renderer(self): from zope.interface import implementedBy from pyramid.interfaces import IRequest @@ -1,6 +1,6 @@ [tox] envlist = - py24,py25,py26,py27,jython,pypy,cover + py25,py26,py27,jython,pypy,cover [testenv] commands = |
