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  }