from common.enums import UserRole async def _place(client, headers, name="남의가게"): r = await client.post("/v1/place", headers=headers, json={"name": name, "category": 2}) return r.json()["place"]["place_id"] async def test_개발자는_남의_사업장을_열고_고칠_수_있다(auth_headers, client): owner = await auth_headers("owner1") dev = await auth_headers("dev1", role=UserRole.DEVELOPER.value) pid = await _place(client, owner) got = (await client.get(f"/v1/place/{pid}", headers=dev)).json() assert got["result"]["success"] is True assert got["place"]["name"] == "남의가게" assert (await client.get(f"/v1/place/{pid}/media/list", headers=dev)).json()["result"]["success"] is True as_owner = (await client.get(f"/v1/place/{pid}/site", headers=owner)).json() as_dev = (await client.get(f"/v1/place/{pid}/site", headers=dev)).json() assert as_dev == as_owner async def test_일반_사장님은_남의_사업장을_못_연다(auth_headers, client): owner = await auth_headers("owner2") other = await auth_headers("other2") boss = await auth_headers("boss2", role=UserRole.OWNER.value) pid = await _place(client, owner) assert (await client.get(f"/v1/place/{pid}", headers=other)).json()["result"]["success"] is False assert (await client.get(f"/v1/place/{pid}", headers=boss)).json()["result"]["success"] is False async def test_개발자_자기_목록은_그대로다(auth_headers, client): owner = await auth_headers("owner3") dev = await auth_headers("dev3", role=UserRole.DEVELOPER.value) await _place(client, owner) listed = (await client.get("/v1/place/list", headers=dev)).json() assert listed["result"]["success"] is True assert all(p["name"] != "남의가게" for p in listed["places"]) async def test_사이트관리는_상호_소유자_업종으로_거른다(auth_headers, client): owner = await auth_headers("owner4", name="김사장") dev = await auth_headers("dev4", role=UserRole.DEVELOPER.value) await client.post("/v1/place", headers=owner, json={"name": "검색카페", "category": 2}) await client.post("/v1/place", headers=owner, json={"name": "검색펜션", "category": 1}) def names(r): return sorted(s["name"] for s in r.json()["sites"]) assert names(await client.get("/v1/ops/sites", headers=dev, params={"search": "검색"})) == ["검색카페", "검색펜션"] assert names(await client.get("/v1/ops/sites", headers=dev, params={"search": "김사장"})) == ["검색카페", "검색펜션"] assert names(await client.get("/v1/ops/sites", headers=dev, params={"search": "검색", "category": 2})) == ["검색카페"] counted = (await client.get("/v1/ops/sites", headers=dev, params={"search": "펜션"})).json() assert counted["total"] == 1