Exemple #1
0
def test_i18n():
    render = Render(i18n=views_dir)

    def ok(request):
        return render.from_string('{{ i18n.HELLO }}')

    def fail(request):
        return render.from_string('{{ i18n.FOOBAR }}')

    urls = [
        Rule('/ok/', ok),
        Rule('/fail/', fail),
    ]
    app = Shake(urls)
    c = app.test_client()

    resp = c.get('/ok/?lang=en-US')
    assert resp.status_code == HTTP_OK
    assert resp.data == 'Hello World'

    resp = c.get('/ok/?lang=en_US')
    assert resp.status_code == HTTP_OK
    assert resp.data == 'Hello World'

    resp = c.get('/ok/?lang=es-AR')
    assert resp.data == 'Hola mundo'

    resp = c.get('/fail/?lang=en-US')
    assert resp.data == ''
Exemple #2
0
def test_globals():
    gg = {'who': 'E.T.', 'action': 'phone', 'where': 'home'}
    render = Render(globals=gg)

    tmpl = '{{ who }} {{ action }} {{ where }}'
    resp = render.from_string(tmpl, to_string=True)
    assert resp == 'E.T. phone home'
Exemple #3
0
def test_to_string():
    render = Render(views_dir)

    resp = render('tmpl.txt',
        {'who': 'E.T.', 'action': 'phone', 'where':'home'},
        to_string=True
    )
    assert resp == 'E.T. phone home'
Exemple #4
0
def test_from_string():
    render = Render()

    resp = render.from_string(
        'Testing, {{ a }} {{ b }} {{ c }}...',
        {'a': 1, 'b': '2', 'c': '3'},
        to_string=True
    )
    assert resp == 'Testing, 1 2 3...'
Exemple #5
0
def test_tests():
    def gt_3(val):
        return val > 3

    tt = {'gt_3': gt_3}
    render = Render(tests=tt)
    tmpl = '{% if 6 is gt_3 %}ok{% endif %}{% if 1 is gt_3 %} FAIL{% endif %}'
    resp = render.from_string(tmpl)
    assert resp == 'ok'
Exemple #6
0
def test_render():
    render = Render(views_dir)

    resp = render.to_string('view.html')
    assert resp == '<h1>Hello World</h1>'
    resp = render.to_string('view.txt',
                            who='E.T.',
                            action='phone',
                            where='home')
    assert resp == 'E.T. phone home'
Exemple #7
0
def test_filters():
    def double(val):
        return val * 2

    def cut(text):
        return text[:3]

    ff = {'double': double, 'cut': cut}
    render = Render(filters=ff)
    tmpl = '{{ 45|double }} {{ "abcytfugj"|cut }}'
    resp = render.from_string(tmpl)
    assert resp == '90 abc'
Exemple #8
0
def test_set_get_tests():
    def gt_3(val):
        return val > 3

    render = Render()
    render.set_test('gt_3', gt_3)

    tmpl = '{% if 6 is gt_3 %}ok{% endif %}{% if 1 is gt_3 %} FAIL{% endif %}'
    resp = render.from_string(tmpl)
    assert resp == 'ok'

    assert render.get_test('gt_3') == gt_3
Exemple #9
0
def test_default_globals():
    render = Render()

    def foo(request):
        tmpl = '{{ media }}{{ request }}{{ settings }}'
        render.from_string(tmpl)

    urls = [
        Rule('/', foo),
    ]
    app = Shake(urls)
    c = app.test_client()
    c.get('/')
Exemple #10
0
def test_default_globals_url_for():
    render = Render()

    def foo(request):
        tmpl = "{{ url_for('foo') }}"
        assert render.from_string(tmpl) == '/'

    urls = [
        Rule('/', foo, name='foo'),
    ]
    app = Shake(urls)
    c = app.test_client()
    c.get('/')
Exemple #11
0
def test_set_get_globals():
    gg = {'who': 'E.T.', 'action': 'phone', 'where': 'home'}
    render = Render()
    render.set_global('who', 'E.T.')
    render.set_global('action', 'phone')
    render.set_global('where', 'home')

    tmpl = '{{ who }} {{ action }} {{ where }}'
    resp = render.from_string(tmpl)
    assert resp == 'E.T. phone home'

    assert render.get_global('who') == 'E.T.'
    assert render.get_global('action') == 'phone'
    assert render.get_global('where') == 'home'
Exemple #12
0
def test_mimetype():
    render1 = Render(views_dir)
    render2 = Render(views_dir, default_mimetype='foo/bar')

    def t1(request):
        resp = render1('view.html')
        assert isinstance(resp, local.app.response_class)
        assert resp.mimetype == 'text/html'

    def t2(request):
        resp = render2('view.html')
        assert isinstance(resp, local.app.response_class)
        assert resp.mimetype == 'foo/bar'

    urls = [
        Rule('/t1', t1),
        Rule('/t2', t2),
    ]
    app = Shake(urls)
    local.app = app
    c = app.test_client()
    c.get('/t1')
    c.get('/t2')
Exemple #13
0
def test_default_globals_flash_messages():
    render = Render()

    def foo(request):
        flash(request, 'foo')
        tmpl = '{% for fm in get_messages() %}{{ fm.msg }}{% endfor %}'
        assert render.from_string(tmpl) == 'foo'

    urls = [
        Rule('/', foo),
    ]
    settings = {'SECRET_KEY': 'abc' * 20}
    app = Shake(urls, settings)
    c = app.test_client()
    c.get('/')
Exemple #14
0
def test_csrf_token_global():
    render = Render()

    def t(request):
        csrf = get_csrf_secret(request)
        tmpl = '{{ csrf_secret.name }} {{ csrf_secret.value }}'
        assert render.from_string(tmpl) == '%s %s' % (csrf.name, csrf.value)

    urls = [
        Rule('/', t),
    ]
    settings = {'SECRET_KEY': 'abc' * 20}
    app = Shake(urls, settings)
    c = app.test_client()
    c.get('/')
Exemple #15
0
def test_csrf_token_query():
    render = Render()

    def t(request):
        csrf = get_csrf_secret(request)
        tmpl = '{{ csrf_secret.query }}'
        expected = '%s=%s' % (csrf.name, csrf.value)
        assert render.from_string(tmpl) == expected

    urls = [
        Rule('/', t),
    ]
    settings = {'SECRET_KEY': 'abc' * 20}
    app = Shake(urls, settings)
    c = app.test_client()
    c.get('/t')
Exemple #16
0
def test_set_get_filters():
    def double(val):
        return val * 2

    def cut(text):
        return text[:3]

    render = Render()
    render.set_filter('double', double)
    render.set_filter('cut', cut)

    tmpl = '{{ 45|double }} {{ "abcytfugj"|cut }}'
    resp = render.from_string(tmpl)
    assert resp == '90 abc'

    assert render.get_filter('double') == double
    assert render.get_filter('cut') == cut
Exemple #17
0
def test_csrf_token():
    render = Render()

    def t(request):
        csrf1 = get_csrf_secret(request).value
        csrf2 = new_csrf_secret(request).value
        csrf2_ = get_csrf_secret(request).value
        assert csrf2 != csrf1
        assert csrf2_ == csrf2

    urls = [
        Rule('/', t),
    ]
    settings = {'SECRET_KEY': 'abc' * 20}
    app = Shake(urls, settings)
    c = app.test_client()
    c.get('/')
Exemple #18
0
def test_csrf_token_input():
    render = Render()

    def t(request):
        csrf = get_csrf_secret(request)
        tmpl = '{{ csrf_secret.input }}'
        expected = '<input type="hidden" name="%s" value="%s">' \
            % (csrf.name, csrf.value)
        assert render.from_string(tmpl) == expected

    urls = [
        Rule('/', t),
    ]
    settings = {'SECRET_KEY': 'abc' * 20}
    app = Shake(urls, settings)
    c = app.test_client()
    c.get('/t')
Exemple #19
0
def test_view_not_found():
    render = Render(views_dir)

    with pytest.raises(TemplateNotFound):
        render('x_x')
Exemple #20
0
# coding=utf-8
import os

import pytest
from shake import Shake, Rule, Render, Forbidden
from shake.views import (not_found_page, error_page, not_allowed_page,
                         render_template)

HTTP_OK = 200
HTTP_FOUND = 302
HTTP_FORBIDDEN = 403
HTTP_NOT_FOUND = 404
HTTP_ERROR = 500

templates_dir = os.path.join(os.path.dirname(__file__), 'res')
render = Render(templates_dir)


def index(request):
    return 'hello'


def fail(request):
    """View designed to fail. """
    assert False


def no_pass(request):
    raise Forbidden

Exemple #21
0
def test_default_tests():
    render = Render()
    tmpl = '{% if value is ellipsis %}ok{% endif %}'
    resp = render.from_string(tmpl, value=Ellipsis)
    assert resp == 'ok'
Exemple #22
0
def test_default_globals_now():
    render = Render()
    tmpl = '{{ now }}'
    snow = str(datetime.utcnow())[:-10]
    assert render.from_string(tmpl).startswith(snow)
Exemple #23
0
def test_render():
    render = Render(views_dir)

    resp = render('tmpl.html')
    assert isinstance(resp, Response)
    assert resp.data == '<h1>Hello World</h1>'
Exemple #24
0
"""
import os

import pytest
from shake import Shake, abort, Rule, Render
from shake.controllers import (not_found_page, error_page, not_allowed_page,
                               render_view)

HTTP_OK = 200
HTTP_FOUND = 302
HTTP_FORBIDDEN = 403
HTTP_NOT_FOUND = 404
HTTP_ERROR = 500

views_dir = os.path.join(os.path.dirname(__file__), 'res')
render = Render(views_dir)


def index(request):
    return 'hello'


def fail(request):
    """Controller designed to fail. """
    assert False


def no_pass(request):
    abort(HTTP_FORBIDDEN)

Exemple #25
0
def test_from_to_string():
    render = Render()
    tmpl = 'Testing, {{ a }} {{ b }} {{ c }}...'
    resp = render.from_string(tmpl, a=1, b='2', c='3')
    assert resp == 'Testing, 1 2 3...'