freechat/json-api/client-tests/request.py
shockrah 8bff61ab71 * Fixed issue where put requests weren't firing with the optional body parameter
This also "fixes" the /neighbor/update route conveniently enough, which had much
better behavior than expected before.

- Remvoing some fluff from debugging
2021-05-12 13:02:42 -07:00

87 lines
2.9 KiB
Python

from requests import Session
import requests
NC = '\033[0m'
RED = '\033[1;31m'
GREEN = '\033[1;32m'
YELLOW = '\033[1;33m'
class Request:
def __init__(self, url: str, method: str, qs: dict, headers: dict, hope: int, body=None, verbose=False):
self.method = method
self.url = url
# query string parameters are appended to the url which is why we do this
self.qs = qs
self.headers = headers
self.body = body
self.response = None
self.hope = hope
# This flag lets us control how much output we want to see
self.verbose = verbose
def __str__(self):
return str(self.qs)
@property
def passing(self):
if self.response is None:
return False
else:
return self.response.status_code == self.hope
def fire(self) -> requests.Response:
try:
if self.method == 'get':
self.response = requests.get(self.url, headers=self.headers, params=self.qs)
elif self.method == 'post':
self.response = requests.post(self.url, headers=self.headers, params=self.qs, data=self.body)
elif self.method == 'delete':
self.response = requests.delete(self.url, headers=self.headers, params=self.qs)
elif self.method == 'put':
self.response = requests.put(self.url, headers=self.headers, params=self.qs, data=self.body)
return self.response
except Exception as e:
print(e)
return None
def show_response(self):
real_code = None
if self.response is not None:
real_code = self.response.status_code
if self.hope != real_code:
abstract = RED + 'Fail ' + NC + 'Expected ' + str(self.hope) + ' Got ' + str(real_code)
if self.response is None:
print('\tNo Response to show for')
print(abstract)
print('\t', self.method, ' ', self.url)
if len(self.headers) != 0:
print(YELLOW + '\tRequest-Headers ' + NC, self.headers)
if len(self.qs) != 0:
print(YELLOW + '\tQuery-Dictionary' + NC, self.qs)
if self.body is not None:
print(YELLOW + '\tRequest-Body' + NC, str(self.body))
if self.verbose:
print(f'\t{YELLOW}Response-Status{NC} {self.response.status_code}')
print(f'\t{YELLOW}Response-Headers{NC} {self.response.headers}')
print(f'\t{YELLOW}Response-Text{NC} {self.response.text}')
else:
print(f'{GREEN}Pass{NC} {self.method} {self.url}')
if self.verbose:
print(f'\t{YELLOW}Response-Status{NC} {self.response.status_code}')
print(f'\t{YELLOW}Response-Headers{NC} {self.response.headers}')
print(f'\t{YELLOW}Response-Text{NC} {self.response.text}')