ticket #148 attempt 1

This commit is contained in:
Typosaurus
2026-07-27 20:24:57 +00:00
parent 5079f40f46
commit 1a1bab1004
15 changed files with 595 additions and 4 deletions
+62
View File
@@ -427,3 +427,65 @@ def test_grant_ineligible_when_rich_returns_400(app_server, seeded_db):
)
r = session.post(f"{BASE_URL}/game/grant", headers=JSON)
assert r.status_code == 400
def test_defense_item_purchase_success(app_server, seeded_db):
session, name = _signup()
_reset_farm(name, 10000)
refresh_snapshot()
user = get_table("users").find_one(username=name)
farm = store.get_farm(user["uid"])
r = session.post(
f"{BASE_URL}/game/farm/{name}/defense-item",
data={"farm_uid": farm["uid"], "item_type": "mines"},
headers=JSON,
)
assert r.status_code == 200
body = r.json()
assert body["item_type"] == "mines"
assert body["cost"] == economy.DEFENSE_ITEM_COST["mines"]
def test_defense_item_purchase_not_owner_returns_403(app_server, seeded_db):
session, name = _signup()
owner_session, owner_name = _signup()
_reset_farm(owner_name, 10000)
refresh_snapshot()
owner_user = get_table("users").find_one(username=owner_name)
farm = store.get_farm(owner_user["uid"])
r = session.post(
f"{BASE_URL}/game/farm/{owner_name}/defense-item",
data={"farm_uid": farm["uid"], "item_type": "mines"},
headers=JSON,
)
assert r.status_code in (400, 403)
assert r.status_code != 200
def test_defense_item_purchase_requires_auth(app_server, seeded_db):
r = requests.post(
f"{BASE_URL}/game/farm/test/defense-item",
data={"farm_uid": "x", "item_type": "mines"},
headers=JSON,
)
assert r.status_code in (401, 303)
def test_insurance_purchase_duplicate_rejected(app_server, seeded_db):
session, name = _signup()
_reset_farm(name, 10000)
refresh_snapshot()
user = get_table("users").find_one(username=name)
farm = store.get_farm(user["uid"])
r1 = session.post(
f"{BASE_URL}/game/farm/{name}/defense-item",
data={"farm_uid": farm["uid"], "item_type": "insurance"},
headers=JSON,
)
assert r1.status_code == 200
r2 = session.post(
f"{BASE_URL}/game/farm/{name}/defense-item",
data={"farm_uid": farm["uid"], "item_type": "insurance"},
headers=JSON,
)
assert r2.status_code == 400