tests/main.py

78 lines
1.9 KiB
Python
Raw Normal View History

2024-05-31 14:58:46 +03:00
import socket
2024-05-31 15:22:25 +03:00
from urllib.request import urlopen, Request
2024-05-31 14:58:46 +03:00
2024-05-31 18:49:36 +03:00
import unittest
2024-05-31 14:58:46 +03:00
from unittest import TestCase
2024-05-31 16:49:44 +03:00
from fixtures import device
2024-05-31 14:58:46 +03:00
TCP_ADDR = ('127.0.0.1', 8283)
UDP_ADDR = ('127.0.0.1', 8283)
HTTP_URL = 'http://127.0.0.1:8080'
class TestTCP(TestCase):
def setUp(self) -> None:
self.sock = socket.socket()
self.sock.connect(TCP_ADDR)
def test_nm(self) -> None:
2024-05-31 16:49:44 +03:00
self.sock.sendall(device.nm_req_data().encode())
2024-05-31 14:58:46 +03:00
self._wait_for_ok()
def test_json(self) -> None:
2024-05-31 17:45:44 +03:00
self.sock.sendall(device.json_req_data().encode())
self._wait_for_ok()
2024-05-31 14:58:46 +03:00
def _wait_for_ok(self) -> None:
data = self.sock.recv(1024)
self.assertEqual(data, b'OK')
2024-05-31 15:22:25 +03:00
2024-05-31 17:58:12 +03:00
def tearDown(self) -> None:
self.sock.close()
2024-05-31 15:22:25 +03:00
2024-05-31 18:27:07 +03:00
class TestUDP(TestCase):
def setUp(self) -> None:
self.sock = socket.socket(type=socket.SOCK_DGRAM)
def test_nm(self) -> None:
self.sock.sendto(device.nm_req_data().encode(), UDP_ADDR)
# aaand we can not check if server accepted the data
# so this TestCase is absolutely useless
# until client API is implemented
def test_json(self) -> None:
self.sock.sendto(device.json_req_data().encode(), UDP_ADDR)
2024-05-31 15:22:25 +03:00
class TestHTTP(TestCase):
2024-05-31 16:49:44 +03:00
def test_get(self) -> None:
self._send_and_check(Request(
HTTP_URL + '/get?' + device.http_req_data(),
))
2024-05-31 15:22:25 +03:00
2024-05-31 16:50:13 +03:00
def test_post(self) -> None:
self._send_and_check(Request(
HTTP_URL + '/post',
data=device.http_req_data().encode(),
))
2024-05-31 15:22:25 +03:00
def test_json(self) -> None:
2024-05-31 17:45:44 +03:00
self._send_and_check(Request(
HTTP_URL + '/json',
data=device.json_req_data().encode(),
))
2024-05-31 15:22:25 +03:00
def _send_and_check(self, req: Request) -> None:
with urlopen(req) as resp:
self.assertEqual(resp.status, 200)
2024-05-31 18:49:36 +03:00
if __name__ == '__main__':
unittest.main()