All checks were successful
continuous-integration/drone/push Build is passing
since we need special chars in passwords for a recipe we are working on, i have added the option to specify a charset in the same way as the length can be setted. i did not change anything in the behaviour, so if length is not specified, the charset gets ignored whether it is there or not. you can specify the following: `charset=default` - Results in passgen.AlphabetDefault being used `charset=special` - Results in passgen.AlphabetSpecial being used `charset=safespecial` - Results in `!@#%^&*_-+=` being used (so it is AlphabetSpecial without the dollar sign) `charset=default,special` or `charset=special,default` - Results in passgen.AlphabetDefault + passgen.AlphabetSpecial being used `charset=default,safespecial` or `charset=safespecial,default` - Results in passgen.AlphabetDefault + `!@#%^&*_-+=` being used ((so it is AlphabetSpecial without the dollar sign) PR for the docs: toolshed/docs.coopcloud.tech#271 Co-authored-by: p4u1 <p4u1@noreply.git.coopcloud.tech> Reviewed-on: #521 Reviewed-by: p4u1 <p4u1@noreply.git.coopcloud.tech> Co-authored-by: Apfelwurm <Alexander@volzit.de> Co-committed-by: Apfelwurm <Alexander@volzit.de>
61 lines
3.1 KiB
Go
61 lines
3.1 KiB
Go
package secret
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestReadSecretsConfig(t *testing.T) {
|
|
composeFiles := []string{"./testdir/compose.yaml"}
|
|
secretsFromConfig, err := ReadSecretsConfig("./testdir/.env.sample", composeFiles, "test_example_com")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
// Simple secret
|
|
assert.Equal(t, "test_example_com_test_pass_one_v2", secretsFromConfig["test_pass_one"].RemoteName)
|
|
assert.Equal(t, "v2", secretsFromConfig["test_pass_one"].Version)
|
|
assert.Equal(t, 0, secretsFromConfig["test_pass_one"].Length)
|
|
assert.Equal(t, "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789", secretsFromConfig["test_pass_one"].Charset)
|
|
|
|
// Has a length modifier
|
|
assert.Equal(t, "test_example_com_test_pass_two_v1", secretsFromConfig["test_pass_two"].RemoteName)
|
|
assert.Equal(t, "v1", secretsFromConfig["test_pass_two"].Version)
|
|
assert.Equal(t, 10, secretsFromConfig["test_pass_two"].Length)
|
|
assert.Equal(t, "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789", secretsFromConfig["test_pass_two"].Charset)
|
|
|
|
// Secret name does not include the secret id
|
|
assert.Equal(t, "test_example_com_pass_three_v2", secretsFromConfig["test_pass_three"].RemoteName)
|
|
assert.Equal(t, "v2", secretsFromConfig["test_pass_three"].Version)
|
|
assert.Equal(t, 0, secretsFromConfig["test_pass_three"].Length)
|
|
assert.Equal(t, "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789", secretsFromConfig["test_pass_three"].Charset)
|
|
|
|
// Has a length modifier and a charset=default,safespecial modifier
|
|
assert.Equal(t, "test_example_com_test_pass_four_v1", secretsFromConfig["test_pass_four"].RemoteName)
|
|
assert.Equal(t, "v1", secretsFromConfig["test_pass_four"].Version)
|
|
assert.Equal(t, 12, secretsFromConfig["test_pass_four"].Length)
|
|
assert.Equal(t, "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789!@#%^&*_-+=", secretsFromConfig["test_pass_four"].Charset)
|
|
|
|
// Has a length modifier and a charset=default,special modifier
|
|
assert.Equal(t, "test_example_com_test_pass_five_v1", secretsFromConfig["test_pass_five"].RemoteName)
|
|
assert.Equal(t, "v1", secretsFromConfig["test_pass_five"].Version)
|
|
assert.Equal(t, 12, secretsFromConfig["test_pass_five"].Length)
|
|
assert.Equal(t, "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789!@#$%^&*_-+=", secretsFromConfig["test_pass_five"].Charset)
|
|
|
|
// Has only a charset=default,special modifier, which gets setted but ignored in the generation
|
|
assert.Equal(t, "test_example_com_test_pass_six_v1", secretsFromConfig["test_pass_six"].RemoteName)
|
|
assert.Equal(t, "v1", secretsFromConfig["test_pass_six"].Version)
|
|
assert.Equal(t, 0, secretsFromConfig["test_pass_six"].Length)
|
|
assert.Equal(t, "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789!@#$%^&*_-+=", secretsFromConfig["test_pass_six"].Charset)
|
|
}
|
|
|
|
func TestReadSecretsConfigWithLongDomain(t *testing.T) {
|
|
composeFiles := []string{"./testdir/compose.yaml"}
|
|
_, err := ReadSecretsConfig("./testdir/.env.sample", composeFiles, "should_break_on_forty_eight_char_stack_nameeeeee")
|
|
if err == nil {
|
|
t.Fatal("expected failure, stack name is too long")
|
|
}
|
|
assert.Contains(t, err.Error(), "is > 64 chars")
|
|
}
|