Service tests[1] are the main unit tests, and use mock implementations of the data store interfaces.
Data (DAO) tests[2] are generally run across every implementation using only the public interface. This helps me stay sane with the mock implementations.
The API tests[3] are integration tests, and use Go's excellent httptest package to boot a real server and execute real HTTP commands.
[1] https://github.com/keratin/authn-server/tree/master/services
[2] https://github.com/keratin/authn-server/tree/master/data
[3] https://github.com/keratin/authn-server/tree/master/api/acco...
https://github.com/keratin/authn-server/blob/master/Makefile...
Notice it runs "go test $(shell glide nv)"
`glide nv` is a command that gets you all packages except the vendor directory https://github.com/Masterminds/glide#glide-novendor-aliased-...
then read the go doc for test https://golang.org/cmd/go/#hdr-Test_packages:
> 'Go test' recompiles each package along with any files with names matching the file pattern "*_test.go".