From 011b496b3fb5d377398be87c20cb29d2593e17f0 Mon Sep 17 00:00:00 2001 From: James Shubin Date: Thu, 5 Sep 2019 18:22:17 -0400 Subject: [PATCH] engine: resources: Ensure the Kind and Name methods work Triple check these work after decoding, by adding a test. --- engine/resources/file_test.go | 53 +++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/engine/resources/file_test.go b/engine/resources/file_test.go index 8faba188..6d0a42e1 100644 --- a/engine/resources/file_test.go +++ b/engine/resources/file_test.go @@ -195,6 +195,59 @@ func TestMiscEncodeDecode3(t *testing.T) { } } +func TestMiscEncodeDecode4(t *testing.T) { + var err error + const ( + Kind = "file" + Name = "file1" + ) + + // encode + input, err := engine.NewNamedResource(Kind, Name) + if err != nil { + t.Errorf("can't create: %v", err) + return + } + fileRes := input.(*FileRes) // must not panic + fileRes.Path = "/tmp/whatever" + // TODO: add other params/traits/etc here! + + b64, err := engineUtil.ResToB64(input) + if err != nil { + t.Errorf("can't encode: %v", err) + return + } + + output, err := engineUtil.B64ToRes(b64) + if err != nil { + t.Errorf("can't decode: %v", err) + return + } + + res1, ok := input.(engine.Res) + if !ok { + t.Errorf("input %v is not a Res", res1) + return + } + res2, ok := output.(engine.Res) + if !ok { + t.Errorf("output %v is not a Res", res2) + return + } + // this uses the more complete, engine cmp function + if err := engine.ResCmp(res1, res2); err != nil { + t.Errorf("the input and output Res values do not match: %+v", err) + } + + // ensure the kind and name are correctly decoded too! + if kind := res2.Kind(); kind != Kind { + t.Errorf("the output kind was `%s`, expected `%s`", kind, Kind) + } + if name := res2.Name(); name != Name { + t.Errorf("the output name was `%s`, expected `%s`", name, Name) + } +} + func TestFileAbsolute1(t *testing.T) { // file resource paths should be absolute f1 := &FileRes{