fix issue 1778

* fix issue https://github.com/kubernetes/kompose/issues/1778
*add tests with hardcoded values to mokup file access

Signed-off-by: jose luis <2064537+sosan@users.noreply.github.com>
This commit is contained in:
jose luis 2024-01-10 18:38:12 +01:00
parent 3499798b5a
commit b544c17472
No known key found for this signature in database
GPG Key ID: 6D23FAD11F88081A
3 changed files with 79 additions and 1 deletions

View File

@ -946,3 +946,15 @@ func GetContainerArgs(service kobject.ServiceConfig) []string {
} }
return args return args
} }
// GetFileName extracts the file name from a given file path or file name.
// If the input fileName contains a "/", it retrieves the substring after the last "/".
// The function does not format the file name further, as it may contain periods or other valid characters.
// Returns the extracted file name.
func GetFileName(fileName string) string {
if strings.Contains(fileName, "/") {
fileName = fileName[strings.LastIndex(fileName, "/")+1:]
}
// Not format filename because can begin with .fileName
return fileName
}

View File

@ -582,6 +582,7 @@ func (k *Kubernetes) CreateSecrets(komposeObject kobject.KomposeObject) ([]*api.
return nil, err return nil, err
} }
data := []byte(dataString) data := []byte(dataString)
fileName := GetFileName(config.File)
secret := &api.Secret{ secret := &api.Secret{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
Kind: "Secret", Kind: "Secret",
@ -592,7 +593,7 @@ func (k *Kubernetes) CreateSecrets(komposeObject kobject.KomposeObject) ([]*api.
Labels: transformer.ConfigLabels(name), Labels: transformer.ConfigLabels(name),
}, },
Type: api.SecretTypeOpaque, Type: api.SecretTypeOpaque,
Data: map[string][]byte{name: data}, Data: map[string][]byte{fileName: data},
} }
objects = append(objects, secret) objects = append(objects, secret)
} else { } else {

View File

@ -1145,3 +1145,68 @@ func TestNamespaceGenerationBlank(t *testing.T) {
} }
} }
} }
func TestKubernetes_CreateSecrets(t *testing.T) {
// hardcoded
komposeDefaultObject := kobject.KomposeObject{
ServiceConfigs: map[string]kobject.ServiceConfig{"app": newServiceConfig()},
Secrets: types.Secrets{
"config-ini": types.SecretConfig{
Name: "debug-config-ini",
File: "../../../docs/CNAME",
},
},
}
type fields struct {
Opt kobject.ConvertOptions
}
type args struct {
komposeObject kobject.KomposeObject
}
tests := []struct {
name string
fields fields
args args
want []*api.Secret
wantErr bool
}{
// TODO: Add test cases.
{
name: "CreateSecrets from default KomposeObject amd hardcoded secrets",
args: args{
komposeObject: komposeDefaultObject,
},
want: []*api.Secret{
{
TypeMeta: metav1.TypeMeta{
Kind: "Secret",
APIVersion: "v1",
},
ObjectMeta: metav1.ObjectMeta{
Name: FormatResourceName("config-ini"),
Labels: transformer.ConfigLabels("config-ini"),
},
Type: api.SecretTypeOpaque,
Data: map[string][]byte{"CNAME": []byte("kompose.io")},
},
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
k := &Kubernetes{
Opt: tt.fields.Opt,
}
got, err := k.CreateSecrets(tt.args.komposeObject)
if (err != nil) != tt.wantErr {
t.Errorf("Kubernetes.CreateSecrets() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("Kubernetes.CreateSecrets() = %v, want %v", got, tt.want)
}
})
}
}