|
1 | 1 | from __future__ import annotations
|
2 | 2 |
|
| 3 | +import http.client |
| 4 | +import http.server |
| 5 | +import threading |
3 | 6 | from pathlib import Path
|
4 | 7 | from unittest import mock
|
5 | 8 |
|
6 | 9 | import pytest
|
7 | 10 | from utils import CLIInvoker, invoke_cli # noqa: F401
|
8 | 11 |
|
| 12 | +from pyscript.plugins.run import get_folder_based_http_request_handler |
| 13 | + |
9 | 14 | BASEPATH = str(Path(__file__).parent)
|
10 | 15 |
|
11 | 16 |
|
@@ -103,3 +108,32 @@ def test_run_server_with_valid_combinations(
|
103 | 108 | assert result.exit_code == 0
|
104 | 109 | # EXPECT start_server_mock function to be called with the expected values
|
105 | 110 | start_server_mock.assert_called_once_with(*expected_values)
|
| 111 | + |
| 112 | + |
| 113 | +class TestFolderBasedHTTPRequestHandler: |
| 114 | + def setup_method(self, method): |
| 115 | + # Create a test server instance with the custom handler |
| 116 | + CustomHTTPRequestHandler = get_folder_based_http_request_handler(Path(".")) |
| 117 | + self.server = http.server.HTTPServer(("127.0.0.1", 0), CustomHTTPRequestHandler) |
| 118 | + self.server_thread = threading.Thread(target=self.server.serve_forever) |
| 119 | + self.server_thread.daemon = True |
| 120 | + self.server_thread.start() |
| 121 | + |
| 122 | + # Get the port the server is listening on |
| 123 | + self.server_address = self.server.socket.getsockname() |
| 124 | + |
| 125 | + def teardown_method(self, method): |
| 126 | + # Clean up the server |
| 127 | + self.server.shutdown() |
| 128 | + self.server_thread.join() |
| 129 | + |
| 130 | + def test_headers(self): |
| 131 | + # Given a request to the test server |
| 132 | + connection = http.client.HTTPConnection(*self.server_address) |
| 133 | + connection.request("GET", "/") |
| 134 | + response = connection.getresponse() |
| 135 | + |
| 136 | + # Expect the custom headers to be present in the response |
| 137 | + assert response.getheader("Cross-Origin-Opener-Policy") == "same-origin" |
| 138 | + assert response.getheader("Cross-Origin-Embedder-Policy") == "require-corp" |
| 139 | + assert response.getheader("Cross-Origin-Resource-Policy") == "cross-origin" |
0 commit comments