tests.test_client.TestClient.head()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 2
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nop 3
dl 0
loc 2
rs 10
c 0
b 0
f 0
1
from base64 import b64encode
2
from werkzeug.exceptions import HTTPException
3
import json
4
5
6
class TestClient():
7
  def __init__(self, app, username, password):
8
    self.app = app
9
    if username is None:
10
      self.auth = None
11
    else:
12
      self.auth = 'Basic ' + b64encode(
13
          (username + ':' + password).encode('utf-8')).decode('utf-8')
14
15
  def send(self, url, method='GET', data=None, headers={}):
16
    headers = headers.copy()
17
    if self.auth is not None:
18
      headers['Authorization'] = self.auth
19
    headers['Content-Type'] = 'application/json'
20
    headers['Accept'] = 'application/json'
21
    if data:
22
      data = json.dumps(data)
23
24
    with self.app.test_request_context(
25
        url, method=method, data=data, headers=headers):
26
      try:
27
        rv = self.app.preprocess_request()
28
        if rv is None:
29
          rv = self.app.dispatch_request()
30
        rv = self.app.make_response(rv)
31
        rv = self.app.process_response(rv)
32
      except HTTPException as e:
33
        rv = self.app.handle_user_exception(e)
34
35
    try:
36
      json_data = json.loads(rv.data.decode('utf-8'))
37
    except AttributeError:
38
      json_data = None
39
    except json.decoder.JSONDecodeError:
40
      json_data = None
41
    return rv, json_data
42
43
  def get(self, url, headers={}):
44
    return self.send(url, 'GET', headers=headers)
45
46
  def post(self, url, data, headers={}):
47
    return self.send(url, 'POST', data, headers=headers)
48
49
  def put(self, url, data, headers={}):
50
    return self.send(url, 'PUT', data, headers=headers)
51
52
  def delete(self, url, headers={}):
53
    return self.send(url, 'DELETE', headers=headers)
54
55
  def head(self, url, headers={}):
56
    return self.send(url, 'HEAD', headers=headers)
57