Files
dekun da5eb4c18c Add Fleet control plane and split manage.sh deploy menu.
Strategy nodes gain fleet token APIs; control/ app for local ops; manage.sh offers strategy vs control one-click deploy.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 10:46:40 +08:00

49 lines
1.3 KiB
Python

"""Fleet token / ticket unit tests."""
from __future__ import annotations
import pytest
from fastapi import HTTPException
from app.api.fleet import (
clear_fleet_token,
consume_login_ticket,
create_login_ticket,
fleet_token_configured,
require_fleet_token,
set_fleet_token,
)
from app.models.db import Database, set_db
@pytest.fixture()
def db(tmp_path, monkeypatch):
monkeypatch.setenv("MODE", "SIM")
path = tmp_path / "t.db"
d = Database(path)
set_db(d)
yield d
d.close()
set_db(None)
def test_fleet_token_hash_and_auth(db):
assert not fleet_token_configured(db)
set_fleet_token("test-fleet-token-32chars-xxxx", db)
assert fleet_token_configured(db)
assert require_fleet_token(x_fleet_token="test-fleet-token-32chars-xxxx")
with pytest.raises(HTTPException) as ei:
require_fleet_token(x_fleet_token="wrong-token-xxxxxxxxxx")
assert ei.value.status_code == 401
clear_fleet_token(db)
with pytest.raises(HTTPException):
require_fleet_token(x_fleet_token="test-fleet-token-32chars-xxxx")
def test_login_ticket_once(db):
t, ttl = create_login_ticket("admin")
assert ttl >= 30
assert consume_login_ticket(t) == "admin"
with pytest.raises(HTTPException):
consume_login_ticket(t)