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_URLUsage with local Kubernetes cluster:
export OPENFAAS_URL=http://127.0.0.1:31112/
make test-kubernetesYou 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-kubernetesWhen you are done, you can stop the port-forward and clean up the cluster using
pkill kubectl
kind delete clusterThe 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 automaticallyThese 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