Coverage for tests / test_query.py: 100%

118 statements  

« prev     ^ index     » next       coverage.py v7.13.3, created at 2026-04-06 01:24 +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") 1efgh

10 assert response.status_code == 422 1efgh

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

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") 1ijkl

25 assert response.status_code == 200 1ijkl

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

27 

28 

29def test_query_not_declared_baz(): 1abcd

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

31 assert response.status_code == 422 1mnop

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

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") 1qrst

46 assert response.status_code == 200 1qrst

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

48 

49 

50def test_query_optional_query_baz(): 1abcd

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

52 assert response.status_code == 200 1uvwx

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

54 

55 

56def test_query_optional_not_declared_baz(): 1abcd

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

58 assert response.status_code == 200 1yzAB

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

60 

61 

62def test_query_int(): 1abcd

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

64 assert response.status_code == 422 1CDEF

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

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") 1GHIJ

79 assert response.status_code == 200 1GHIJ

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

81 

82 

83def test_query_int_query_42_5(): 1abcd

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

85 assert response.status_code == 422 1KLMN

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

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") 1OPQR

100 assert response.status_code == 422 1OPQR

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

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") 1STUV

115 assert response.status_code == 422 1STUV

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

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") 1WXYZ

130 assert response.status_code == 200 1WXYZ

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

132 

133 

134def test_query_int_optional_query_50(): 1abcd

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

136 assert response.status_code == 200 10123

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

138 

139 

140def test_query_int_optional_query_foo(): 1abcd

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

142 assert response.status_code == 422 14567

143 assert response.json() == { 14567

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") 189!#

157 assert response.status_code == 200 189!#

158 assert response.json() == "foo bar 10" 189!#

159 

160 

161def test_query_int_default_query_50(): 1abcd

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

163 assert response.status_code == 200 1$%'(

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

165 

166 

167def test_query_int_default_query_foo(): 1abcd

168 response = client.get("/query/int/default?query=foo") 1)*+,

169 assert response.status_code == 422 1)*+,

170 assert response.json() == { 1)*+,

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") 1-./:

184 assert response.status_code == 200 1-./:

185 assert response.json() == "foo bar" 1-./:

186 

187 

188def test_query_param_query_50(): 1abcd

189 response = client.get("/query/param?query=50") 1;=?@

190 assert response.status_code == 200 1;=?@

191 assert response.json() == "foo bar 50" 1;=?@

192 

193 

194def test_query_param_required(): 1abcd

195 response = client.get("/query/param-required") 1[]^_

196 assert response.status_code == 422 1[]^_

197 assert response.json() == { 1[]^_

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") 2~ abbbcb

217 assert response.status_code == 422 2~ abbbcb

218 assert response.json() == { 2~ abbbcb

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") 2dbebfbgb

232 assert response.status_code == 200 2dbebfbgb

233 assert response.json() == "foo bar 50" 2dbebfbgb

234 

235 

236def test_query_param_required_int_query_foo(): 1abcd

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

238 assert response.status_code == 422 2hbibjbkb

239 assert response.json() == { 2hbibjbkb

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") 2lbmbnbob

253 assert response.status_code == 200 2lbmbnbob

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

255 

256 

257def test_query_list(): 1abcd

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

259 assert response.status_code == 200 2pbqbrbsb

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

261 

262 

263def test_query_list_empty(): 1abcd

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

265 assert response.status_code == 422 2BbCbDbEb

266 

267 

268def test_query_list_default(): 1abcd

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

270 assert response.status_code == 200 2tbubvbwb

271 assert response.json() == [1, 2] 2tbubvbwb

272 

273 

274def test_query_list_default_empty(): 1abcd

275 response = client.get("/query/list-default/") 2xbybzbAb

276 assert response.status_code == 200 2xbybzbAb

277 assert response.json() == [] 2xbybzbAb