예제 #1
0
파일: test_view.py 프로젝트: mcdonc/memphis
    def test_view_register_secured_view(self):
        def render(request):
            return '<html>Secured view</html>'

        view.registerView('index.html', render,
                          permission = 'Protected')

        class SimpleAuth(object):
            interface.implements(IAuthenticationPolicy)

            def effective_principals(self, request):
                return (1,2)

        class Authz(object):
            interface.implements(IAuthorizationPolicy)

            allowed = False

            def permits(self, context, princials, permission):
                return self.allowed

        self._init_memphis()

        config.registry.registerUtility(SimpleAuth(), IAuthenticationPolicy)
        config.registry.registerUtility(Authz(), IAuthorizationPolicy)

        context = Context()
        self.assertRaises(
            HTTPForbidden,
            self._view, 'index.html', context, self.request)

        Authz.allowed = True
        v = self._view('index.html', context, self.request)
        self.assertEqual(v.body, '<html>Secured view</html>')
예제 #2
0
파일: test_view.py 프로젝트: mcdonc/memphis
    def test_view_with_template(self):
        view.registerView(
            'index.html', view.View, Context,
            template=view.template('memphis.view.tests:templates/test.pt'))

        self._init_memphis()

        res = view.renderView('index.html', Context(), self.request)
        self.assertEqual(res.body, '<div>My pagelet</div>\n')
예제 #3
0
파일: test_view.py 프로젝트: mcdonc/memphis
    def test_view_register_view_function_requestonly(self):
        def render(request):
            return '<html>request: %s</html>'%(request is not None)

        view.registerView('index.html', render)
        self._init_memphis()

        context = Context()
        v = self._view('index.html', context, self.request)
        self.assertEqual(v.body, '<html>request: True</html>')
예제 #4
0
파일: test_view.py 프로젝트: mcdonc/memphis
    def test_view_register_view_function_requestonly_template(self):
        def render(request):
            return {}

        view.registerView('index.html', render,
                          template = view.template('templates/test.pt'))
        self._init_memphis()

        context = Context()
        v = self._view('index.html', context, self.request)
        self.assertEqual(v.body, '<div>My pagelet</div>\n')
예제 #5
0
파일: test_view.py 프로젝트: mcdonc/memphis
    def test_view_httpresp_from_render(self):
        class MyView(view.View):
            def render(self):
                raise HTTPFound()

        view.registerView('index.html', MyView, Context)
        self._init_memphis()

        self.assertRaises(
            HTTPFound,
            view.renderView, 'index.html', Context(), self.request)
예제 #6
0
파일: test_view.py 프로젝트: mcdonc/memphis
    def test_view_subpath_with_template(self):
        class MyView(view.View):
            @view.subpath(renderer=Renderer(view.template('templates/test.pt')))
            def validate(self):
                return {}

        view.registerView('index.html', MyView, Context)
        self._init_memphis()

        self.request.subpath = ('validate',)
        v = self._view('index.html', Context(), self.request)
        self.assertEqual(v.body, '<div>My pagelet</div>\n')
예제 #7
0
파일: test_view.py 프로젝트: mcdonc/memphis
    def test_view_register_view_err1(self):
        # default 'render' implementation
        class MyView(view.View):
            pass

        view.registerView('index.html', MyView, Context)
        self._init_memphis()

        context = Context()
        self.assertTrue(
            view.renderView('index.html', context,
                            self.request).content_length ==0)
예제 #8
0
파일: test_view.py 프로젝트: mcdonc/memphis
    def test_view_httpresp_from_update(self):
        class MyView(view.View):
            def update(self):
                raise HTTPForbidden()

        view.registerView('index.html', MyView, Context,
                          template = view.template('templates/test.pt'))
        self._init_memphis()

        self.assertRaises(
            HTTPForbidden,
            view.renderView, 'index.html', Context(), self.request)
예제 #9
0
파일: test_view.py 프로젝트: mcdonc/memphis
    def test_view_subpath_json_renderer(self):
        class MyView(view.View):
            @view.subpath(renderer=view.json)
            def validate(self):
                return {'text': 'Validate method'}

        view.registerView('index.html', MyView, Context)
        self._init_memphis()

        self.request.subpath = ('validate',)
        v = self._view('index.html', Context(), self.request)
        self.assertTrue(isinstance(v, Response))
        self.assertEqual(v.body, '{"text": "Validate method"}')
예제 #10
0
파일: test_view.py 프로젝트: mcdonc/memphis
    def test_view_custom_response(self):
        class MyView(view.View):
            def render(self):
                response = self.request.response
                response.status = '202'
                return 'test'

        view.registerView('index.html', MyView, Context)
        self._init_memphis()

        res = view.renderView('index.html', Context(), self.request)
        self.assertEqual(res.status, '202 Accepted')
        self.assertEqual(res.body, 'test')
예제 #11
0
파일: test_view.py 프로젝트: mcdonc/memphis
    def test_view_register_view(self):
        class MyView(view.View):
            def render(self):
                return '<html>view</html>'

        view.registerView('index.html', MyView)
        self._init_memphis()

        context = Context()
        v = self._view('index.html', context, self.request)
        self.assertEqual(v.status, '200 OK')
        self.assertEqual(v.content_type, 'text/html')
        self.assertEqual(v.body, '<html>view</html>')
예제 #12
0
파일: test_view.py 프로젝트: mcdonc/memphis
    def test_view_register_default_view_seperate_reg(self):
        def render(request):
            return '<html>content</html>'

        view.registerView('index.html', render)
        view.registerDefaultView('index.html')
        self._init_memphis()

        context = Context()
        v = self._view('index.html', context, self.request)
        self.assertEqual(v.body, '<html>content</html>')

        v = self._view('', context, self.request)
        self.assertEqual(v.body, '<html>content</html>')
예제 #13
0
파일: test_view.py 프로젝트: mcdonc/memphis
    def test_view_register_view_class_requestonly(self):
        class MyView(object):
            def __init__(self, request):
                self.request = request

            def render(self):
                return '<html>view: %s</html>'%(self.request is not None)

        view.registerView('index.html', MyView)
        self._init_memphis()

        context = Context()
        v = self._view('index.html', context, self.request)
        self.assertEqual(v.body, '<html>view: True</html>')
예제 #14
0
파일: test_view.py 프로젝트: mcdonc/memphis
    def test_view_register_view_layout(self):
        class MyLayout(view.Layout):
            def render(self, rendered):
                return '<html>%s</html>'%rendered

        class MyView(view.View):
            def render(self):
                return 'test'

        view.registerView('index.html', MyView, Context)
        view.registerLayout('', Context, klass=MyLayout)
        self._init_memphis()

        context = Context()
        res = view.renderView('index.html', context, self.request)
        self.assertTrue('<html>test</html>' in res.body)
예제 #15
0
파일: test_view.py 프로젝트: mcdonc/memphis
    def test_view_subpath_call(self):
        class MyView(view.View):
            @view.subpath()
            def validate(self):
                return 'Validate method'

            def render(self):
                return 'Render method'

        view.registerView('index.html', MyView, Context)
        self._init_memphis()

        v = self._view('index.html', Context(), self.request)
        self.assertEqual(v.body, 'Render method')

        self.request.subpath = ('validate',)
        v = self._view('index.html', Context(), self.request)
        self.assertTrue(isinstance(v, str))
        self.assertEqual(v, 'Validate method')
예제 #16
0
파일: test_view.py 프로젝트: mcdonc/memphis
    def test_view_register_view_disable_layout1(self):
        class MyLayout(view.Layout):
            def render(self, rendered):
                return '<html>%s</html>'%rendered

        class MyView(view.View):
            def render(self):
                return 'test'

        view.registerView('index.html', MyView, Context, layout=None)
        view.registerLayout('', Context, klass=MyLayout)
        self._init_memphis()

        context = Context()
        res = view.renderView('index.html', context, self.request)
        self.assertEqual(res.body, 'test')

        v = MyView(None, self.request)
        self.assertEqual(MyLayout(v, self.request).render(
                v.render()), '<html>test</html>')
예제 #17
0
파일: test_view.py 프로젝트: mcdonc/memphis
    def test_view_register_callable_permission(self):
        def render(request):
            return '<html>Secured view</html>'

        allowed = False
        def checkPermission(context, request):
            return allowed

        view.registerView('index.html', render,
                          permission = checkPermission)

        self._init_memphis()

        context = Context()
        self.assertRaises(
            HTTPForbidden, self._view, 'index.html', context, self.request)

        allowed = True
        v = self._view('index.html', context, self.request)
        self.assertEqual(v.body, '<html>Secured view</html>')
예제 #18
0
파일: test_view.py 프로젝트: mcdonc/memphis
    def test_view_subpath_class_requestonly(self):
        class MyView(object):
            def __init__(self, request):
                self.request = request

            @view.subpath()
            def validate(self):
                return 'Validate method: %s'%(self.request is not None)

            def render(self):
                return 'Render method'

        view.registerView('index.html', MyView, Context)
        self._init_memphis()

        v = self._view('index.html', Context(), self.request)
        self.assertEqual(v.body, 'Render method')

        self.request.subpath = ('validate',)
        v = self._view('index.html', Context(), self.request)
        self.assertTrue(isinstance(v, str))
        self.assertEqual(v, 'Validate method: True')