Add Pico HTTP fallback client
This commit is contained in:
@@ -228,3 +228,66 @@ def test_communication_service_records_errors():
|
||||
service.poll()
|
||||
|
||||
assert state.last_error["message"] == "invalid_json"
|
||||
|
||||
|
||||
class FakeResponse:
|
||||
def __init__(self, payload):
|
||||
self.payload = payload
|
||||
|
||||
def json(self):
|
||||
return self.payload
|
||||
|
||||
|
||||
class FakeRequests:
|
||||
def __init__(self):
|
||||
self.urls = []
|
||||
self.responses = []
|
||||
|
||||
def get(self, url):
|
||||
self.urls.append(url)
|
||||
|
||||
if self.responses:
|
||||
return FakeResponse(self.responses.pop(0))
|
||||
|
||||
return FakeResponse({"ok": True})
|
||||
|
||||
|
||||
def test_http_client_get_status():
|
||||
from comms.http_client import HttpClient
|
||||
|
||||
fake_requests = FakeRequests()
|
||||
fake_requests.responses = [
|
||||
{"type": "status_response", "battery": {"soc": 82}}
|
||||
]
|
||||
|
||||
client = HttpClient(fake_requests)
|
||||
|
||||
payload = client.get_status()
|
||||
|
||||
assert fake_requests.urls == ["http://192.168.4.1/status"]
|
||||
assert payload["type"] == "status_response"
|
||||
assert payload["battery"]["soc"] == 82
|
||||
|
||||
|
||||
def test_http_client_set_relay_on():
|
||||
from comms.http_client import HttpClient
|
||||
|
||||
fake_requests = FakeRequests()
|
||||
client = HttpClient(fake_requests)
|
||||
|
||||
payload = client.set_relay("starlink", True)
|
||||
|
||||
assert fake_requests.urls == ["http://192.168.4.1/relay/starlink/on"]
|
||||
assert payload == {"ok": True}
|
||||
|
||||
|
||||
def test_http_client_set_relay_off():
|
||||
from comms.http_client import HttpClient
|
||||
|
||||
fake_requests = FakeRequests()
|
||||
client = HttpClient(fake_requests)
|
||||
|
||||
payload = client.set_relay("fridge", False)
|
||||
|
||||
assert fake_requests.urls == ["http://192.168.4.1/relay/fridge/off"]
|
||||
assert payload == {"ok": True}
|
||||
|
||||
Reference in New Issue
Block a user