github.com/grafana/tanka@v0.26.1-0.20240506093700-c22cfc35c21a/pkg/process/namespace_test.go (about) 1 package process 2 3 import ( 4 "testing" 5 6 "github.com/google/go-cmp/cmp" 7 "github.com/grafana/tanka/pkg/kubernetes/manifest" 8 ) 9 10 func TestNamespace(t *testing.T) { 11 cases := []struct { 12 name string 13 namespace string 14 before, after manifest.Manifest 15 }{ 16 // resource without a namespace: set it 17 { 18 name: "simple/namespaced", 19 namespace: "testing", 20 before: manifest.Manifest{ 21 "kind": "Deployment", 22 }, 23 after: manifest.Manifest{ 24 "kind": "Deployment", 25 "metadata": map[string]interface{}{ 26 "namespace": "testing", 27 }, 28 }, 29 }, 30 31 // resource with a namespace: ignore it 32 { 33 name: "already-present", 34 namespace: "ignored", 35 before: manifest.Manifest{ 36 "kind": "Deployment", 37 "metadata": map[string]interface{}{"namespace": "mycoolnamespace"}, 38 }, 39 after: manifest.Manifest{ 40 "kind": "Deployment", 41 "metadata": map[string]interface{}{"namespace": "mycoolnamespace"}, 42 }, 43 }, 44 45 // empty default ns: do nothing 46 { 47 name: "no-default", 48 namespace: "", 49 before: manifest.Manifest{ 50 "kind": "Deployment", 51 "metadata": map[string]interface{}{}, 52 }, 53 after: manifest.Manifest{ 54 "kind": "Deployment", 55 "metadata": map[string]interface{}{}, 56 }, 57 }, 58 } 59 60 for _, c := range cases { 61 t.Run(c.name, func(t *testing.T) { 62 result := Namespace(manifest.List{c.before}, c.namespace) 63 64 if diff := cmp.Diff(manifest.List{c.after}, result); diff != "" { 65 t.Error(diff) 66 } 67 }) 68 } 69 }