Skip to content

Commit

Permalink
Merge pull request #892 from synfinatic/improve-tests
Browse files Browse the repository at this point in the history
fix bug removing an fileedit config block
  • Loading branch information
synfinatic authored Jun 12, 2024
2 parents 471d35d + bba7119 commit d2cf912
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 5 deletions.
9 changes: 5 additions & 4 deletions internal/utils/fileedit.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,11 +70,12 @@ func NewFileEdit(fileTemplate, ssoName string, vars interface{}) (*FileEdit, err
prefix := CONFIG_PREFIX
suffix := CONFIG_SUFFIX

if ssoName != "" && ssoName != DEFAULT_SSO_NAME {
prefix = fmt.Sprintf("%s_%s", CONFIG_PREFIX, ssoName)
suffix = fmt.Sprintf("%s_%s", CONFIG_SUFFIX, ssoName)
}

if fileTemplate != "" {
if ssoName != "" && ssoName != DEFAULT_SSO_NAME {
prefix = fmt.Sprintf("%s_%s", CONFIG_PREFIX, ssoName)
suffix = fmt.Sprintf("%s_%s", CONFIG_SUFFIX, ssoName)
}
t = fmt.Sprintf(FILE_TEMPLATE, prefix, fileTemplate, suffix)
}
templ, err := template.New("template").Parse(t)
Expand Down
46 changes: 45 additions & 1 deletion internal/utils/fileedit_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,12 @@ func TestFileEditInvalid(t *testing.T) {
}

func TestFileEdit(t *testing.T) {
// don't run parallel, modifies global state
var err error
var fe *FileEdit
var output bytes.Buffer

diffWriter = &output
diffWriter = &output // modify global
defer func() { diffWriter = os.Stdout }()

var vars = map[string]string{
Expand Down Expand Up @@ -104,6 +105,7 @@ func TestFileEdit(t *testing.T) {
}

func TestFileEditNoChange(t *testing.T) {
t.Parallel()
var err error
var fe *FileEdit

Expand All @@ -129,6 +131,48 @@ func TestFileEditNoChange(t *testing.T) {
assert.NoError(t, err)
assert.Empty(t, diff)
assert.False(t, changed)

// another config block should be added and the old one remain
vars["Test"] = "bar"
fe, err = NewFileEdit(template, "test2", vars)
assert.NoError(t, err)
changed, _, err = fe.UpdateConfig(false, true, tfile.Name())
assert.NoError(t, err)
assert.True(t, changed)
fileBytes, err := os.ReadFile(tfile.Name())
assert.NoError(t, err)
assert.Contains(t, string(fileBytes), "# BEGIN_AWS_SSO_CLI_test\n")
assert.Contains(t, string(fileBytes), "foo\n")
assert.Contains(t, string(fileBytes), "# BEGIN_AWS_SSO_CLI_test2\n")
assert.Contains(t, string(fileBytes), "bar\n")

// change the contents of the 1st config block, the 2nd should remain
vars["Test"] = "cow"
fe, err = NewFileEdit(template, "test", vars)
assert.NoError(t, err)
changed, _, err = fe.UpdateConfig(false, true, tfile.Name())
assert.NoError(t, err)
assert.True(t, changed)
fileBytes, err = os.ReadFile(tfile.Name())
assert.NoError(t, err)
assert.Contains(t, string(fileBytes), "# BEGIN_AWS_SSO_CLI_test\n")
assert.Contains(t, string(fileBytes), "cow\n")
assert.Contains(t, string(fileBytes), "# BEGIN_AWS_SSO_CLI_test2\n")
assert.Contains(t, string(fileBytes), "bar\n")

// remove the 1st config block, the 2nd should remain
fe, err = NewFileEdit("", "test", map[string]string{})
assert.NoError(t, err)
changed, diff, err = fe.UpdateConfig(false, true, tfile.Name())
assert.NoError(t, err)
assert.NotEmpty(t, diff)
assert.True(t, changed)
fileBytes, err = os.ReadFile(tfile.Name())
assert.NoError(t, err)
assert.NotContains(t, string(fileBytes), "# BEGIN_AWS_SSO_CLI_test\n")
assert.NotContains(t, string(fileBytes), "cow\n")
assert.Contains(t, string(fileBytes), "# BEGIN_AWS_SSO_CLI_test2\n")
assert.Contains(t, string(fileBytes), "bar\n")
}

func TestDiffBytes(t *testing.T) {
Expand Down

0 comments on commit d2cf912

Please sign in to comment.