Categorygithub.com/stevendborrelli/function-unit-test
modulepackage
0.1.0
Repository: https://github.com/stevendborrelli/function-unit-test.git
Documentation: pkg.go.dev

# README

function-unit-test

CI

function-unit-test is a Crossplane function that can run CEL expressions against your desired state. This allows you to test the results of a Composition pipeline.

Installing

Functions require Crossplane 1.14 or newer. Apply the following manifest to your cluster:

apiVersion: pkg.crossplane.io/v1beta1
kind: Function
metadata:
  name: function-unit-test
spec:
  package: index.docker.io/steve/function-unit-test:v0.1.0

Configuring Unit Tests

See tests in examples.

After all your desired resources have been rendered with other functions, call the unittest function and define CEL TestCases.

If errorOnFailedTest is set to true, failing tests will return an error. This is useful when running this function in CI pipelines via crossplane beta render.

 - step:
    functionRef:
      name: function-unit-test
    input:
      apiVersion: unittest.fn.crossplane.io/v1beta1
      kind: TestCases
      errorOnFailedTest: false
      testCases:
      - description: "test pass"
        assert: observed.composite.resource.spec.env == "dev"
      - description: "test fail"
        assert: observed.composite.resource.spec.env == "prod"
      # - description: "test error"
      #   assert: a == b
      - assert: |-
          "kind" in desired.resources['test-resource'].resource &&
          desired.resources['test-resource'].resource.kind == 'NopResource'
        description: all resources "test" is of "NopResource" kind
      - assert: |- 
          desired.resources.all(r, "labels" in desired.resources[r].resource.metadata && 
          "security-setting" in desired.resources[r].resource.metadata.labels &&
          desired.resources[r].resource.metadata.labels["security-setting"] == "true")
        description: All resources have the "security-setting" label

Building the Function

# Run code generation - see input/generate.go
$ go generate ./...

# Run tests - see fn_test.go
$ go test ./...

# Build the function's runtime image - see Dockerfile
$ docker build . --tag=function-unit-test-runtime

# Build a function package - see package/crossplane.yaml
$ crossplane xpkg build -f package --embed-runtime-image=function-unit-test-runtime

# Packages

No description provided by the author

# Functions

EvaluateCondition will evaluate a CEL expression.
NewCELEnvironment sets up the CEL Environment.
ToCELVars formats a RunFunctionRequest for CEL evaluation.

# Structs

CLI of this Function.
No description provided by the author
No description provided by the author
No description provided by the author