mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
Insist trigger sources are prefixed (#1184)
* Insist trigger sources are prefixed All trigger sources must have a '/' prefix to be allowed into the datastore. * Adding condition to novelValue for gen tests NovelValue was failing to detect same Config values correctly. This adds a specific check for Config, like the one for Annotation, to ensure a novel value is indeed generated.
This commit is contained in:
@@ -20,7 +20,9 @@ func appReflectType() reflect.Type {
|
||||
}
|
||||
|
||||
func configGenerator() gopter.Gen {
|
||||
return gen.MapOf(gen.AlphaString(), gen.AlphaString())
|
||||
return gen.MapOf(gen.AlphaString(), gen.AlphaString()).Map(func(m map[string]string) Config {
|
||||
return Config(m)
|
||||
})
|
||||
}
|
||||
|
||||
func annotationGenerator() gopter.Gen {
|
||||
@@ -75,6 +77,10 @@ func novelValue(t *testing.T, originalInstance reflect.Value, fieldName string,
|
||||
if !newValue.(Annotations).Equals(currentValue.(Annotations)) {
|
||||
break
|
||||
}
|
||||
} else if fieldName == "Config" {
|
||||
if !newValue.(Config).Equals(currentValue.(Config)) {
|
||||
break
|
||||
}
|
||||
} else {
|
||||
if newValue != currentValue {
|
||||
break
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
"unicode"
|
||||
|
||||
@@ -119,6 +120,10 @@ var (
|
||||
ErrTriggerMissingSource = err{
|
||||
code: http.StatusBadRequest,
|
||||
error: errors.New("Missing Trigger Source")}
|
||||
//ErrTriggerMissingSourcePrefix - source does not have a / prefix
|
||||
ErrTriggerMissingSourcePrefix = err{
|
||||
code: http.StatusBadRequest,
|
||||
error: errors.New("Missing Trigger Source Prefix '/'")}
|
||||
//ErrTriggerNotFound - trigger not found
|
||||
ErrTriggerNotFound = err{
|
||||
code: http.StatusNotFound,
|
||||
@@ -164,6 +169,10 @@ func (t *Trigger) Validate() error {
|
||||
return ErrTriggerMissingSource
|
||||
}
|
||||
|
||||
if !strings.HasPrefix(t.Source, "/") {
|
||||
return ErrTriggerMissingSourcePrefix
|
||||
}
|
||||
|
||||
err := t.Annotations.Validate()
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -44,8 +44,8 @@ func TestTriggerListJsonMarshalling(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
var httpTrigger = &Trigger{Name: "name", AppID: "foo", FnID: "bar", Type: "http", Source: "baz"}
|
||||
var invalidTrigger = &Trigger{Name: "name", AppID: "foo", FnID: "bar", Type: "error", Source: "baz"}
|
||||
var httpTrigger = &Trigger{Name: "name", AppID: "foo", FnID: "bar", Type: "http", Source: "/baz"}
|
||||
var invalidTrigger = &Trigger{Name: "name", AppID: "foo", FnID: "bar", Type: "error", Source: "/baz"}
|
||||
|
||||
var triggerValidateCases = []struct {
|
||||
val *Trigger
|
||||
|
||||
Reference in New Issue
Block a user