Refactor to remove helpers package

This commit removes the "helpers" package by moving functions from the
package into the other packages that use them.

CheckPayloadSignature() and ExtractParamater() are simply moved to the
"hook" package.  I'm not sure of the usefulness of having these
functions exported, but I left them allow for now.

ValuesToMap() is moved to the "main" webhook package and renamed to
valuesToMap().

Tests were moved into the "hook" package since we only test
ExtractParameter() right now.

This commit closes adnanh/webhook#12.
This commit is contained in:
Cameron Moore 2015-03-20 08:55:42 -05:00
parent d8a21582a3
commit 7dd55f5232
4 changed files with 77 additions and 84 deletions

29
hook/hook_test.go Normal file
View file

@ -0,0 +1,29 @@
package hook
import "testing"
var extractParameterTests = []struct {
s string
params map[string]interface{}
value string
ok bool
}{
{"a", map[string]interface{}{"a": "z"}, "z", true},
{"a.b", map[string]interface{}{"a": map[string]interface{}{"b": "z"}}, "z", true},
{"a.b.c", map[string]interface{}{"a": map[string]interface{}{"b": map[string]interface{}{"c": "z"}}}, "z", true},
{"a.1.b", map[string]interface{}{"a": []interface{}{map[string]interface{}{"b": "y"}, map[string]interface{}{"b": "z"}}}, "z", true},
{"a.1.b.c", map[string]interface{}{"a": []interface{}{map[string]interface{}{"b": map[string]interface{}{"c": "y"}}, map[string]interface{}{"b": map[string]interface{}{"c": "z"}}}}, "z", true},
// failures
{"a.X", map[string]interface{}{"a": map[string]interface{}{"b": "z"}}, "", false},
{"a.500.b", map[string]interface{}{"a": map[string]interface{}{"b": "z"}}, "", false},
{"a.501.b", map[string]interface{}{"a": []interface{}{map[string]interface{}{"b": "y"}, map[string]interface{}{"b": "z"}}}, "", false},
}
func TestExtractParameter(t *testing.T) {
for _, tt := range extractParameterTests {
s, ok := ExtractParameter(tt.s, tt.params)
if ok != tt.ok || s != tt.value {
t.Errorf("failed to extract parameter %q:\nexpected {value:%#v, ok:%#v},\ngot {value:%#v, ok:%#v}", tt.s, tt.value, tt.ok, s, ok)
}
}
}