Esempio n. 1
0
    def test_handle_exception_2(self):
        res = 'I fixed it!'

        class MyMiddleware(object):
            def handle_exception(self, handler, exception):
                raise ValueError()

        class MyHandler(RequestHandler):
            middleware = [MyMiddleware()]

            def get(self, **kwargs):
                raise ValueError()

        class ErrorHandler(RequestHandler):
            def handle_exception(self, exception):
                return Response(res)

        app = Tipfy(rules=[
            Rule('/', name='home', handler=MyHandler),
        ],
                    debug=False)
        app.error_handlers[500] = ErrorHandler

        client = app.get_test_client()
        response = client.get('/')
        self.assertEqual(response.data, res)
Esempio n. 2
0
    def test_abort(self):
        class HandlerWith400(RequestHandler):
            def get(self, **kwargs):
                self.abort(400)

        class HandlerWith403(RequestHandler):
            def post(self, **kwargs):
                self.abort(403)

        class HandlerWith404(RequestHandler):
            def put(self, **kwargs):
                self.abort(404)

        app = Tipfy(rules=[
            Rule('/400', endpoint='400', handler=HandlerWith400),
            Rule('/403', endpoint='403', handler=HandlerWith403),
            Rule('/404', endpoint='404', handler=HandlerWith404),
        ], debug=True)

        client = app.get_test_client()

        response = client.get('/400')
        self.assertEqual(response.status_code, 400)

        response = client.post('/403')
        self.assertEqual(response.status_code, 403)

        response = client.put('/404')
        self.assertEqual(response.status_code, 404)
Esempio n. 3
0
    def test_handler(self):
        rules = [
            HandlerPrefix('resources.alternative_routing.', [
                Rule('/', name='home', handler='HomeHandler'),
                Rule('/foo', name='home/foo', handler='HomeHandler:foo'),
                Rule('/bar', name='home/bar', handler='HomeHandler:bar'),
                Rule('/other/foo',
                     name='other/foo',
                     handler='OtherHandler:foo'),
                Rule('/other/bar',
                     name='other/bar',
                     handler='OtherHandler:bar'),
            ])
        ]

        app = Tipfy(rules)
        client = app.get_test_client()

        response = client.get('/')
        self.assertEqual(response.data, 'home-get')
        response = client.get('/foo')
        self.assertEqual(response.data, 'home-foo')
        response = client.get('/bar')
        self.assertEqual(response.data, 'home-bar')
        response = client.get('/other/foo')
        self.assertEqual(response.data, 'other-foo')
        response = client.get('/other/bar')
        self.assertEqual(response.data, 'other-bar')
Esempio n. 4
0
    def test_custom_error_handlers(self):
        app = Tipfy([
            Rule('/', handler=AllMethodsHandler, name='home'),
            Rule('/broken', handler=BrokenHandler, name='broken'),
        ],
                    debug=False)
        app.error_handlers = {
            404: Handle404,
            405: Handle405,
            500: Handle500,
        }
        client = app.get_test_client()

        res = client.get('/nowhere')
        self.assertEqual(res.status_code, 404)
        self.assertEqual(res.data, '404 custom handler')

        res = client.put('/broken')
        self.assertEqual(res.status_code, 405)
        self.assertEqual(res.data, '405 custom handler')
        self.assertEqual(res.headers.get('Allow'), 'GET')

        res = client.get('/broken')
        self.assertEqual(res.status_code, 500)
        self.assertEqual(res.data, '500 custom handler')
Esempio n. 5
0
    def test_redirect_relative_uris(self):
        class MyHandler(RequestHandler):
            def get(self):
                return self.redirect(self.request.args.get('redirect'))

        app = Tipfy(rules=[
            Rule('/foo/bar', name='test1', handler=MyHandler),
            Rule('/foo/bar/', name='test2', handler=MyHandler),
        ])
        client = app.get_test_client()

        response = client.get('/foo/bar/', query_string={'redirect': '/baz'})
        self.assertEqual(response.headers['Location'], 'http://localhost/baz')

        response = client.get('/foo/bar/', query_string={'redirect': './baz'})
        self.assertEqual(response.headers['Location'], 'http://localhost/foo/bar/baz')

        response = client.get('/foo/bar/', query_string={'redirect': '../baz'})
        self.assertEqual(response.headers['Location'], 'http://localhost/foo/baz')

        response = client.get('/foo/bar', query_string={'redirect': '/baz'})
        self.assertEqual(response.headers['Location'], 'http://localhost/baz')

        response = client.get('/foo/bar', query_string={'redirect': './baz'})
        self.assertEqual(response.headers['Location'], 'http://localhost/foo/baz')

        response = client.get('/foo/bar', query_string={'redirect': '../baz'})
        self.assertEqual(response.headers['Location'], 'http://localhost/baz')
Esempio n. 6
0
    def test_middleware_multiple_changes(self):
        class MyHandler(RequestHandler):
            middleware = [SessionMiddleware(), i18n.I18nMiddleware()]

            def get(self, **kwargs):
                locale = self.i18n.locale
                return Response(locale)

        app = Tipfy(rules=[
            Rule('/', name='home', handler=MyHandler)
        ], config={
            'tipfy.sessions': {
                'secret_key': 'secret',
            },
            'tipfy.i18n': {
                'locale_request_lookup': [('args', 'lang'), ('session', '_locale')],
            }
        })

        client = app.get_test_client()
        response = client.get('/')
        self.assertEqual(response.data, 'en_US')

        response = client.get('/?lang=pt_BR')
        self.assertEqual(response.data, 'pt_BR')

        response = client.get('/')
        self.assertEqual(response.data, 'pt_BR')

        response = client.get('/?lang=en_US')
        self.assertEqual(response.data, 'en_US')

        response = client.get('/')
        self.assertEqual(response.data, 'en_US')
Esempio n. 7
0
    def test_name_prefix(self):
        class DummyHandler(RequestHandler):
            def get(self, **kwargs):
                return ''

        rules = [
            NamePrefix('company-', [
                Rule('/', name='home', handler=DummyHandler),
                Rule('/about', name='about', handler=DummyHandler),
                Rule('/contact', name='contact', handler=DummyHandler),
            ]),
        ]

        app = Tipfy(rules)

        with app.get_test_handler('/') as handler:
            self.assertEqual(handler.url_for('company-home'), '/')
            self.assertEqual(handler.url_for('company-about'), '/about')
            self.assertEqual(handler.url_for('company-contact'), '/contact')

        with app.get_test_handler('/') as handler:
            self.assertEqual(handler.request.rule.name, 'company-home')

        with app.get_test_handler('/about') as handler:
            self.assertEqual(handler.request.rule.name, 'company-about')

        with app.get_test_handler('/contact') as handler:
            self.assertEqual(handler.request.rule.name, 'company-contact')
Esempio n. 8
0
    def test_middleware_multiple_changes(self):
        class MyHandler(RequestHandler):
            middleware = [SessionMiddleware(), i18n.I18nMiddleware()]

            def get(self, **kwargs):
                locale = self.i18n.locale
                return Response(locale)

        app = Tipfy(rules=[
            Rule('/', name='home', handler=MyHandler)
        ], config={
            'tipfy.sessions': {
                'secret_key': 'secret',
            },
            'tipfy.i18n': {
                'locale_request_lookup': [('args', 'lang'), ('session', '_locale')],
            }
        })

        client = app.get_test_client()
        response = client.get('/')
        self.assertEqual(response.data, 'en_US')

        response = client.get('/?lang=pt_BR')
        self.assertEqual(response.data, 'pt_BR')

        response = client.get('/')
        self.assertEqual(response.data, 'pt_BR')

        response = client.get('/?lang=en_US')
        self.assertEqual(response.data, 'en_US')

        response = client.get('/')
        self.assertEqual(response.data, 'en_US')
Esempio n. 9
0
    def test_handle_exception_2(self):
        res = 'I fixed it!'

        class MyMiddleware(object):
            def handle_exception(self, handler, exception):
                raise ValueError()

        class MyHandler(RequestHandler):
            middleware = [MyMiddleware()]

            def get(self, **kwargs):
                raise ValueError()

        class ErrorHandler(RequestHandler):
            def handle_exception(self, exception):
                return Response(res)

        app = Tipfy(rules=[
            Rule('/', name='home', handler=MyHandler),
        ], debug=False)
        app.error_handlers[500] = ErrorHandler

        client = app.get_test_client()
        response = client.get('/')
        self.assertEqual(response.data, res)
Esempio n. 10
0
    def test_custom_error_handlers(self):
        class HomeHandler(RequestHandler):
            def get(self):
                return Response('')

        app = Tipfy([
            Rule('/', handler=HomeHandler, name='home'),
            Rule('/broken', handler=BrokenHandler, name='broken'),
        ], debug=False)
        app.error_handlers = {
            404: Handle404,
            405: Handle405,
            500: Handle500,
        }
        client = app.get_test_client()

        res = client.get('/nowhere')
        self.assertEqual(res.status_code, 404)
        self.assertEqual(res.data, '404 custom handler')

        res = client.put('/')
        self.assertEqual(res.status_code, 405)
        self.assertEqual(res.data, '405 custom handler')
        self.assertEqual(res.headers.get('Allow'), 'GET')

        res = client.get('/broken')
        self.assertEqual(res.status_code, 500)
        self.assertEqual(res.data, '500 custom handler')
Esempio n. 11
0
    def test_make_response(self):
        app = Tipfy()
        request = Request.from_values()

        # Empty.
        response = app.make_response(request)
        self.assertEqual(isinstance(response, app.response_class), True)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data, '')

        # From Response.
        response = app.make_response(request, Response('Hello, World!'))
        self.assertEqual(isinstance(response, app.response_class), True)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data, 'Hello, World!')

        # From string.
        response = app.make_response(request, 'Hello, World!')
        self.assertEqual(isinstance(response, app.response_class), True)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data, 'Hello, World!')

        # From tuple.
        response = app.make_response(request, 'Hello, World!', 404)
        self.assertEqual(isinstance(response, app.response_class), True)
        self.assertEqual(response.status_code, 404)
        self.assertEqual(response.data, 'Hello, World!')

        # From None.
        self.assertRaises(ValueError, app.make_response, request, None)
Esempio n. 12
0
    def test_redirect_relative_uris(self):
        class MyHandler(RequestHandler):
            def get(self):
                return self.redirect(self.request.args.get('redirect'))

        app = Tipfy(rules=[
            Rule('/foo/bar', name='test1', handler=MyHandler),
            Rule('/foo/bar/', name='test2', handler=MyHandler),
        ])
        client = app.get_test_client()

        response = client.get('/foo/bar/', query_string={'redirect': '/baz'})
        self.assertEqual(response.headers['Location'], 'http://localhost/baz')

        response = client.get('/foo/bar/', query_string={'redirect': './baz'})
        self.assertEqual(response.headers['Location'],
                         'http://localhost/foo/bar/baz')

        response = client.get('/foo/bar/', query_string={'redirect': '../baz'})
        self.assertEqual(response.headers['Location'],
                         'http://localhost/foo/baz')

        response = client.get('/foo/bar', query_string={'redirect': '/baz'})
        self.assertEqual(response.headers['Location'], 'http://localhost/baz')

        response = client.get('/foo/bar', query_string={'redirect': './baz'})
        self.assertEqual(response.headers['Location'],
                         'http://localhost/foo/baz')

        response = client.get('/foo/bar', query_string={'redirect': '../baz'})
        self.assertEqual(response.headers['Location'], 'http://localhost/baz')
Esempio n. 13
0
 def test_get_config(self):
     app = Tipfy(rules=[
         Rule('/', name='home', handler=AllMethodsHandler),
     ],
                 config={'foo': {
                     'bar': 'baz',
                 }})
     with app.get_test_handler('/') as handler:
         self.assertEqual(handler.get_config('foo', 'bar'), 'baz')
Esempio n. 14
0
 def test_get_config(self):
     app = Tipfy(rules=[
         Rule('/', name='home', handler=AllMethodsHandler),
     ], config = {
         'foo': {
             'bar': 'baz',
         }
     })
     with app.get_test_handler('/') as handler:
         self.assertEqual(handler.get_config('foo', 'bar'), 'baz')
Esempio n. 15
0
    def test_app_get_config(self):
        app = Tipfy()

        self.assertEqual(app.get_config('resources.i18n', 'locale'), 'en_US')
        self.assertEqual(app.get_config('resources.i18n', 'locale', 'foo'), 'en_US')
        self.assertEqual(app.get_config('resources.i18n'), {
            'locale': 'en_US',
            'timezone': 'America/Chicago',
            'required': REQUIRED_VALUE,
        })
Esempio n. 16
0
def compile_templates(argv=None):
    """Compiles templates for better performance. This is a command line
    script. From the buildout directory, run:

        bin/jinja2_compile

    It will compile templates from the directory configured for 'templates_dir'
    to the one configured for 'templates_compiled_target'.

    At this time it doesn't accept any arguments.
    """
    if argv is None:
        argv = sys.argv

    set_gae_sys_path()
    from config import config

    app = Tipfy(config=config)
    template_path = app.get_config('tipfyext.jinja2', 'templates_dir')
    compiled_path = app.get_config('tipfyext.jinja2',
        'templates_compiled_target')

    if compiled_path is None:
        raise ValueError('Missing configuration key to compile templates.')

    if isinstance(template_path, basestring):
        # A single path.
        source = os.path.join(app_path, template_path)
    else:
        # A list of paths.
        source = [os.path.join(app_path, p) for p in template_path]

    target = os.path.join(app_path, compiled_path)

    # Set templates dir and deactivate compiled dir to use normal loader to
    # find the templates to be compiled.
    app.config['tipfyext.jinja2']['templates_dir'] = source
    app.config['tipfyext.jinja2']['templates_compiled_target'] = None

    if target.endswith('.zip'):
        zip_cfg = 'deflated'
    else:
        zip_cfg = None

    old_list_templates = FileSystemLoader.list_templates
    FileSystemLoader.list_templates = list_templates

    env = Jinja2.factory(app, 'jinja2').environment
    env.compile_templates(target, extensions=None,
        filter_func=filter_templates, zip=zip_cfg, log_function=logger,
        ignore_errors=False, py_compile=False)

    FileSystemLoader.list_templates = old_list_templates
Esempio n. 17
0
    def test_request_handler_get_config(self):
        app = Tipfy()
        with app.get_test_context() as request:
            handler = RequestHandler(request)

            self.assertEqual(handler.get_config('resources.i18n', 'locale'), 'en_US')
            self.assertEqual(handler.get_config('resources.i18n', 'locale', 'foo'), 'en_US')
            self.assertEqual(handler.get_config('resources.i18n'), {
                'locale': 'en_US',
                'timezone': 'America/Chicago',
                'required': REQUIRED_VALUE,
            })
Esempio n. 18
0
    def test_405_debug(self):
        class HomeHandler(RequestHandler):
            pass

        app = Tipfy(rules=[
            Rule('/', endpoint='home', handler=HomeHandler),
        ], debug=True)

        client = app.get_test_client()

        for method in ALLOWED_METHODS:
            response = client.open('/', method=method)
            self.assertEqual(response.status_code, 405)
Esempio n. 19
0
    def test_500(self):
        """Handler import will fail."""
        app = Tipfy(rules=[Rule('/', name='home', handler='non.existent.handler')])
        client = app.get_test_client()

        # Normal mode.
        response = client.get('/')
        self.assertEqual(response.status_code, 500)

        # Debug mode.
        app.debug = True
        app.config['tipfy']['enable_debugger'] = False
        self.assertRaises(ImportError, client.get, '/')
Esempio n. 20
0
    def test_redirect_empty(self):
        class HandlerWithRedirect(RequestHandler):
            def get(self, **kwargs):
                return self.redirect('/', empty=True)

        app = Tipfy(rules=[
            Rule('/', name='home', handler=AllMethodsHandler),
            Rule('/redirect-me', name='redirect', handler=HandlerWithRedirect),
        ])

        client = app.get_test_client()
        response = client.get('/redirect-me', follow_redirects=False)
        self.assertEqual(response.data, '')
Esempio n. 21
0
    def test_redirect_to_empty(self):
        class HandlerWithRedirectTo(RequestHandler):
            def get(self, **kwargs):
                return self.redirect_to('home', _empty=True)

        app = Tipfy(rules=[
            Rule('/', name='home', handler=AllMethodsHandler),
            Rule('/redirect-me', name='redirect', handler=HandlerWithRedirectTo),
        ])

        client = app.get_test_client()
        response = client.get('/redirect-me', follow_redirects=False)
        self.assertEqual(response.data, '')
Esempio n. 22
0
    def test_501(self):
        """Method is not in app.allowed_methods."""
        app = Tipfy()
        client = app.get_test_client()

        # Normal mode.
        response = client.open('/', method='CONNECT')
        self.assertEqual(response.status_code, 501)

        # Debug mode.
        app.debug = True
        response = client.open('/', method='CONNECT')
        self.assertEqual(response.status_code, 501)
Esempio n. 23
0
    def test_501(self):
        """Method is not in app.allowed_methods."""
        app = Tipfy()
        client = app.get_test_client()

        # Normal mode.
        response = client.open('/', method='CONNECT')
        self.assertEqual(response.status_code, 501)

        # Debug mode.
        app.debug = True
        response = client.open('/', method='CONNECT')
        self.assertEqual(response.status_code, 501)
Esempio n. 24
0
    def test_json(self):
        class JsonHandler(RequestHandler):
            def get(self, **kwargs):
                return Response(self.request.json['foo'])

        app = Tipfy(rules=[
            Rule('/', name='home', handler=JsonHandler),
        ], debug=True)

        data = json_encode({'foo': 'bar'})
        client = app.get_test_client()
        response = client.get('/', content_type='application/json', data=data)
        self.assertEqual(response.data, 'bar')
Esempio n. 25
0
    def test_404(self):
        """No URL rules defined."""
        app = Tipfy()
        client = app.get_test_client()

        # Normal mode.
        response = client.get('/')
        self.assertEqual(response.status_code, 404)

        # Debug mode.
        app.debug = True
        response = client.get('/')
        self.assertEqual(response.status_code, 404)
Esempio n. 26
0
    def test_404(self):
        """No URL rules defined."""
        app = Tipfy()
        client = app.get_test_client()

        # Normal mode.
        response = client.get('/')
        self.assertEqual(response.status_code, 404)

        # Debug mode.
        app.debug = True
        response = client.get('/')
        self.assertEqual(response.status_code, 404)
Esempio n. 27
0
    def test_handle_exception(self):
        app = Tipfy([
            Rule('/', handler=AllMethodsHandler, name='home'),
            Rule('/broken', handler=BrokenHandler, name='broken'),
            Rule('/broken-but-fixed', handler=BrokenButFixedHandler, name='broken-but-fixed'),
        ], debug=False)
        client = app.get_test_client()

        response = client.get('/broken')
        self.assertEqual(response.status_code, 500)

        response = client.get('/broken-but-fixed')
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data, 'That was close!')
Esempio n. 28
0
    def test_500(self):
        """Handler import will fail."""
        app = Tipfy(
            rules=[Rule('/', name='home', handler='non.existent.handler')])
        client = app.get_test_client()

        # Normal mode.
        response = client.get('/')
        self.assertEqual(response.status_code, 500)

        # Debug mode.
        app.debug = True
        app.config['tipfy']['enable_debugger'] = False
        self.assertRaises(ImportError, client.get, '/')
Esempio n. 29
0
    def test_json(self):
        class JsonHandler(RequestHandler):
            def get(self, **kwargs):
                return Response(self.request.json['foo'])

        app = Tipfy(rules=[
            Rule('/', name='home', handler=JsonHandler),
        ],
                    debug=True)

        data = json_encode({'foo': 'bar'})
        client = app.get_test_client()
        response = client.get('/', content_type='application/json', data=data)
        self.assertEqual(response.data, 'bar')
Esempio n. 30
0
    def test_request_handler_get_config(self):
        app = Tipfy()
        with app.get_test_context() as request:
            handler = RequestHandler(request)

            self.assertEqual(handler.get_config('resources.i18n', 'locale'),
                             'en_US')
            self.assertEqual(
                handler.get_config('resources.i18n', 'locale', 'foo'), 'en_US')
            self.assertEqual(
                handler.get_config('resources.i18n'), {
                    'locale': 'en_US',
                    'timezone': 'America/Chicago',
                    'required': REQUIRED_VALUE,
                })
Esempio n. 31
0
    def test_dev_run(self):
        self._set_dev_server_flag(True)

        os.environ['APPLICATION_ID'] = 'my-app'
        os.environ['SERVER_SOFTWARE'] = 'Development'
        os.environ['SERVER_NAME'] = 'localhost'
        os.environ['SERVER_PORT'] = '8080'
        os.environ['REQUEST_METHOD'] = 'GET'

        app = Tipfy(rules=[
            Rule('/', name='home', handler=AllMethodsHandler),
        ], debug=True)

        app.run()
        self.assertEqual(sys.stdout.getvalue(), 'Status: 200 OK\r\nContent-Type: text/html; charset=utf-8\r\nContent-Length: 11\r\n\r\nMethod: GET')
Esempio n. 32
0
    def test_engine_factory(self):
        def get_jinja2_env():
            app = handler.app
            cfg = app.get_config('tipfyext.jinja2')

            loader = FileSystemLoader(cfg.get('templates_dir'))

            return Environment(loader=loader)

        app = Tipfy(
            config={
                'tipfyext.jinja2': {
                    'templates_dir': templates_dir,
                    'engine_factory': get_jinja2_env,
                }
            })
        local.request = Request.from_values()
        local.request.app = app
        handler = RequestHandler(local.request)
        jinja2 = Jinja2(app)

        message = 'Hello, World!'
        res = jinja2.render_template(handler,
                                     'template1.html',
                                     message=message)
        self.assertEqual(res, message)
Esempio n. 33
0
    def test_render_template_with_i18n(self):
        app = Tipfy(
            config={
                'tipfyext.jinja2': {
                    'templates_dir':
                    templates_dir,
                    'environment_args':
                    dict(
                        autoescape=True,
                        extensions=[
                            'jinja2.ext.autoescape', 'jinja2.ext.with_',
                            'jinja2.ext.i18n'
                        ],
                    ),
                },
                'tipfy.sessions': {
                    'secret_key': 'secret',
                },
            })
        local.request = Request.from_values()
        local.request.app = app
        handler = RequestHandler(local.request)
        jinja2 = Jinja2(app)

        message = 'Hello, i18n World!'
        res = jinja2.render_template(handler,
                                     'template2.html',
                                     message=message)
        self.assertEqual(res, message)
Esempio n. 34
0
    def test_handler_prefix(self):
        rules = [
            HandlerPrefix('resources.handlers.', [
                Rule('/', name='home', handler='HomeHandler'),
                Rule('/defaults', name='defaults', handler='HandlerWithRuleDefaults', defaults={'foo': 'bar'}),
            ])
        ]

        app = Tipfy(rules)
        client = app.get_test_client()

        response = client.get('/')
        self.assertEqual(response.data, 'Hello, World!')

        response = client.get('/defaults')
        self.assertEqual(response.data, 'bar')
Esempio n. 35
0
    def test_render_json_response(self):
        local.current_handler = HomeHandler(Tipfy(), Request.from_values())
        response = render_json_response({'foo': 'bar'})

        self.assertEqual(isinstance(response, Response), True)
        self.assertEqual(response.mimetype, 'application/json')
        self.assertEqual(response.data, '{"foo":"bar"}')
Esempio n. 36
0
    def test_store_instances(self):
        from tipfy.appengine.auth import AuthStore
        from tipfy.i18n import I18nStore
        from tipfy.sessions import SecureCookieSession

        app = Tipfy(rules=[
            Rule('/', name='home', handler=AllMethodsHandler),
        ], config={
            'tipfy.sessions': {
                'secret_key': 'secret',
            },
        })
        with app.get_test_handler('/') as handler:
            self.assertEqual(isinstance(handler.session, SecureCookieSession), True)
            self.assertEqual(isinstance(handler.auth, AuthStore), True)
            self.assertEqual(isinstance(handler.i18n, I18nStore), True)
Esempio n. 37
0
    def test_url_for(self):
        app = Tipfy(rules=[
            Rule('/', name='home', handler=AllMethodsHandler),
            Rule('/about', name='about', handler='handlers.About'),
            Rule('/contact', name='contact', handler='handlers.Contact'),
        ])
        with app.get_test_handler('/') as handler:
            self.assertEqual(handler.url_for('home'), '/')
            self.assertEqual(handler.url_for('about'), '/about')
            self.assertEqual(handler.url_for('contact'), '/contact')

            # Extras
            self.assertEqual(handler.url_for('about', _anchor='history'), '/about#history')
            self.assertEqual(handler.url_for('about', _full=True), 'http://localhost/about')
            self.assertEqual(handler.url_for('about', _netloc='www.google.com'), 'http://www.google.com/about')
            self.assertEqual(handler.url_for('about', _scheme='https'), 'https://localhost/about')
Esempio n. 38
0
    def test_format_date_no_format_but_configured(self):
        app = Tipfy(config={
            'tipfy.sessions': {
                'secret_key': 'secret',
            },
            'tipfy.i18n': {
                'timezone': 'UTC',
                'date_formats': {
                    'time':             'medium',
                    'date':             'medium',
                    'datetime':         'medium',
                    'time.short':       None,
                    'time.medium':      None,
                    'time.full':        None,
                    'time.long':        None,
                    'date.short':       None,
                    'date.medium':      'full',
                    'date.full':        None,
                    'date.long':        None,
                    'datetime.short':   None,
                    'datetime.medium':  None,
                    'datetime.full':    None,
                    'datetime.long':    None,
                }
            }
        })
        local.current_handler = RequestHandler(app, Request.from_values('/'))

        value = datetime.datetime(2009, 11, 10, 16, 36, 05)
        self.assertEqual(i18n.format_date(value), u'Tuesday, November 10, 2009')
Esempio n. 39
0
    def test_renew_session(self):
        app = Tipfy()
        request = Request.from_values('/')
        local.current_handler = RequestHandler(app, request)

        user = User.create('my_username', 'my_id')
        user.renew_session(max_age=86400)
Esempio n. 40
0
    def test_render_json_response(self):
        with Tipfy().get_test_context() as request:
            response = render_json_response({'foo': 'bar'})

            self.assertEqual(isinstance(response, Response), True)
            self.assertEqual(response.mimetype, 'application/json')
            self.assertEqual(response.data, '{"foo":"bar"}')
Esempio n. 41
0
def get_app():
    app = Tipfy(rules=[
        Rule('/login', name='auth/login', handler=LoginHandler),
        Rule('/logout', name='auth/logout', handler=LogoutHandler),
        Rule('/signup', name='auth/signup', handler=SignupHandler),
    ])
    return app
Esempio n. 42
0
    def test_handle_exception(self):
        app = Tipfy([
            Rule('/', handler=AllMethodsHandler, name='home'),
            Rule('/broken', handler=BrokenHandler, name='broken'),
            Rule('/broken-but-fixed',
                 handler=BrokenButFixedHandler,
                 name='broken-but-fixed'),
        ],
                    debug=False)
        client = app.get_test_client()

        response = client.get('/broken')
        self.assertEqual(response.status_code, 500)

        response = client.get('/broken-but-fixed')
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data, 'That was close!')
Esempio n. 43
0
    def test_handle_exception_3(self):
        class MyMiddleware(object):
            def handle_exception(self, handler, exception):
                pass

        class MyHandler(RequestHandler):
            middleware = [MyMiddleware()]

            def get(self, **kwargs):
                raise ValueError()

        app = Tipfy(rules=[
            Rule('/', name='home', handler=MyHandler),
        ])
        client = app.get_test_client()
        response = client.get('/')
        self.assertEqual(response.status_code, 500)
Esempio n. 44
0
 def _get_app(self, *args, **kwargs):
     app = Tipfy(config={
         'tipfy.sessions': {
             'secret_key': 'secret',
         },
     })
     local.current_handler = handler = RequestHandler(app, Request.from_values(*args, **kwargs))
     return app
Esempio n. 45
0
    def test_200(self):
        app = Tipfy(rules=[Rule('/', name='home', handler=AllMethodsHandler)])
        client = app.get_test_client()

        for method in app.allowed_methods:
            response = client.open('/', method=method)
            self.assertEqual(response.status_code, 200, method)
            if method == 'HEAD':
                self.assertEqual(response.data, '')
            else:
                self.assertEqual(response.data, 'Method: %s' % method)

        # App Engine mode.
        self._set_dev_server_flag(True)
        response = client.get('/')
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data, 'Method: GET')
Esempio n. 46
0
    def test_redirect(self):
        class HomeHandler(RequestHandler):
            def get(self, **kwargs):
                return Response('Home sweet home!')

        class HandlerWithRedirect(RequestHandler):
            def get(self, **kwargs):
                return self.redirect('/')

        app = Tipfy(rules=[
            Rule('/', endpoint='home', handler=HomeHandler),
            Rule('/redirect-me', endpoint='redirect', handler=HandlerWithRedirect),
        ], debug=True)

        client = app.get_test_client()
        response = client.get('/redirect-me', follow_redirects=True)
        self.assertEqual(response.data, 'Home sweet home!')
Esempio n. 47
0
    def test_200(self):
        class MyHandler(RequestHandler):
            def delete(self, **kwargs):
                return Response('Method: %s' % self.request.method)

            get = head = options = post = put = trace = delete

        app = Tipfy(rules=[Rule('/', name='home', handler=MyHandler)])
        client = app.get_test_client()

        for method in ALLOWED_METHODS:
            response = client.open('/', method=method)
            self.assertEqual(response.status_code, 200, method)
            if method == 'HEAD':
                self.assertEqual(response.data, '')
            else:
                self.assertEqual(response.data, 'Method: %s' % method)
Esempio n. 48
0
    def test_handle_exception_3(self):
        class MyMiddleware(object):
            def handle_exception(self, handler, exception):
                pass

        class MyHandler(RequestHandler):
            middleware = [MyMiddleware()]

            def get(self, **kwargs):
                raise ValueError()

        app = Tipfy(rules=[
            Rule('/', name='home', handler=MyHandler),
        ])
        client = app.get_test_client()
        response = client.get('/')
        self.assertEqual(response.status_code, 500)
Esempio n. 49
0
    def test_200(self):
        app = Tipfy(rules=[Rule('/', name='home', handler=AllMethodsHandler)])
        client = app.get_test_client()

        for method in app.allowed_methods:
            response = client.open('/', method=method)
            self.assertEqual(response.status_code, 200, method)
            if method == 'HEAD':
                self.assertEqual(response.data, '')
            else:
                self.assertEqual(response.data, 'Method: %s' % method)

        # App Engine mode.
        self._set_dev_server_flag(True)
        response = client.get('/')
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data, 'Method: GET')
Esempio n. 50
0
    def test_render_template(self):
        app = Tipfy(config={'tipfyext.mako': {'templates_dir': templates_dir}})
        request = Request.from_values()
        local.current_handler = handler = RequestHandler(app, request)
        mako = Mako(app)

        message = 'Hello, World!'
        res = mako.render_template(local.current_handler, 'template1.html', message=message)
        self.assertEqual(res, message + '\n')
Esempio n. 51
0
    def test_regex_converter(self):
        class TestHandler(RequestHandler):
            def get(self, **kwargs):
                return Response(kwargs.get('path'))

        app = Tipfy([
            Rule('/<regex(".*"):path>', name='home', handler=TestHandler),
        ])
        client = app.get_test_client()

        response = client.get('/foo')
        self.assertEqual(response.data, 'foo')

        response = client.get('/foo/bar')
        self.assertEqual(response.data, 'foo/bar')

        response = client.get('/foo/bar/baz')
        self.assertEqual(response.data, 'foo/bar/baz')
Esempio n. 52
0
    def test_store_instances(self):
        from tipfy.appengine.auth import AuthStore
        from tipfy.i18n import I18nStore
        from tipfy.sessions import SecureCookieSession

        app = Tipfy(rules=[
            Rule('/', name='home', handler=AllMethodsHandler),
        ],
                    config={
                        'tipfy.sessions': {
                            'secret_key': 'secret',
                        },
                    })
        with app.get_test_handler('/') as handler:
            self.assertEqual(isinstance(handler.session, SecureCookieSession),
                             True)
            self.assertEqual(isinstance(handler.auth, AuthStore), True)
            self.assertEqual(isinstance(handler.i18n, I18nStore), True)
Esempio n. 53
0
    def test_abort(self):
        class HandlerWithAbort(RequestHandler):
            def get(self, **kwargs):
                self.abort(kwargs.get('status_code'))

        app = Tipfy(rules=[
            Rule('/<int:status_code>', name='abort-me', handler=HandlerWithAbort),
        ])
        client = app.get_test_client()

        response = client.get('/400')
        self.assertEqual(response.status_code, 400)

        response = client.get('/403')
        self.assertEqual(response.status_code, 403)

        response = client.get('/404')
        self.assertEqual(response.status_code, 404)
Esempio n. 54
0
    def test_check_password(self):
        app = Tipfy()
        request = Request.from_values('/')
        local.current_handler = RequestHandler(app, request)

        user = User.create('my_username', 'my_id', password='******')

        self.assertEqual(user.check_password('foo'), True)
        self.assertEqual(user.check_password('bar'), False)
Esempio n. 55
0
    def test_function_handler(self):
        rules = [
            HandlerPrefix('resources.alternative_routing.', [
                Rule('/', name='home', handler='home'),
                Rule('/foo', name='home/foo', handler='foo'),
                Rule('/bar', name='home/bar', handler='bar'),
            ])
        ]

        app = Tipfy(rules)
        client = app.get_test_client()

        response = client.get('/')
        self.assertEqual(response.data, 'home')
        response = client.get('/foo')
        self.assertEqual(response.data, 'foo')
        response = client.get('/bar')
        self.assertEqual(response.data, 'bar')
Esempio n. 56
0
    def test_function_handler(self):
        rules = [
            HandlerPrefix('resources.alternative_routing.', [
                Rule('/', name='home', handler='home'),
                Rule('/foo', name='home/foo', handler='foo'),
                Rule('/bar', name='home/bar', handler='bar'),
            ])
        ]

        app = Tipfy(rules)
        client = app.get_test_client()

        response = client.get('/')
        self.assertEqual(response.data, 'home')
        response = client.get('/foo')
        self.assertEqual(response.data, 'foo')
        response = client.get('/bar')
        self.assertEqual(response.data, 'bar')
Esempio n. 57
0
    def test_store_classes(self):
        from tipfy.appengine.auth import AuthStore
        from tipfy.i18n import I18nStore
        from tipfy.sessions import SessionStore

        app = Tipfy()
        self.assertEqual(app.auth_store_class, AuthStore)
        self.assertEqual(app.i18n_store_class, I18nStore)
        self.assertEqual(app.session_store_class, SessionStore)
Esempio n. 58
0
    def test_regex_converter(self):
        class TestHandler(RequestHandler):
            def get(self, **kwargs):
                return Response(kwargs.get('path'))

        app = Tipfy([
            Rule('/<regex(".*"):path>', name='home', handler=TestHandler),
        ])
        client = app.get_test_client()

        response = client.get('/foo')
        self.assertEqual(response.data, 'foo')

        response = client.get('/foo/bar')
        self.assertEqual(response.data, 'foo/bar')

        response = client.get('/foo/bar/baz')
        self.assertEqual(response.data, 'foo/bar/baz')
Esempio n. 59
0
    def test_handle_exception(self):
        res = 'Catched!'

        class MyMiddleware(object):
            def handle_exception(self, handler, exception):
                return Response(res)

        class MyHandler(RequestHandler):
            middleware = [MyMiddleware()]

            def get(self, **kwargs):
                raise ValueError()

        app = Tipfy(rules=[
            Rule('/', name='home', handler=MyHandler),
        ])
        client = app.get_test_client()
        response = client.get('/')
        self.assertEqual(response.data, res)
Esempio n. 60
0
    def test_handle_exception(self):
        res = 'Catched!'

        class MyMiddleware(object):
            def handle_exception(self, handler, exception):
                return Response(res)

        class MyHandler(RequestHandler):
            middleware = [MyMiddleware()]

            def get(self, **kwargs):
                raise ValueError()

        app = Tipfy(rules=[
            Rule('/', name='home', handler=MyHandler),
        ])
        client = app.get_test_client()
        response = client.get('/')
        self.assertEqual(response.data, res)