Passed
Push — master ( 672e05...e0b461 )
by Mingyu
01:41
created

tests.views.TCBase.json_request()   A

Complexity

Conditions 2

Size

Total Lines 21
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 9
dl 0
loc 21
rs 9.3142
c 0
b 0
f 0
cc 2
nop 6
1
import ujson
2
from unittest import TestCase as TC
3
4
from flask import Response
5
6
from app import app
7
8
9
class TCBase(TC):
10
    def __init__(self, *args, **kwargs):
11
        self.client = app.test_client()
12
13
        super(TCBase, self).__init__(*args, **kwargs)
14
15
    def _create_fake_account(self):
16
        pass
17
18
    def _get_tokens(self):
19
        self.access_token = None
20
        self.refresh_token = None
21
22
    def setUp(self):
23
        self._create_fake_account()
24
        self._get_tokens()
25
26
    def tearDown(self):
27
        pass
28
29
    def json_request(self, method, target_url_rule, token=None, *args, **kwargs):
30
        """
31
        Helper for json request
32
33
        Args:
34
            method (func): Request method
35
            target_url_rule (str): URL rule for request
36
            token (str) : JWT or OAuth's access token with prefix(Bearer, JWT, ...)
37
38
        Returns:
39
            Response
40
        """
41
        data = kwargs.pop('data')
42
43
        return method(
44
            target_url_rule,
45
            data=ujson.dumps(data) if data else None,
46
            content_type='application/json',
47
            headers={'Authorization': token or self.access_token},
48
            *args,
49
            **kwargs
50
        )
51
52
    def request(self, method, target_url_rule, token=None, *args, **kwargs):
53
        """
54
        Helper for common request
55
56
        Args:
57
            method (func): Request method
58
            target_url_rule (str): URL rule for request
59
            token (str) : JWT or OAuth's access token with prefix(Bearer, JWT, ...)
60
61
        Returns:
62
            Response
63
        """
64
        return method(
65
            target_url_rule,
66
            headers={'Authorization': token or self.access_token},
67
            *args,
68
            **kwargs
69
        )
70
71
    def decode_response_data(self, resp):
72
        return resp.data.decode()
73
74
    def get_response_data(self, resp):
75
        return ujson.loads(self.decode_response_data(resp))
76