The session storage service (aka kask) has unit, functional, and integration tests, and will eventually include a number of other checks (formatting, lint, etc). For the time being, we are proposing to execute integration tests manually against the staging environment prior to release/deployment, (not automatically by CI). The remainder of these tests/checks though need to be invoked automatically on patch submission, in the customary fashion.
Some considerations:
Compilation for deployment
Kask is written in Go, and so its release artifact is a statically compiled binary executable. Given the security-sensitive nature of this service, we've opted to use build dependencies sourced entirely from what is packaged in Debian Stretch (to piggy-back on the excellent lifecycle/security management provided there). This will make the compilation of release artifacts too error prone to be done on developer workstations; An improperly applied environment variable could result in compilation against the wrong dependencies.
The CI environment should be able to compile Kask in a pristine Debian Stretch environment, (with packaged build dependencies applied), and then make the resulting binary available for deployments.
Functional tests
Kask's functional tests require connectivity to a Cassandra database. Additionally, while care has been taken to ensure that tests won't be influenced by previous runs, ideally the database would be spun up fresh on each new run, and tore down after.