mirror of https://github.com/knative/func.git
60 lines
1.8 KiB
Go
60 lines
1.8 KiB
Go
package scaffolding
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
// TestSignatures ensures that the enum of signatures is properly formed.
|
|
// - The correct signature enum is returned from ToSignature
|
|
// - The string method is correctly indexed
|
|
// - "http" is the default for invocation hint
|
|
func TestSignatures(t *testing.T) {
|
|
|
|
// This is a brute-force implementation which simply runs the logic in
|
|
// reverse. Basically just checking ones work when the enum is modified.
|
|
|
|
tests := []struct {
|
|
instanced bool // signatures are brodly classified into instanced or static
|
|
invocation string // the invocation hint (default is "http")
|
|
expectedEnum Signature // the expected enum
|
|
expectedName string // the expected string
|
|
}{
|
|
{true, "", InstancedHTTP, "instanced-http"},
|
|
{true, "http", InstancedHTTP, "instanced-http"},
|
|
{true, "cloudevent", InstancedCloudevents, "instanced-cloudevents"},
|
|
{false, "", StaticHTTP, "static-http"},
|
|
{false, "http", StaticHTTP, "static-http"},
|
|
{false, "cloudevent", StaticCloudevents, "static-cloudevents"},
|
|
{true, "invalid", UnknownSignature, "unknown"},
|
|
{false, "invalid", UnknownSignature, "unknown"},
|
|
}
|
|
|
|
testName := func(instanced bool, invocation string) string {
|
|
instancedString := "instanced"
|
|
if !instanced {
|
|
instancedString = "static"
|
|
}
|
|
invocationString := "default"
|
|
if invocation != "" {
|
|
invocationString = invocation
|
|
}
|
|
return fmt.Sprintf("%v-%v", instancedString, invocationString)
|
|
}
|
|
|
|
for _, test := range tests {
|
|
t.Run(testName(test.instanced, test.invocation), func(t *testing.T) {
|
|
|
|
signature := toSignature(test.instanced, test.invocation)
|
|
|
|
if signature != test.expectedEnum {
|
|
t.Fatal("enum incorrectly mapped.")
|
|
}
|
|
if signature.String() != test.expectedName {
|
|
t.Fatal("string representation incorrectly mapped")
|
|
}
|
|
|
|
})
|
|
}
|
|
}
|