@@ -20,21 +20,24 @@ import (
20
20
21
21
func TestPrepareShareMetadata (t * testing.T ) {
22
22
ts := []struct {
23
+ allVolumeParams map [string ]string
23
24
appendShareMetadata string
24
25
cluster string
25
26
expectedResult map [string ]string
26
27
expectedError bool
27
28
}{
28
29
{
29
30
// Empty metadata and cluster
31
+ allVolumeParams : map [string ]string {},
30
32
appendShareMetadata : "" ,
31
33
cluster : "" ,
32
34
expectedResult : nil ,
33
35
expectedError : false ,
34
36
},
35
37
{
36
38
// Existing metadata and empty cluster
37
- appendShareMetadata : "{\" keyA\" : \" valueA\" , \" keyB\" : \" valueB\" }" ,
39
+ allVolumeParams : map [string ]string {"appendShareMetadata" : `{"keyA": "valueA", "keyB": "valueB"}` },
40
+ appendShareMetadata : `{"keyA": "valueA", "keyB": "valueB"}` ,
38
41
cluster : "" ,
39
42
expectedResult : map [string ]string {"keyA" : "valueA" , "keyB" : "valueB" },
40
43
expectedError : false ,
@@ -48,29 +51,66 @@ func TestPrepareShareMetadata(t *testing.T) {
48
51
},
49
52
{
50
53
// Both metadata and cluster
54
+ allVolumeParams : map [string ]string {"appendShareMetadata" : `{"keyA": "valueA", "keyB": "valueB"}` },
51
55
appendShareMetadata : "{\" keyA\" : \" valueA\" , \" keyB\" : \" valueB\" }" ,
52
56
cluster : "MyCluster" ,
53
57
expectedResult : map [string ]string {"keyA" : "valueA" , "keyB" : "valueB" , clusterMetadataKey : "MyCluster" },
54
58
expectedError : false ,
55
59
},
56
60
{
57
61
// Overwrite cluster
62
+ allVolumeParams : map [string ]string {"appendShareMetadata" : "{\" keyA\" : \" valueA\" , \" " + clusterMetadataKey + "\" : \" SomeValue\" }" },
58
63
appendShareMetadata : "{\" keyA\" : \" valueA\" , \" " + clusterMetadataKey + "\" : \" SomeValue\" }" ,
59
64
cluster : "MyCluster" ,
60
65
expectedResult : map [string ]string {"keyA" : "valueA" , clusterMetadataKey : "SomeValue" },
61
66
expectedError : false ,
62
67
},
63
68
{
64
69
// Incorrect metadata
70
+ allVolumeParams : map [string ]string {"appendShareMetadata" : "INVALID" },
65
71
appendShareMetadata : "INVALID" ,
66
72
cluster : "MyCluster" ,
67
73
expectedResult : nil ,
68
74
expectedError : true ,
69
75
},
76
+ {
77
+ // csi-provisioner PV/PVC metadata
78
+ allVolumeParams : map [string ]string {
79
+ "csi.storage.k8s.io/pvc/name" : "pvc-name" ,
80
+ "csi.storage.k8s.io/pvc/namespace" : "pvc-namespace" ,
81
+ "csi.storage.k8s.io/pv/name" : "pv-name" ,
82
+ },
83
+ cluster : "" ,
84
+ expectedResult : map [string ]string {
85
+ "csi.storage.k8s.io/pvc/name" : "pvc-name" ,
86
+ "csi.storage.k8s.io/pvc/namespace" : "pvc-namespace" ,
87
+ "csi.storage.k8s.io/pv/name" : "pv-name" ,
88
+ },
89
+ appendShareMetadata : "" ,
90
+ expectedError : false ,
91
+ },
92
+ {
93
+ // csi-provisioner PV/PVC metadata with conflicting appendShareMetadata
94
+ allVolumeParams : map [string ]string {
95
+ "csi.storage.k8s.io/pvc/name" : "pvc-name" ,
96
+ "csi.storage.k8s.io/pvc/namespace" : "pvc-namespace" ,
97
+ "csi.storage.k8s.io/pv/name" : "pv-name" ,
98
+ "appendShareMetadata" : `{"csi.storage.k8s.io/pvc/name": "SomeValue", "keyX": "valueX"}` ,
99
+ },
100
+ appendShareMetadata : `{"csi.storage.k8s.io/pvc/name": "SomeValue", "keyX": "valueX"}` ,
101
+ cluster : "" ,
102
+ expectedResult : map [string ]string {
103
+ "csi.storage.k8s.io/pvc/name" : "pvc-name" ,
104
+ "csi.storage.k8s.io/pvc/namespace" : "pvc-namespace" ,
105
+ "csi.storage.k8s.io/pv/name" : "pv-name" ,
106
+ "keyX" : "valueX" ,
107
+ },
108
+ expectedError : false ,
109
+ },
70
110
}
71
111
72
112
for i := range ts {
73
- result , err := prepareShareMetadata (ts [i ].appendShareMetadata , ts [i ].cluster )
113
+ result , err := prepareShareMetadata (ts [i ].appendShareMetadata , ts [i ].cluster , ts [ i ]. allVolumeParams )
74
114
75
115
if err != nil && ! ts [i ].expectedError {
76
116
t .Errorf ("test %d: unexpected error: %v" , i , err )
0 commit comments