Add integration tests with testify/suite. Moved some structs outside of controller funcs so we can re-use them in the testing package. Add CI workflow for running tests on every push.