This commit is contained in:
+10
-2
@@ -14,6 +14,7 @@ import sys
|
|||||||
import tempfile
|
import tempfile
|
||||||
import time
|
import time
|
||||||
import urllib.error
|
import urllib.error
|
||||||
|
import urllib.parse
|
||||||
import urllib.request
|
import urllib.request
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
@@ -144,9 +145,16 @@ class AutoDLClient:
|
|||||||
self.token = token
|
self.token = token
|
||||||
|
|
||||||
def request(self, method: str, path: str, body: dict[str, Any]) -> Any:
|
def request(self, method: str, path: str, body: dict[str, Any]) -> Any:
|
||||||
|
url = f"{API_BASE}{path}"
|
||||||
|
data: bytes | None
|
||||||
|
if method == "GET":
|
||||||
|
url = f"{url}?{urllib.parse.urlencode(body)}"
|
||||||
|
data = None
|
||||||
|
else:
|
||||||
|
data = json.dumps(body).encode()
|
||||||
request = urllib.request.Request(
|
request = urllib.request.Request(
|
||||||
f"{API_BASE}{path}",
|
url,
|
||||||
data=json.dumps(body).encode(),
|
data=data,
|
||||||
method=method,
|
method=method,
|
||||||
headers={"Authorization": self.token, "Content-Type": "application/json"},
|
headers={"Authorization": self.token, "Content-Type": "application/json"},
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -11,6 +11,19 @@ import controller
|
|||||||
|
|
||||||
|
|
||||||
class ControllerTests(unittest.TestCase):
|
class ControllerTests(unittest.TestCase):
|
||||||
|
def test_get_requests_encode_parameters_in_the_query_string(self):
|
||||||
|
response = io.BytesIO(json.dumps({"code": "Success", "data": "stopped"}).encode())
|
||||||
|
client = controller.AutoDLClient("test-token")
|
||||||
|
with mock.patch.object(
|
||||||
|
controller.urllib.request, "urlopen", return_value=response
|
||||||
|
) as urlopen:
|
||||||
|
self.assertEqual(client.status("pro-test"), "stopped")
|
||||||
|
|
||||||
|
request = urlopen.call_args.args[0]
|
||||||
|
self.assertEqual(request.method, "GET")
|
||||||
|
self.assertIsNone(request.data)
|
||||||
|
self.assertTrue(request.full_url.endswith("?instance_uuid=pro-test"))
|
||||||
|
|
||||||
def test_runner_download_uses_explicit_user_agent(self):
|
def test_runner_download_uses_explicit_user_agent(self):
|
||||||
payload = b"test-runner"
|
payload = b"test-runner"
|
||||||
with tempfile.TemporaryDirectory() as directory:
|
with tempfile.TemporaryDirectory() as directory:
|
||||||
|
|||||||
Reference in New Issue
Block a user