def test_index_redirect(client): resp = client.get("/", follow_redirects=False) assert resp.status_code == 302 assert resp.headers["location"] == "/invite?team=tidb-community&channel=everyone" def test_health(client): resp = client.get("/health") assert resp.status_code == 200 assert resp.json()["status"] == "healthy" def test_invite_get(client): resp = client.get("/invite?team=tidb-community&channel=everyone&ref=direct") assert resp.status_code == 200 assert "Join the Slack" in resp.text def test_invite_post(client, monkeypatch): from app.routes import invite as invite_route monkeypatch.setattr( invite_route, "invite_user_to_slack", lambda team_domain, email, channel, token: '{"ok": true}', ) resp = client.post( "/invite", data={ "email": "demo@example.com", "channel": "everyone", "team": "tidb-community", "ref": "direct", }, ) assert resp.status_code == 200 assert resp.text == '{"ok": true}' def test_events_url_verification(client): resp = client.post("/events", json={"type": "url_verification", "challenge": "abc123"}) assert resp.status_code == 200 assert resp.json() == {"challenge": "abc123"} def test_admin_generate(client): resp = client.get("/admin/generate") assert resp.status_code == 200 assert "Generate link" in resp.text