Coverage for /pythoncovmergedfiles/medio/medio/src/django-fuzzers/fuzzers.py: 97%

205 statements  

« prev     ^ index     » next       coverage.py v7.0.5, created at 2023-01-17 06:13 +0000

1from django.core.exceptions import ( 

2 ValidationError, 

3 SuspiciousFileOperation, 

4) 

5 

6from django.utils import text 

7from django.utils.http import ( 

8 base36_to_int, 

9 escape_leading_slashes, 

10 int_to_base36, 

11 url_has_allowed_host_and_scheme, 

12 parse_etags, 

13 parse_http_date, 

14 quote_etag, 

15 urlencode, 

16 urlsafe_base64_decode, 

17 urlsafe_base64_encode, 

18) 

19from django.utils.html import ( 

20 conditional_escape, 

21 escape, 

22 escapejs, 

23 # format_html, 

24 # html_safe, 

25 json_script, 

26 linebreaks, 

27 smart_urlquote, 

28 strip_spaces_between_tags, 

29 strip_tags, 

30 urlize, 

31) 

32from django.utils.ipv6 import clean_ipv6_address, is_valid_ipv6_address 

33import datetime 

34from django.utils import feedgenerator 

35from django.utils.encoding import ( 

36 DjangoUnicodeDecodeError, 

37 escape_uri_path, 

38 filepath_to_uri, 

39 iri_to_uri, 

40 smart_str, 

41 uri_to_iri, 

42) 

43from django import forms 

44from django.conf import settings 

45 

46import django 

47 

48settings.configure() 

49django.setup() 

50 

51 

52def test_base36_to_int(inp): 

53 try: 

54 base36_to_int(inp) 

55 except ValueError: 

56 pass 

57 

58 

59def test_int_to_base64(inp): 

60 try: 

61 int_to_base36(inp) 

62 except ValueError: 

63 pass 

64 

65 

66def test_escape_leading_slashes(inp): 

67 escape_leading_slashes(inp) 

68 

69 

70def test_url_has_allowed_host_and_scheme(inp): 

71 url_has_allowed_host_and_scheme(inp, allowed_hosts={"a", "b"}) 

72 

73 

74def test_parse_etags(inp): 

75 parse_etags(inp) 

76 

77 

78def test_parse_http_date(inp): 

79 try: 

80 parse_http_date(inp) 

81 except ValueError as e: 

82 msg = str(e) 

83 if ( 

84 "is not a valid date" not in msg 

85 and "is not in a valid HTTP date format" not in msg 

86 ): 

87 raise 

88 

89 

90def test_quote_etag(inp): 

91 quote_etag(inp) 

92 

93 

94def test_urlencode(inp): 

95 urlencode(inp) 

96 

97 

98def test_urlsafe_base64_decode(inp): 

99 try: 

100 urlsafe_base64_decode(inp) 

101 except ValueError as e: 

102 msg = str(e) 

103 if ( 

104 "Invalid base64-encoded string" not in msg 

105 and "Incorrect padding" not in msg 

106 ): 

107 raise 

108 

109 

110def test_urlsafe_base64_encode(inp): 

111 urlsafe_base64_encode(inp) 

112 

113 

114def test_conditional_escape(inp): 

115 conditional_escape(inp) 

116 

117 

118def test_escape(inp): 

119 escape(inp) 

120 

121 

122def test_escapejs(inp): 

123 escapejs(inp) 

124 

125 

126def test_json_script(inp): 

127 json_script(inp, "id") 

128 

129 

130def test_linebreaks(inp): 

131 linebreaks(inp) 

132 

133 

134def test_smart_urlquote(inp): 

135 smart_urlquote(inp) 

136 

137 

138def test_strip_spaces_between_tags(inp): 

139 strip_spaces_between_tags(inp) 

140 

141 

142def test_strip_tags(inp): 

143 try: 

144 strip_tags(inp) 

145 except NotImplementedError: # TODO: this should be fixed 

146 pass 

147 

148 

149def test_urlize(inp): 

150 urlize(inp) 

151 

152 

153def test_smart_split(inp): 

154 text.smart_split(inp) 

155 

156 

157def test_Truncator(inp): 

158 text.Truncator(inp).words(8, "...", html=True) 

159 

160 

161def test_wrap(inp): 

162 text.wrap(inp, 8) 

163 

164 

165def test_normalize_newlines(inp): 

166 text.normalize_newlines(inp) 

167 

168 

169def test_phone(inp): 

170 text.phone2numeric(inp) 

171 

172 

173def test_unescape_string_literal(inp): 

174 try: 

175 text.unescape_string_literal(inp) 

176 except ValueError as e: 

177 if "Not a string literal: " not in str(e): 

178 raise 

179 

180 

181def test_get_valid_filename(inp): 

182 try: 

183 text.get_valid_filename(inp) 

184 except SuspiciousFileOperation: 

185 pass 

186 

187 

188def test_is_valid_ipv6_address(inp): 

189 is_valid_ipv6_address(inp) 

190 

191 

192def test_clean_ipv6_address(inp): 

193 try: 

194 clean_ipv6_address(inp) 

195 except ValidationError: 

196 pass 

197 

198 

199def test_slugify(inp): 

200 text.slugify(inp) 

201 

202 

203def test_camel_case_to_spaces(inp): 

204 text.camel_case_to_spaces(inp) 

205 

206 

207def test_get_tag_uri(inp): 

208 try: 

209 feedgenerator.get_tag_uri(inp, datetime.date(2004, 10, 25)) 

210 except ValueError: # TODO: Is this a wanted exception? 

211 pass 

212 

213 

214def test_Atom1Feed(inp): 

215 feedgenerator.Atom1Feed(inp, "link", "description") 

216 

217 

218def test_Rss201rev2Feed(inp): 

219 feedgenerator.Rss201rev2Feed(inp, "link", "description") 

220 

221 

222def test_escape_uri_path(inp): 

223 escape_uri_path(inp) 

224 

225 

226def test_filepath_to_uri(inp): 

227 filepath_to_uri(inp) 

228 

229 

230def test_iri_to_uri(inp): 

231 iri_to_uri(inp) 

232 

233 

234def test_uri_to_iri(inp): 

235 uri_to_iri(inp) 

236 

237 

238def test_smart_str(inp): 

239 try: 

240 smart_str(inp) 

241 except DjangoUnicodeDecodeError: 

242 pass 

243 

244 

245def test_forms_BooleanField(inp): 

246 try: 

247 forms.BooleanField().clean(inp) 

248 except ValidationError: 

249 pass 

250 

251 

252def test_forms_NullBooleanField(inp): 

253 try: 

254 forms.NullBooleanField().clean(inp) 

255 except ValidationError: 

256 pass 

257 

258 

259def test_forms_CharField(inp): 

260 try: 

261 forms.CharField().clean(inp) 

262 except ValidationError: 

263 pass 

264 

265 

266def test_forms_DateField(inp): 

267 try: 

268 forms.DateField().clean(inp) 

269 except ValidationError: 

270 pass 

271 

272 

273def test_forms_DateTimeField(inp): 

274 try: 

275 forms.DateTimeField().clean(inp) 

276 except ValidationError: 

277 pass 

278 

279 

280def test_forms_DecimalField(inp): 

281 try: 

282 forms.DecimalField().clean(inp) 

283 except ValidationError: 

284 pass 

285 

286 

287def test_forms_DurationField(inp): 

288 try: 

289 forms.DurationField().clean(inp) 

290 except ValidationError: 

291 pass 

292 

293 

294def test_forms_EmailField(inp): 

295 try: 

296 forms.EmailField().clean(inp) 

297 except ValidationError: 

298 pass 

299 

300 

301def test_forms_Field(inp): 

302 try: 

303 forms.Field().clean(inp) 

304 except ValidationError: 

305 pass 

306 

307 

308def test_forms_FloatField(inp): 

309 try: 

310 forms.FloatField().clean(inp) 

311 except ValidationError: 

312 pass 

313 

314 

315def test_forms_GenericIPAddressField(inp): 

316 try: 

317 forms.GenericIPAddressField().clean(inp) 

318 except ValidationError: 

319 pass 

320 

321 

322def test_forms_IntegerField(inp): 

323 try: 

324 forms.IntegerField().clean(inp) 

325 except ValidationError: 

326 pass 

327 

328 

329def test_forms_SlugField(inp): 

330 try: 

331 forms.SlugField().clean(inp) 

332 except ValidationError: 

333 pass 

334 

335 

336def test_forms_TimeField(inp): 

337 try: 

338 forms.TimeField().clean(inp) 

339 except ValidationError: 

340 pass 

341 

342 

343def test_forms_URLField(inp): 

344 try: 

345 forms.URLField().clean(inp) 

346 except ValidationError: 

347 pass 

348 

349 

350def test_forms_UUIDField(inp): 

351 try: 

352 forms.UUIDField().clean(inp) 

353 except ValidationError: 

354 pass 

355 

356 

357tests = [ 

358 (test_base36_to_int, str), 

359 (test_int_to_base64, int), 

360 (test_escape_leading_slashes, str), 

361 (test_url_has_allowed_host_and_scheme, str), 

362 (test_parse_etags, str), 

363 (test_parse_http_date, str), 

364 (test_quote_etag, str), 

365 # (test_urlencode, str), # TODO: Doesn't actually take a string 

366 (test_urlsafe_base64_decode, str), 

367 (test_urlsafe_base64_encode, bytes), 

368 (test_conditional_escape, str), 

369 (test_escape, str), 

370 (test_escapejs, str), 

371 (test_json_script, str), 

372 (test_linebreaks, str), 

373 (test_smart_urlquote, str), 

374 (test_strip_spaces_between_tags, str), 

375 (test_strip_tags, str), 

376 (test_urlize, str), 

377 (test_smart_split, str), 

378 (test_Truncator, str), 

379 (test_wrap, str), 

380 (test_normalize_newlines, str), 

381 (test_phone, str), 

382 (test_unescape_string_literal, str), 

383 (test_get_valid_filename, str), 

384 (test_is_valid_ipv6_address, str), 

385 (test_clean_ipv6_address, str), 

386 (test_slugify, str), 

387 (test_camel_case_to_spaces, str), 

388 (test_get_tag_uri, str), 

389 (test_Atom1Feed, str), 

390 (test_Rss201rev2Feed, str), 

391 (test_escape_uri_path, str), 

392 (test_filepath_to_uri, str), 

393 (test_iri_to_uri, str), 

394 (test_uri_to_iri, str), 

395 (test_smart_str, bytes), 

396 (test_forms_BooleanField, str), 

397 (test_forms_NullBooleanField, str), 

398 (test_forms_CharField, str), 

399 (test_forms_DateField, str), 

400 (test_forms_DateTimeField, str), 

401 (test_forms_DecimalField, str), 

402 (test_forms_DurationField, str), 

403 (test_forms_EmailField, str), 

404 (test_forms_Field, str), 

405 (test_forms_FloatField, str), 

406 (test_forms_GenericIPAddressField, str), 

407 (test_forms_IntegerField, str), 

408 (test_forms_NullBooleanField, str), 

409 (test_forms_SlugField, str), 

410 (test_forms_TimeField, str), 

411 (test_forms_URLField, str), 

412 (test_forms_UUIDField, str), 

413]