Completed
Push — master ( e4fa6a...7cecba )
by Chris
59s
created

_authtest()   A

Complexity

Conditions 1

Size

Total Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 1
Metric Value
cc 1
c 3
b 0
f 1
dl 0
loc 2
rs 10
1
import json
2
from datetime import datetime as dt
3
4
from flask import (
5
    Flask,
6
    current_app,
7
    url_for,
8
)
9
import pytest
10
11
from flask_jsondash import charts_builder
12
13
URL_BASE = 'http://127.0.0.1:80'
14
app = Flask('test_flask_jsondash',
15
            template_folder='../flask_jsondash/example_app/templates')
16
app.config.update(
17
    # Required to fix context errors.
18
    # See https://github.com/jarus/flask-testing/issues/21
19
    PRESERVE_CONTEXT_ON_EXCEPTION=False,
20
    SECRET_KEY='123',
21
)
22
app.debug = True
23
app.register_blueprint(charts_builder.charts)
24
25
fake_db = []
26
27
28
def _username():
29
    return 'Username'
30
31
32
def auth_valid(**kwargs):
33
    return True
34
35
36
def auth_invalid(**kwargs):
37
    return False
38
39
40
def read(*args, **kwargs):
41
    if 'override' in kwargs:
42
        newkwargs = kwargs.pop('override')
43
44
        def _read(*args, **kwargs):
45
            return dict(**newkwargs)
46
        return _read
47
    if 'c_id' not in kwargs:
48
        return fake_db
49
    for i, dash in enumerate(fake_db):
50
        if dash['id'] == kwargs.get('c_id'):
51
            return dash
52
53
54
def delete(c_id, **kwargs):
55
    global fake_db
56
    for i, dash in enumerate(fake_db):
57
        if dash['id'] == c_id:
58
            del fake_db[i]
59
            break
60
61
62
def create(*args, **kwargs):
63
    global fake_db
64
    fake_db.append(dict(**kwargs.get('data')))
65
66
67
def update(c_id, **kwargs):
68
    global fake_db
69
    for i, dash in enumerate(fake_db):
70
        if dash['id'] == c_id:
71
            fake_db[i].update(**kwargs)
72
            break
73
74
75
@pytest.yield_fixture
76
def ctx(monkeypatch, request):
77
    with app.test_request_context() as req_ctx:
78
        global fake_db
79
        fake_db = []
80
        monkeypatch.setattr(charts_builder.adapter, 'read', read)
81
        monkeypatch.setattr(charts_builder.adapter, 'create', create)
82
        monkeypatch.setattr(charts_builder.adapter, 'delete', delete)
83
        monkeypatch.setattr(charts_builder.adapter, 'update', update)
84
        yield req_ctx
85
86
87
@pytest.fixture()
88
def client():
89
    app.config.update(
90
        JSONDASH_GLOBALDASH=False,
91
        JSONDASH_FILTERUSERS=False,
92
        JSONDASH_GLOBAL_USER='global-test',
93
    )
94
    app.config['JSONDASH'] = dict(
95
        metadata=dict(
96
            created_by=_username,
97
            username=_username,
98
        ),
99
        static=dict(
100
            js_path='js/vendor/',
101
            css_path='css/vendor/',
102
        ),
103
        auth=dict(
104
            edit_others=auth_invalid,
105
            edit_global=auth_invalid,
106
            create=auth_invalid,
107
            view=auth_invalid,
108
            clone=auth_invalid,
109
            delete=auth_invalid,
110
        )
111
    )
112
    return app, app.test_client()
113