g3/g3proxy/ci/httpbin/python3+requests/test_httpbin.py
2023-03-09 17:55:45 +08:00

72 lines
2.3 KiB
Python

#!/usr/bin/env python3
import argparse
import sys
import unittest
import requests
from requests.auth import HTTPBasicAuth
target_proxy = ''
target_site = 'http://httpbin.org'
server_ca_cert = None
class TestHttpBin(unittest.TestCase):
def setUp(self):
self.session = requests.Session()
self.session.proxies.update({'http': target_proxy, 'https': target_proxy})
self.session.headers.update({'accept': 'application/json'})
self.session.verify = server_ca_cert
def tearDown(self):
self.session.close()
def test_simple_get(self):
r = self.session.get(f"{target_site}/get")
self.assertEqual(r.status_code, 200)
def test_basic_auth_get(self):
r = self.session.get(f"{target_site}/basic-auth/name/pass")
self.assertEqual(r.status_code, 401)
r = self.session.get(f"{target_site}/basic-auth/name/pass", auth=HTTPBasicAuth('name', 'pass'))
self.assertEqual(r.status_code, 200)
r = self.session.get(f"{target_site}/basic-auth/name/pass", auth=HTTPBasicAuth('name', 'pas'))
self.assertEqual(r.status_code, 401)
def test_base64_decode(self):
self.session.headers.update({'accept': 'text/html'})
r = self.session.get(f"{target_site}/base64/SFRUUEJJTiBpcyBhd2Vzb21l")
self.assertEqual(r.status_code, 200)
self.assertEqual(r.text, "HTTPBIN is awesome")
def test_post_continue(self):
data = "Content to post"
r = self.session.post(f"{target_site}/post", data=data)
self.assertEqual(r.status_code, 200)
r = self.session.post(f"{target_site}/post", data=data, headers={"Expect": "100-continue"})
self.assertEqual(r.status_code, 200)
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--proxy', '-x', nargs='?', help='Proxy URL')
parser.add_argument('--site', '-T', nargs='?', help='Target Site', default=target_site)
parser.add_argument('--ca-cert', nargs='?', help='CA Cert')
(args, left_args) = parser.parse_known_args()
if args.proxy is not None:
target_proxy = args.proxy
if args.ca_cert is not None:
server_ca_cert = args.ca_cert
target_site = args.site
left_args.insert(0, sys.argv[0])
unittest.main(argv=left_args)