Add codeception and a functional test