fix: use secretId to match secret names in configs
continuous-integration/drone/push Build is passing Details

This commit is contained in:
decentral1se 2023-09-25 15:51:15 +02:00
parent 776a83d8d1
commit d5b18d74ef
Signed by: decentral1se
GPG Key ID: 03789458B3D0C410
2 changed files with 49 additions and 11 deletions

View File

@ -87,22 +87,19 @@ func ReadSecretsConfig(appEnv map[string]string, composeFiles []string, recipeNa
return secretConfigs, nil
}
for _, secret := range config.Secrets {
firstIdx := strings.Index(secret.Name, "_")
lastIdx := strings.LastIndex(secret.Name, "_")
secretName := secret.Name[firstIdx+1 : lastIdx]
if secret.Name != "" && string(secret.Name[len(secret.Name)-1]) == "_" {
return secretConfigs, fmt.Errorf("missing version for secret? (%s)", secretName)
for secretId, secretConfig := range config.Secrets {
if string(secretConfig.Name[len(secretConfig.Name)-1]) == "_" {
return secretConfigs, fmt.Errorf("missing version for secret? (%s)", secretId)
}
if !(slices.Contains(enabledSecrets, secretName)) {
logrus.Debugf("%s not enabled in recipe config, not generating", secretName)
if !(slices.Contains(enabledSecrets, secretId)) {
logrus.Warnf("%s not enabled in recipe config, not generating", secretId)
continue
}
secretVersion := secret.Name[lastIdx+1:]
secretConfigs[secretName] = secretVersion
lastIdx := strings.LastIndex(secretConfig.Name, "_")
secretVersion := secretConfig.Name[lastIdx+1:]
secretConfigs[secretId] = secretVersion
}
return secretConfigs, nil

41
pkg/secret/secret_test.go Normal file
View File

@ -0,0 +1,41 @@
package secret
import (
"path"
"testing"
"coopcloud.tech/abra/pkg/config"
"coopcloud.tech/abra/pkg/recipe"
"coopcloud.tech/abra/pkg/upstream/stack"
loader "coopcloud.tech/abra/pkg/upstream/stack"
"github.com/stretchr/testify/assert"
)
func TestReadSecretsConfig(t *testing.T) {
offline := true
recipe, err := recipe.Get("matrix-synapse", offline)
if err != nil {
t.Fatal(err)
}
sampleEnv, err := recipe.SampleEnv()
if err != nil {
t.Fatal(err)
}
composeFiles := []string{path.Join(config.RECIPES_DIR, recipe.Name, "compose.yml")}
secretsFromConfig, err := ReadSecretsConfig(sampleEnv, composeFiles, recipe.Name)
if err != nil {
t.Fatal(err)
}
opts := stack.Deploy{Composefiles: composeFiles}
config, err := loader.LoadComposefile(opts, sampleEnv)
if err != nil {
t.Fatal(err)
}
for secretId := range config.Secrets {
assert.Contains(t, secretsFromConfig, secretId)
}
}