mirror of
https://github.com/bytedance/g3.git
synced 2026-04-28 11:40:54 +00:00
72 lines
2.3 KiB
Python
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)
|