from types import SimpleNamespace import pytest from src import bucket from src.config import user_bucket_source def test_user_bucket_source_is_per_user(): assert user_bucket_source(username="alice", bucket_name="space-factory-runs") == "alice/space-factory-runs" def test_check_user_bucket_ready(monkeypatch): def fake_bucket_info(bucket_id, token=None): assert bucket_id == "alice/space-factory-runs" assert token == "tok" return SimpleNamespace(name="space-factory-runs", private=True) monkeypatch.setattr(bucket, "bucket_info", fake_bucket_info) status = bucket.check_user_bucket(username="alice", bucket_name="space-factory-runs", token="tok") assert status["ok"] is True assert status["exists"] is True assert status["bucket_source"] == "alice/space-factory-runs" def test_create_user_bucket_private(monkeypatch): calls = {} def fake_create_bucket(bucket_id, private=None, exist_ok=False, token=None): calls.update({"bucket_id": bucket_id, "private": private, "exist_ok": exist_ok, "token": token}) return "hf://buckets/alice/space-factory-runs" def fake_check_user_bucket(username, bucket_name=None, token=None): return {"ok": True, "exists": True, "bucket_source": f"{username}/{bucket_name}", "bucket_uri": f"hf://buckets/{username}/{bucket_name}"} monkeypatch.setattr(bucket, "create_bucket", fake_create_bucket) monkeypatch.setattr(bucket, "check_user_bucket", fake_check_user_bucket) status = bucket.create_user_bucket(username="alice", bucket_name="space-factory-runs", token="tok") assert status["ok"] is True assert status["created_or_existing"] is True assert calls == {"bucket_id": "alice/space-factory-runs", "private": True, "exist_ok": True, "token": "tok"} def test_assert_user_bucket_ready_raises(monkeypatch): monkeypatch.setattr(bucket, "check_user_bucket", lambda **kwargs: {"ok": False, "bucket_source": "alice/missing", "error": "not found"}) with pytest.raises(ValueError, match="Run bucket `alice/missing` is not ready"): bucket.assert_user_bucket_ready(username="alice", bucket_name="missing", token="tok")