generate contextually sensible fuzz tests for servant apps
Go to file
2020-12-24 16:18:42 -05:00
.github/workflows mucking with github actions 2020-11-30 14:10:23 -05:00
app autogenerated stuff 2020-06-05 12:01:44 -04:00
scripts tidying up 2020-06-06 10:24:56 -04:00
src cleanup and example 2020-12-24 16:16:09 -05:00
test cleanup and example 2020-12-24 16:16:09 -05:00
.gitignore cleaned up some type level stuff, added some type level bits 2020-08-08 18:46:09 -04:00
ChangeLog.md autogenerated stuff 2020-06-05 12:01:44 -04:00
Example.lhs swap roles of lhs & md 2020-12-24 16:18:42 -05:00
EXAMPLE.md swap roles of lhs & md 2020-12-24 16:18:42 -05:00
LICENSE autogenerated stuff 2020-06-05 12:01:44 -04:00
Makefile warnings and import cleanup 2020-12-17 10:44:02 -05:00
package.yaml cleanup and example 2020-12-24 16:16:09 -05:00
README.md cleanup and example 2020-12-24 16:16:09 -05:00
roboservant.cabal cleanup and example 2020-12-24 16:16:09 -05:00
Setup.hs autogenerated stuff 2020-06-05 12:01:44 -04:00
stack.yaml CPP to check for servant version 2020-12-16 13:14:03 -05:00
stack.yaml.lock CPP to check for servant version 2020-12-16 13:14:03 -05:00
TODO.md split up todo/readme 2020-09-23 23:11:05 -04:00

roboservant

Automatically fuzz your servant apis in a contextually-aware way.

CI

example

see full example here

why?

Servant gives us a lot of information about what a server can do. We use this information to generate arbitrarily long request/response sessions and verify properties that should hold over them.

why not servant-quickcheck?

servant-quickcheck is a great package and I've learned a lot from it. Unfortunately, as mentioned previously, there's a lot of the state space you just can't explore without context: modern webapps are full of pointer-like structures, whether they're URLs or database keys/uuids, and servant-quickcheck requires that you be able to generate these without context via Arbitrary.