The purpose of this project is to certify that an OpenFaaS provider is doing what it should in response to the RESTful API.
The tests assume a local environment with basic authentication turned off.
The test can use auth by setting an explicit Bearer token using the -token
flag or by reading the CLI config when you set the -enableAuth
flag.
echo -n $PASSWORD | faas-cli login --gateway=$OPENFAAS_URL --username admin --password-stdin
go test - v ./tests -enableAuth -gateway=$OPENFAAS_URL
Usage with local Kubernetes cluster:
export OPENFAAS_URL=http://127.0.0.1:31112/
make test-kubernetes
You will need to have access to kubectl
for creating and cleaning state.
If you have enabled auth in your cluster, first login with the faas-cli
and then use
export OPENFAAS_URL=http://127.0.0.1:31112/
make test-kubernetes .FEATURE_FLAGS='-enableAuth'
While developing the certifier
, we generally run/test the certifier
locally using faas-netes
. The cleanest way to do this is using an throw-away cluster using KinD and arkade
kind create cluster
arkade install openfaas --basic-auth=false
kubectl rollout status -n openfaas deploy/gateway
kubectl port-forward -n openfaas svc/gateway 8080:8080 > /dev/null 2>&1 &
export OPENFAAS_URL=http://127.0.0.1:8080/
make test-kubernetes
When you are done, you can stop the port-forward and clean up the cluster using
pkill kubectl
kind delete cluster
The test suite uses the Go test framework, so we can run individual tests by passing the -run
flag.
For example,
go test -run '^Test_SecretCRUD'
This is exposed in the Makefile
,
make test-kubernetes .TEST_FLAGS='-run ^Test_SecretCRUD'
Some providers may not implement all features (yet) or an installation may have disabled a feature (e.g. scale to zero using the faas-idler)
-enableAuth
enable/disable authentication. The auth will be parsed from the default config in ~/.openfaas/config.yml
-gateway string
set the gateway URL, if empty use the gateway_url env variable
-enableScaling
enable/disable scale from zero tests (default true)
-secretUpdate
enable/disable secret update tests (default true)
-token string
authentication Bearer token override, enables auth automatically
These flags can be passed the the Makefile
via the .FEATURE_FLAGS
variable:
make test-kubernetes .FEATURE_FLAGS='-scaleToZero=false'
This is a work-in-progress and attempts to cover the basic scenarios of operating an OpenFaaS provider.
Style guidelines
- Initial versions use idiomatic Go for tests (no asserts or Gherkin)
- Duplication is better than premature abstraction / complexity
- Tests need to cope with timeouts and attempt retries when that makes sense
- should pass
gofmt
- commits should follow contribution guide of openfaas/faas