Files
coredns/plugin/metadata/provider_test.go
Miek Gieben 2fd31cd3e0 plugin/metadata: some cleanups (#1906)
* plugin/metadata: some cleanups

Name to provider.go as that's what being defined right now in the file.
Use request.Request because that's done in variables.go anyway. Name the
main storage M, because there is no further meaning behind.

Remove superfluous methods

Signed-off-by: Miek Gieben <miek@miek.nl>

* Fix test

Signed-off-by: Miek Gieben <miek@miek.nl>
2018-06-29 15:03:25 +01:00

49 lines
1.2 KiB
Go

package metadata
import (
"context"
"reflect"
"testing"
)
func TestMD(t *testing.T) {
tests := []struct {
addValues map[string]interface{}
expectedValues map[string]interface{}
}{
{
// Add initial metadata key/vals
map[string]interface{}{"key1": "val1", "key2": 2},
map[string]interface{}{"key1": "val1", "key2": 2},
},
{
// Add additional key/vals.
map[string]interface{}{"key3": 3, "key4": 4.5},
map[string]interface{}{"key1": "val1", "key2": 2, "key3": 3, "key4": 4.5},
},
}
// Using one same md and ctx for all test cases
ctx := context.TODO()
ctx = context.WithValue(ctx, metadataKey{}, M{})
m, _ := FromContext(ctx)
for i, tc := range tests {
for k, v := range tc.addValues {
m.SetValue(k, v)
}
if !reflect.DeepEqual(tc.expectedValues, map[string]interface{}(m)) {
t.Errorf("Test %d: Expected %v but got %v", i, tc.expectedValues, m)
}
// Make sure that md is recieved from context successfullly
mFromContext, ok := FromContext(ctx)
if !ok {
t.Errorf("Test %d: md is not recieved from the context", i)
}
if !reflect.DeepEqual(m, mFromContext) {
t.Errorf("Test %d: md recieved from context differs from initial. Initial: %v, from context: %v", i, m, mFromContext)
}
}
}