Coverage for tests / test_query.py: 100%

118 statements  

« prev     ^ index     » next       coverage.py v7.13.3, created at 2026-02-12 18:15 +0000

1from fastapi.testclient import TestClient 1abcd

2 

3from .main import app 1abcd

4 

5client = TestClient(app) 1abcd

6 

7 

8def test_query(): 1abcd

9 response = client.get("/query") 1efg

10 assert response.status_code == 422 1efg

11 assert response.json() == { 1efg

12 "detail": [ 

13 { 

14 "type": "missing", 

15 "loc": ["query", "query"], 

16 "msg": "Field required", 

17 "input": None, 

18 } 

19 ] 

20 } 

21 

22 

23def test_query_query_baz(): 1abcd

24 response = client.get("/query?query=baz") 1hij

25 assert response.status_code == 200 1hij

26 assert response.json() == "foo bar baz" 1hij

27 

28 

29def test_query_not_declared_baz(): 1abcd

30 response = client.get("/query?not_declared=baz") 1klm

31 assert response.status_code == 422 1klm

32 assert response.json() == { 1klm

33 "detail": [ 

34 { 

35 "type": "missing", 

36 "loc": ["query", "query"], 

37 "msg": "Field required", 

38 "input": None, 

39 } 

40 ] 

41 } 

42 

43 

44def test_query_optional(): 1abcd

45 response = client.get("/query/optional") 1nop

46 assert response.status_code == 200 1nop

47 assert response.json() == "foo bar" 1nop

48 

49 

50def test_query_optional_query_baz(): 1abcd

51 response = client.get("/query/optional?query=baz") 1qrs

52 assert response.status_code == 200 1qrs

53 assert response.json() == "foo bar baz" 1qrs

54 

55 

56def test_query_optional_not_declared_baz(): 1abcd

57 response = client.get("/query/optional?not_declared=baz") 1tuv

58 assert response.status_code == 200 1tuv

59 assert response.json() == "foo bar" 1tuv

60 

61 

62def test_query_int(): 1abcd

63 response = client.get("/query/int") 1wxy

64 assert response.status_code == 422 1wxy

65 assert response.json() == { 1wxy

66 "detail": [ 

67 { 

68 "type": "missing", 

69 "loc": ["query", "query"], 

70 "msg": "Field required", 

71 "input": None, 

72 } 

73 ] 

74 } 

75 

76 

77def test_query_int_query_42(): 1abcd

78 response = client.get("/query/int?query=42") 1zAB

79 assert response.status_code == 200 1zAB

80 assert response.json() == "foo bar 42" 1zAB

81 

82 

83def test_query_int_query_42_5(): 1abcd

84 response = client.get("/query/int?query=42.5") 1CDE

85 assert response.status_code == 422 1CDE

86 assert response.json() == { 1CDE

87 "detail": [ 

88 { 

89 "type": "int_parsing", 

90 "loc": ["query", "query"], 

91 "msg": "Input should be a valid integer, unable to parse string as an integer", 

92 "input": "42.5", 

93 } 

94 ] 

95 } 

96 

97 

98def test_query_int_query_baz(): 1abcd

99 response = client.get("/query/int?query=baz") 1FGH

100 assert response.status_code == 422 1FGH

101 assert response.json() == { 1FGH

102 "detail": [ 

103 { 

104 "type": "int_parsing", 

105 "loc": ["query", "query"], 

106 "msg": "Input should be a valid integer, unable to parse string as an integer", 

107 "input": "baz", 

108 } 

109 ] 

110 } 

111 

112 

113def test_query_int_not_declared_baz(): 1abcd

114 response = client.get("/query/int?not_declared=baz") 1IJK

115 assert response.status_code == 422 1IJK

116 assert response.json() == { 1IJK

117 "detail": [ 

118 { 

119 "type": "missing", 

120 "loc": ["query", "query"], 

121 "msg": "Field required", 

122 "input": None, 

123 } 

124 ] 

125 } 

126 

127 

128def test_query_int_optional(): 1abcd

129 response = client.get("/query/int/optional") 1LMN

130 assert response.status_code == 200 1LMN

131 assert response.json() == "foo bar" 1LMN

132 

133 

134def test_query_int_optional_query_50(): 1abcd

135 response = client.get("/query/int/optional?query=50") 1OPQ

136 assert response.status_code == 200 1OPQ

137 assert response.json() == "foo bar 50" 1OPQ

138 

139 

140def test_query_int_optional_query_foo(): 1abcd

141 response = client.get("/query/int/optional?query=foo") 1RST

142 assert response.status_code == 422 1RST

143 assert response.json() == { 1RST

144 "detail": [ 

145 { 

146 "type": "int_parsing", 

147 "loc": ["query", "query"], 

148 "msg": "Input should be a valid integer, unable to parse string as an integer", 

149 "input": "foo", 

150 } 

151 ] 

152 } 

153 

154 

155def test_query_int_default(): 1abcd

156 response = client.get("/query/int/default") 1UVW

157 assert response.status_code == 200 1UVW

158 assert response.json() == "foo bar 10" 1UVW

159 

160 

161def test_query_int_default_query_50(): 1abcd

162 response = client.get("/query/int/default?query=50") 1XYZ

163 assert response.status_code == 200 1XYZ

164 assert response.json() == "foo bar 50" 1XYZ

165 

166 

167def test_query_int_default_query_foo(): 1abcd

168 response = client.get("/query/int/default?query=foo") 1012

169 assert response.status_code == 422 1012

170 assert response.json() == { 1012

171 "detail": [ 

172 { 

173 "type": "int_parsing", 

174 "loc": ["query", "query"], 

175 "msg": "Input should be a valid integer, unable to parse string as an integer", 

176 "input": "foo", 

177 } 

178 ] 

179 } 

180 

181 

182def test_query_param(): 1abcd

183 response = client.get("/query/param") 1345

184 assert response.status_code == 200 1345

185 assert response.json() == "foo bar" 1345

186 

187 

188def test_query_param_query_50(): 1abcd

189 response = client.get("/query/param?query=50") 1678

190 assert response.status_code == 200 1678

191 assert response.json() == "foo bar 50" 1678

192 

193 

194def test_query_param_required(): 1abcd

195 response = client.get("/query/param-required") 19!#

196 assert response.status_code == 422 19!#

197 assert response.json() == { 19!#

198 "detail": [ 

199 { 

200 "type": "missing", 

201 "loc": ["query", "query"], 

202 "msg": "Field required", 

203 "input": None, 

204 } 

205 ] 

206 } 

207 

208 

209def test_query_param_required_query_50(): 1abcd

210 response = client.get("/query/param-required?query=50") 1$%'

211 assert response.status_code == 200 1$%'

212 assert response.json() == "foo bar 50" 1$%'

213 

214 

215def test_query_param_required_int(): 1abcd

216 response = client.get("/query/param-required/int") 1()*

217 assert response.status_code == 422 1()*

218 assert response.json() == { 1()*

219 "detail": [ 

220 { 

221 "type": "missing", 

222 "loc": ["query", "query"], 

223 "msg": "Field required", 

224 "input": None, 

225 } 

226 ] 

227 } 

228 

229 

230def test_query_param_required_int_query_50(): 1abcd

231 response = client.get("/query/param-required/int?query=50") 1+,-

232 assert response.status_code == 200 1+,-

233 assert response.json() == "foo bar 50" 1+,-

234 

235 

236def test_query_param_required_int_query_foo(): 1abcd

237 response = client.get("/query/param-required/int?query=foo") 1./:

238 assert response.status_code == 422 1./:

239 assert response.json() == { 1./:

240 "detail": [ 

241 { 

242 "type": "int_parsing", 

243 "loc": ["query", "query"], 

244 "msg": "Input should be a valid integer, unable to parse string as an integer", 

245 "input": "foo", 

246 } 

247 ] 

248 } 

249 

250 

251def test_query_frozenset_query_1_query_1_query_2(): 1abcd

252 response = client.get("/query/frozenset/?query=1&query=1&query=2") 1;=?

253 assert response.status_code == 200 1;=?

254 assert response.json() == "1,2" 1;=?

255 

256 

257def test_query_list(): 1abcd

258 response = client.get("/query/list/?device_ids=1&device_ids=2") 1@[]

259 assert response.status_code == 200 1@[]

260 assert response.json() == [1, 2] 1@[]

261 

262 

263def test_query_list_empty(): 1abcd

264 response = client.get("/query/list/") 2~ abbb

265 assert response.status_code == 422 2~ abbb

266 

267 

268def test_query_list_default(): 1abcd

269 response = client.get("/query/list-default/?device_ids=1&device_ids=2") 1^_`

270 assert response.status_code == 200 1^_`

271 assert response.json() == [1, 2] 1^_`

272 

273 

274def test_query_list_default_empty(): 1abcd

275 response = client.get("/query/list-default/") 1{|}

276 assert response.status_code == 200 1{|}

277 assert response.json() == [] 1{|}