45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
# retoor <retoor@molodetz.nl>
|
|||
|
|
|
||
|
|
import argparse
|
||
|
|
|
||
|
|
from devplacepy.cli import nodes as cli
|
||
|
|
from devplacepy.database import get_table
|
||
|
|
from devplacepy.database import nodes as store
|
||
|
|
from devplacepy.utils import generate_uid
|
||
|
|
|
||
|
|
|
||
|
|
def parser():
|
||
|
|
root = argparse.ArgumentParser()
|
||
|
|
cli.register_nodes(root.add_subparsers(dest="command"))
|
||
|
|
return root
|
||
|
|
|
||
|
|
|
||
|
|
def device(local_db):
|
||
|
|
row, _ = store.create_device(generate_uid(), "cli", "native")
|
||
|
|
return row["uid"]
|
||
|
|
|
||
|
|
|
||
|
|
def test_suspend_and_unsuspend(local_db, capsys):
|
||
|
|
uid = device(local_db)
|
||
|
|
args = parser().parse_args(["nodes", "suspend", uid, "--minutes", "5"])
|
||
|
|
args.func(args)
|
||
|
|
assert store.effective_status(get_table("node_devices").find_one(uid=uid)) == "suspended"
|
||
|
|
args = parser().parse_args(["nodes", "unsuspend", uid])
|
||
|
|
args.func(args)
|
||
|
|
assert store.effective_status(get_table("node_devices").find_one(uid=uid)) == "active"
|
||
|
|
|
||
|
|
|
||
|
|
def test_clear_is_a_dry_run_without_force(local_db, capsys):
|
||
|
|
get_table("node_events").insert({"uid": generate_uid(), "kind": "x", "detail": "", "created_at": "2026-01-01T00:00:00+00:00"})
|
||
|
|
before = store.clear_ephemeral(dry_run=True)["node_events"]
|
||
|
|
args = parser().parse_args(["nodes", "clear"])
|
||
|
|
args.func(args)
|
||
|
|
assert "pass --force" in capsys.readouterr().out
|
||
|
|
assert store.clear_ephemeral(dry_run=True)["node_events"] == before
|
||
|
|
|
||
|
|
|
||
|
|
def test_prune_dry_run_reports_counts(local_db, capsys):
|
||
|
|
args = parser().parse_args(["nodes", "prune", "--dry-run"])
|
||
|
|
args.func(args)
|
||
|
|
assert "would remove" in capsys.readouterr().out
|