import pytest
from httpx import ASGITransport, AsyncClient
@pytest.mark.anyio
async def test_rest_create_list_reveal(app):
async with AsyncClient(transport=ASGITransport(app=app), base_url="http://test") as client:
response = await client.post(
"/api/v1/secrets",
json={
"title": "Server",
"purpose": "db01",
"category": "infra",
"tags": ["ssh"],
"fields": [
{"name": "username", "value": "deploy", "encrypted": False, "position": 1},
{
"name": "password",
"value": "pass123",
"encrypted": True,
"masked": True,
"position": 2,
},
],
},
)
assert response.status_code == 200, response.text
secret_id = response.json()["id"]
response = await client.get("/api/v1/secrets?q=deploy")
assert response.status_code == 200
assert response.json()["total"] == 1
fields = response.json()["items"][0]["fields"]
assert {field["name"]: field["value"] for field in fields}["username"] == "deploy"
assert {field["name"]: field["value"] for field in fields}["password"] is None
response = await client.post(f"/api/v1/secrets/{secret_id}/reveal")
assert response.status_code == 200
assert {field["name"]: field["value"] for field in response.json()["fields"]}[
"password"
] == "pass123"