mirror of
https://github.com/elder-plinius/L1B3RT4S.git
synced 2025-09-26 02:33:39 +02:00

--- For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/elder-plinius/L1B3RT4S?shareId=XXXX-XXXX-XXXX-XXXX).
90 lines
3.4 KiB
Python
90 lines
3.4 KiB
Python
import unittest
|
|
from unittest.mock import patch, mock_open, MagicMock
|
|
import main
|
|
import time
|
|
import json
|
|
import http.server
|
|
import threading
|
|
|
|
class TestMain(unittest.TestCase):
|
|
|
|
@patch('main.requests.post')
|
|
@patch('main.open', new_callable=mock_open)
|
|
def test_setup(self, mock_file, mock_post):
|
|
mock_resp = MagicMock()
|
|
mock_resp.json.return_value = {
|
|
'device_code': 'test_device_code',
|
|
'user_code': 'test_user_code',
|
|
'verification_uri': 'test_verification_uri'
|
|
}
|
|
mock_post.return_value = mock_resp
|
|
|
|
with patch('builtins.print') as mock_print:
|
|
main.setup()
|
|
mock_print.assert_any_call('Please visit test_verification_uri and enter code test_user_code to authenticate.')
|
|
|
|
mock_file().write.assert_called_once_with('test_access_token')
|
|
|
|
@patch('main.requests.get')
|
|
@patch('main.open', new_callable=mock_open, read_data='test_access_token')
|
|
def test_get_token(self, mock_file, mock_get):
|
|
mock_resp = MagicMock()
|
|
mock_resp.json.return_value = {'token': 'test_token'}
|
|
mock_get.return_value = mock_resp
|
|
|
|
main.get_token()
|
|
self.assertEqual(main.token, 'test_token')
|
|
|
|
@patch('main.get_token')
|
|
@patch('main.time.sleep', return_value=None)
|
|
def test_token_thread(self, mock_sleep, mock_get_token):
|
|
with patch('threading.Thread.start') as mock_start:
|
|
thread = threading.Thread(target=main.token_thread)
|
|
thread.start()
|
|
mock_start.assert_called_once()
|
|
|
|
@patch('main.requests.post')
|
|
@patch('main.is_token_invalid', return_value=True)
|
|
@patch('main.get_token')
|
|
def test_copilot(self, mock_get_token, mock_is_token_invalid, mock_post):
|
|
mock_resp = MagicMock()
|
|
mock_resp.text = 'data: {"choices":[{"text":"test_completion"}]}'
|
|
mock_post.return_value = mock_resp
|
|
|
|
result = main.copilot('test_prompt')
|
|
self.assertEqual(result, 'test_completion')
|
|
|
|
def test_is_token_invalid(self):
|
|
valid_token = 'exp=9999999999'
|
|
invalid_token = 'exp=0'
|
|
self.assertFalse(main.is_token_invalid(valid_token))
|
|
self.assertTrue(main.is_token_invalid(invalid_token))
|
|
|
|
def test_extract_exp_value(self):
|
|
token = 'key1=value1; exp=1234567890; key2=value2'
|
|
self.assertEqual(main.extract_exp_value(token), 1234567890)
|
|
|
|
@patch('main.copilot', return_value='test_completion')
|
|
def test_HTTPRequestHandler(self, mock_copilot):
|
|
handler = main.HTTPRequestHandler
|
|
handler.rfile = MagicMock()
|
|
handler.rfile.read.return_value = json.dumps({'prompt': 'test_prompt', 'language': 'python'}).encode()
|
|
handler.headers = {'Content-Length': len(handler.rfile.read.return_value)}
|
|
handler.wfile = MagicMock()
|
|
|
|
handler.do_POST(handler)
|
|
|
|
handler.wfile.write.assert_called_once_with(b'test_completion')
|
|
|
|
@patch('main.threading.Thread.start')
|
|
@patch('main.http.server.HTTPServer.serve_forever')
|
|
def test_main(self, mock_serve_forever, mock_thread_start):
|
|
with patch('builtins.print') as mock_print:
|
|
with patch('sys.argv', ['main.py', '8080']):
|
|
main.main()
|
|
mock_print.assert_any_call('Listening on port 0.0.0.0:8080...')
|
|
mock_thread_start.assert_called_once()
|
|
mock_serve_forever.assert_called_once()
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|