59 lines
1.8 KiB
Python
59 lines
1.8 KiB
Python
import json
|
|
import threading
|
|
import unittest
|
|
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
|
|
|
|
from app.routeros import RouterOSClient
|
|
|
|
|
|
class Handler(BaseHTTPRequestHandler):
|
|
last_put = None
|
|
|
|
def do_GET(self):
|
|
data = b"[]"
|
|
self.send_response(200)
|
|
self.send_header("Content-Type", "application/json")
|
|
self.send_header("Content-Length", str(len(data)))
|
|
self.end_headers()
|
|
self.wfile.write(data)
|
|
|
|
def do_PUT(self):
|
|
length = int(self.headers.get("Content-Length", "0"))
|
|
Handler.last_put = json.loads(self.rfile.read(length))
|
|
data = json.dumps(Handler.last_put).encode()
|
|
self.send_response(200)
|
|
self.send_header("Content-Type", "application/json")
|
|
self.send_header("Content-Length", str(len(data)))
|
|
self.end_headers()
|
|
self.wfile.write(data)
|
|
|
|
def log_message(self, fmt, *args):
|
|
return
|
|
|
|
|
|
class RouterOSTests(unittest.TestCase):
|
|
def test_put_address_list_entry(self):
|
|
server = ThreadingHTTPServer(("127.0.0.1", 0), Handler)
|
|
thread = threading.Thread(target=server.serve_forever, daemon=True)
|
|
thread.start()
|
|
try:
|
|
client = RouterOSClient(
|
|
f"http://127.0.0.1:{server.server_port}",
|
|
"user",
|
|
"secret",
|
|
False,
|
|
"IDS-BLOCK",
|
|
2,
|
|
)
|
|
result = client.block_ip("9.9.9.9", "1h", "test")
|
|
self.assertTrue(result.success)
|
|
self.assertEqual(Handler.last_put["list"], "IDS-BLOCK")
|
|
self.assertEqual(Handler.last_put["address"], "9.9.9.9")
|
|
finally:
|
|
server.shutdown()
|
|
server.server_close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|