mirror of
https://github.com/Infisical/infisical.git
synced 2026-01-10 07:58:15 -05:00
80 lines
2.0 KiB
Go
80 lines
2.0 KiB
Go
package cmd
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/Infisical/infisical-merge/packages/models"
|
|
"github.com/stretchr/testify/assert"
|
|
"gopkg.in/yaml.v2"
|
|
)
|
|
|
|
func TestFormatAsYaml(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
input []models.SingleEnvironmentVariable
|
|
expected string
|
|
}{
|
|
{
|
|
name: "Empty input",
|
|
input: []models.SingleEnvironmentVariable{},
|
|
expected: "{}\n",
|
|
},
|
|
{
|
|
name: "Single environment variable",
|
|
input: []models.SingleEnvironmentVariable{
|
|
{Key: "KEY1", Value: "VALUE1"},
|
|
},
|
|
expected: "KEY1: VALUE1\n",
|
|
},
|
|
{
|
|
name: "Multiple environment variables",
|
|
input: []models.SingleEnvironmentVariable{
|
|
{Key: "KEY1", Value: "VALUE1"},
|
|
{Key: "KEY2", Value: "VALUE2"},
|
|
{Key: "KEY3", Value: "VALUE3"},
|
|
},
|
|
expected: "KEY1: VALUE1\nKEY2: VALUE2\nKEY3: VALUE3\n",
|
|
},
|
|
{
|
|
name: "Overwriting duplicate keys",
|
|
input: []models.SingleEnvironmentVariable{
|
|
{Key: "KEY1", Value: "VALUE1"},
|
|
{Key: "KEY1", Value: "VALUE2"},
|
|
},
|
|
expected: "KEY1: VALUE2\n",
|
|
},
|
|
{
|
|
name: "Special characters in values",
|
|
input: []models.SingleEnvironmentVariable{
|
|
{Key: "KEY1", Value: "Value with spaces"},
|
|
{Key: "KEY2", Value: "Value:with:colons"},
|
|
{Key: "KEY3", Value: "Value\nwith\nnewlines"},
|
|
},
|
|
expected: "KEY1: Value with spaces\nKEY2: Value:with:colons\nKEY3: |-\n Value\n with\n newlines\n",
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
result, err := formatAsYaml(tt.input)
|
|
assert.NoError(t, err)
|
|
|
|
// Compare the result with the expected output
|
|
assert.Equal(t, tt.expected, result)
|
|
|
|
// Additionally, parse the result back into a map to ensure it's valid YAML
|
|
var resultMap map[string]string
|
|
err = yaml.Unmarshal([]byte(result), &resultMap)
|
|
assert.NoError(t, err)
|
|
|
|
// Create an expected map from the input
|
|
expectedMap := make(map[string]string)
|
|
for _, env := range tt.input {
|
|
expectedMap[env.Key] = env.Value
|
|
}
|
|
|
|
assert.Equal(t, expectedMap, resultMap)
|
|
})
|
|
}
|
|
}
|