Passed
Push — master ( c29180...9b5e45 )
by Mingyu
01:41
created

tests.views   A

Complexity

Total Complexity 12

Size/Duplication

Total Lines 82
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 12
eloc 42
dl 0
loc 82
rs 10
c 0
b 0
f 0

9 Methods

Rating   Name   Duplication   Size   Complexity  
A TCBase.tearDown() 0 2 1
A TCBase._get_tokens() 0 3 1
A TCBase.__init__() 0 4 1
A TCBase.setUp() 0 3 1
A TCBase._create_fake_account() 0 2 1
B TCBase.json_request() 0 24 3
A TCBase.request() 0 20 2
A TCBase.decode_response_data() 0 2 1
A TCBase.get_response_data() 0 2 1
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
        TC.__init__(self, *args, **kwargs)
12
13
        self.client = app.test_client()
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
        if token is None:
42
            token = self.access_token
43
44
        data = kwargs.pop('data')
45
46
        return method(
47
            target_url_rule,
48
            data=ujson.dumps(data) if data else None,
49
            content_type='application/json',
50
            headers={'Authorization': token},
51
            *args,
52
            **kwargs
53
        )
54
55
    def request(self, method, target_url_rule, token=None, *args, **kwargs):
56
        """
57
        Helper for common request
58
59
        Args:
60
            method (func): Request method
61
            target_url_rule (str): URL rule for request
62
            token (str) : JWT or OAuth's access token with prefix(Bearer, JWT, ...)
63
64
        Returns:
65
            Response
66
        """
67
        if token is None:
68
            token = self.access_token
69
70
        return method(
71
            target_url_rule,
72
            headers={'Authorization': token},
73
            *args,
74
            **kwargs
75
        )
76
77
    def decode_response_data(self, resp):
78
        return resp.data.decode()
79
80
    def get_response_data(self, resp):
81
        return ujson.loads(self.decode_response_data(resp))
82