-
Notifications
You must be signed in to change notification settings - Fork 784
/
Copy pathtest_httpserver.py
109 lines (98 loc) · 3.66 KB
/
test_httpserver.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!usr/bin/env python
# -*- coding:utf-8 -*-
"""
@author: longofo
@file: test_httpserver.py
@time: 2019/03/31
"""
import unittest
import warnings
import requests
from urllib3.exceptions import InsecureRequestWarning
from pocsuite3.lib.core.common import get_host_ip, get_host_ipv6
from pocsuite3.lib.core.data import logger
from pocsuite3.modules.httpserver import PHTTPServer, BaseRequestHandler
class TestCase(unittest.TestCase):
def setUp(self):
warnings.simplefilter("ignore", ResourceWarning)
warnings.simplefilter("ignore", InsecureRequestWarning)
def tearDown(self):
pass
# @unittest.skip(reason='test')
def test_only_start_server_once(self):
logger.info("Test http server is only start once")
PHTTPServer._instance = None
httpd1 = PHTTPServer()
httpd2 = PHTTPServer()
httpd1.start()
httpd2.start()
httpd1.stop()
httpd2.stop()
def test_singleton(self):
logger.info("Test http server is singleton")
PHTTPServer._instance = None
httpd1 = PHTTPServer()
httpd2 = PHTTPServer()
self.assertEqual(id(httpd1), id(httpd2))
def test_ipv4(self):
try:
logger.info('Test http server in ipv4')
PHTTPServer._instance = None
httpd = PHTTPServer(bind_ip='0.0.0.0', bind_port=6666, requestHandler=BaseRequestHandler)
httpd.start()
url = '{}://{}:{}/'.format('http', get_host_ip(), 6666)
resp = requests.get(url)
self.assertEqual(resp.status_code, 200)
except Exception:
assert False
finally:
httpd.stop()
@unittest.skip(reason='disable ipv6')
def test_ipv6(self):
try:
logger.info('Test http server in ipv6')
PHTTPServer._instance = None
httpd = PHTTPServer(bind_ip='::', bind_port=6666, requestHandler=BaseRequestHandler)
httpd.start()
url = '{}://{}:{}/'.format('http', '[{}]'.format(get_host_ipv6()), 6666)
resp = requests.get(url)
self.assertEqual(resp.status_code, 200)
except Exception:
pass
finally:
httpd.stop()
def test_ipv4_https(self):
try:
logger.info('Test https server in ipv4')
PHTTPServer._instance = None
httpd = PHTTPServer(bind_ip='0.0.0.0', bind_port=6666, use_https=True,
requestHandler=BaseRequestHandler)
httpd.start()
url = '{}://{}:{}/'.format('https', get_host_ip(), 6666)
requests.get(url)
except requests.exceptions.SSLError:
url = '{}://{}:{}/'.format('https', get_host_ip(), 6666)
resp = requests.get(url, verify=False)
self.assertEqual(resp.status_code, 200)
except Exception:
assert False
finally:
httpd.stop()
@unittest.skip(reason='disable ipv6')
def test_ipv6_https(self):
try:
logger.info('Test https server in ipv6')
PHTTPServer._instance = None
httpd = PHTTPServer(bind_ip='::', bind_port=6666, use_https=True,
requestHandler=BaseRequestHandler)
httpd.start()
url = '{}://{}:{}/'.format('https', '[{}]'.format(get_host_ipv6()), 6666)
requests.get(url)
except requests.exceptions.SSLError:
url = '{}://{}:{}/'.format('https', '[{}]'.format(get_host_ipv6()), 6666)
resp = requests.get(url, verify=False)
self.assertEqual(resp.status_code, 200)
except Exception:
pass
finally:
httpd.stop()