This repository has no description
1from __future__ import annotations
2
3from unittest.mock import patch
4
5import pytest
6from fastapi.testclient import TestClient
7
8from app.main import app
9from app.questionnaires import IssueUriError, QuestionnaireNotFoundError
10
11client = TestClient(app)
12
13SAMPLE_URI = "at://did:plc:zmjoeu3stwcn44647rhxa44o/sh.tangled.repo.issue/3lvzel2uo3a22"
14SAMPLE_PAYLOAD = {
15 "issue": SAMPLE_URI,
16 "version": 2,
17 "introduction": {"project": "p", "issue": "i", "approach": "a"},
18 "items": [],
19}
20
21
22def test_questionnaire_missing_param():
23 res = client.get("/questionnaire")
24 assert res.status_code == 400
25
26
27def test_questionnaire_not_found():
28 with patch("app.questionnaires.load_questionnaire_payload") as load:
29 load.side_effect = QuestionnaireNotFoundError(SAMPLE_URI)
30 res = client.get("/questionnaire", params={"issue": SAMPLE_URI})
31 assert res.status_code == 404
32
33
34def test_questionnaire_returns_payload():
35 with patch("app.questionnaires.load_questionnaire_payload", return_value=SAMPLE_PAYLOAD):
36 res = client.get("/questionnaire", params={"issue": SAMPLE_URI})
37 assert res.status_code == 200
38 assert res.json() == SAMPLE_PAYLOAD
39
40
41def test_questionnaire_accepts_issue_uri_alias():
42 with patch("app.questionnaires.load_questionnaire_payload", return_value=SAMPLE_PAYLOAD) as load:
43 res = client.get("/questionnaire", params={"issue-uri": SAMPLE_URI})
44 assert res.status_code == 200
45 load.assert_called_once_with(SAMPLE_URI)
46
47
48def test_questionnaire_bad_issue_uri():
49 with patch(
50 "app.questionnaires.load_questionnaire_payload",
51 side_effect=IssueUriError("bad"),
52 ):
53 res = client.get("/questionnaire", params={"issue": "not-a-uri"})
54 assert res.status_code == 400