github.com/opendevstack/tailor@v1.3.5-0.20220119161809-cab064e60a67/pkg/openshift/list_test.go (about)

     1  package openshift
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  func TestConfigFilterByKind(t *testing.T) {
     8  	byteList := []byte(
     9  		`apiVersion: v1
    10  items:
    11  - apiVersion: v1
    12    kind: PersistentVolumeClaim
    13    metadata:
    14      name: foo
    15    spec:
    16      accessModes:
    17      - ReadWriteOnce
    18      resources:
    19        requests:
    20          storage: 5Gi
    21      storageClassName: gp2
    22    status: {}
    23  - apiVersion: v1
    24    kind: ConfigMap
    25    metadata:
    26      name: bar
    27    data:
    28      bar: baz
    29  kind: List
    30  metadata: {}
    31  `)
    32  
    33  	filter := &ResourceFilter{
    34  		Kinds: []string{"PersistentVolumeClaim"},
    35  		Name:  "",
    36  		Label: "",
    37  	}
    38  
    39  	list, _ := NewTemplateBasedResourceList(filter, byteList)
    40  
    41  	if len(list.Items) != 1 {
    42  		t.Errorf("One item should have been extracted, got %v items.", len(list.Items))
    43  		return
    44  	}
    45  
    46  	item := list.Items[0]
    47  	if item.Kind != "PersistentVolumeClaim" {
    48  		t.Errorf("Item should have been a PersistentVolumeClaim, got %s.", item.Kind)
    49  	}
    50  }
    51  
    52  func TestConfigFilterByName(t *testing.T) {
    53  	byteList := []byte(
    54  		`apiVersion: v1
    55  items:
    56  - apiVersion: v1
    57    kind: PersistentVolumeClaim
    58    metadata:
    59      name: foo
    60    spec:
    61      accessModes:
    62      - ReadWriteOnce
    63      resources:
    64        requests:
    65          storage: 5Gi
    66      storageClassName: gp2
    67    status: {}
    68  - apiVersion: v1
    69    kind: PersistentVolumeClaim
    70    metadata:
    71      name: bar
    72    spec:
    73      accessModes:
    74      - ReadWriteOnce
    75      resources:
    76        requests:
    77          storage: 1Gi
    78      storageClassName: gp2
    79    status: {}
    80  kind: List
    81  metadata: {}
    82  `)
    83  
    84  	filter := &ResourceFilter{
    85  		Kinds: []string{},
    86  		Name:  "PersistentVolumeClaim/foo",
    87  		Label: "",
    88  	}
    89  
    90  	list, _ := NewTemplateBasedResourceList(filter, byteList)
    91  
    92  	if len(list.Items) != 1 {
    93  		t.Errorf("One item should have been extracted, got %v items.", len(list.Items))
    94  		return
    95  	}
    96  
    97  	item := list.Items[0]
    98  	if item.Name != "foo" {
    99  		t.Errorf("Item should have had name foo, got %s.", item.Name)
   100  	}
   101  }
   102  
   103  func TestConfigFilterBySelector(t *testing.T) {
   104  	byteList := []byte(
   105  		`apiVersion: v1
   106  items:
   107  - apiVersion: v1
   108    kind: PersistentVolumeClaim
   109    metadata:
   110      labels:
   111        app: foo
   112      name: foo
   113    spec:
   114      accessModes:
   115      - ReadWriteOnce
   116      resources:
   117        requests:
   118          storage: 5Gi
   119      storageClassName: gp2
   120    status: {}
   121  - apiVersion: v1
   122    kind: PersistentVolumeClaim
   123    metadata:
   124      labels:
   125        app: bar
   126      name: bar
   127    spec:
   128      accessModes:
   129      - ReadWriteOnce
   130      resources:
   131        requests:
   132          storage: 1Gi
   133      storageClassName: gp2
   134    status: {}
   135  - apiVersion: v1
   136    kind: ConfigMap
   137    metadata:
   138      labels:
   139        app: foo
   140      name: foo
   141    data:
   142      bar: baz
   143  - apiVersion: v1
   144    kind: ConfigMap
   145    metadata:
   146      labels:
   147        app: bar
   148      name: bar
   149    data:
   150      bar: baz
   151  - apiVersion: v1
   152    data:
   153      auth-token: abcdef
   154    kind: Secret
   155    metadata:
   156      name: bar
   157      labels:
   158        app: bar
   159    type: opaque
   160  kind: List
   161  metadata: {}
   162  `)
   163  
   164  	pvcFilter := &ResourceFilter{
   165  		Kinds: []string{"PersistentVolumeClaim"},
   166  		Name:  "",
   167  		Label: "app=foo",
   168  	}
   169  	cmFilter := &ResourceFilter{
   170  		Kinds: []string{"ConfigMap"},
   171  		Name:  "",
   172  		Label: "app=foo",
   173  	}
   174  	secretFilter := &ResourceFilter{
   175  		Kinds: []string{"Secret"},
   176  		Name:  "",
   177  		Label: "app=foo",
   178  	}
   179  
   180  	pvcList, _ := NewTemplateBasedResourceList(pvcFilter, byteList)
   181  
   182  	if len(pvcList.Items) != 1 {
   183  		t.Errorf("One item should have been extracted, got %v items.", len(pvcList.Items))
   184  	}
   185  
   186  	_, err := pvcList.getItem("PersistentVolumeClaim", "foo")
   187  	if err != nil {
   188  		t.Errorf("Item foo should have been present.")
   189  	}
   190  
   191  	cmList, _ := NewTemplateBasedResourceList(cmFilter, byteList)
   192  
   193  	if len(cmList.Items) != 1 {
   194  		t.Errorf("One item should have been extracted, got %v items.", len(cmList.Items))
   195  	}
   196  
   197  	_, err = cmList.getItem("ConfigMap", "foo")
   198  	if err != nil {
   199  		t.Errorf("Item should have been present.")
   200  	}
   201  
   202  	secretList, _ := NewTemplateBasedResourceList(secretFilter, byteList)
   203  
   204  	if len(secretList.Items) != 0 {
   205  		t.Errorf("No item should have been extracted, got %v items.", len(secretList.Items))
   206  	}
   207  }