Skip to content

Commit

Permalink
[Ninan] Fix bug where entries get recusively added to talisman ignore…
Browse files Browse the repository at this point in the history
… file
  • Loading branch information
leoOrion authored and svishwanath-tw committed Nov 8, 2019
1 parent 9dd588b commit 35e8f68
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 8 deletions.
27 changes: 19 additions & 8 deletions detector/detection_results.go
Original file line number Diff line number Diff line change
Expand Up @@ -307,16 +307,27 @@ func (r *DetectionResults) suggestTalismanRC(fs afero.Fs, ignoreFile string, fil
for _, filePath := range filePaths {
currentChecksum := utility.CollectiveSHA256Hash([]string{filePath})
fileIgnoreConfig := FileIgnoreConfig{filePath, currentChecksum, []string{}}
if promptContext.Interactive{
if confirm(fileIgnoreConfig, promptContext) {
entriesToAdd = append(entriesToAdd, fileIgnoreConfig)
}
addToTalismanIgnoreFile(entriesToAdd, fs, ignoreFile)
} else {
entriesToAdd = append(entriesToAdd, fileIgnoreConfig)
printTalismanIgnoreSuggestion(entriesToAdd)
entriesToAdd = append(entriesToAdd, fileIgnoreConfig)
}

if promptContext.Interactive {
confirmedEntries := getUserConfirmation(entriesToAdd, promptContext)
addToTalismanIgnoreFile(confirmedEntries, fs, ignoreFile)
} else {
printTalismanIgnoreSuggestion(entriesToAdd)
return
}

}

func getUserConfirmation(configs []FileIgnoreConfig, promptContext prompt.PromptContext) []FileIgnoreConfig {
confirmed := []FileIgnoreConfig{}
for _, config := range configs {
if confirm(config, promptContext) {
confirmed = append(confirmed, config)
}
}
return confirmed
}

func printTalismanIgnoreSuggestion(entriesToAdd []FileIgnoreConfig) {
Expand Down
28 changes: 28 additions & 0 deletions detector/detection_results_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,34 @@ scopeconfig: []
assert.Equal(t, expectedFileContent, string(bytesFromFile))
})

t.Run("when user confirms for multiple entries, they should be appended to given ignore file", func(t *testing.T) {
// Clearing file contents from previous tests
err := afero.WriteFile(fs, ignoreFile, []byte{}, 0666)
assert.NoError(t, err)

promptContext := prompt.NewPromptContext(true, prompter)
prompter.EXPECT().Confirm("Do you want to add this entry in talismanrc ?").Return(true).Times(2)

results.Fail("some_file.pem", "filecontent", "Bomb", []string{})
results.Fail("another.pem", "filecontent", "password", []string{})

expectedFileContent := `fileignoreconfig:
- filename: some_file.pem
checksum: 87139cc4d975333b25b6275f97680604add51b84eb8f4a3b9dcbbc652e6f27ac
ignore_detectors: []
- filename: another.pem
checksum: 117e23557c02cbd472854ebce4933d6daec1fd207971286f6ffc9f1774c1a83b
ignore_detectors: []
scopeconfig: []
`
results.Report(fs, ignoreFile, promptContext)
bytesFromFile, err := afero.ReadFile(fs, ignoreFile)

assert.NoError(t, err)
assert.Equal(t, expectedFileContent, string(bytesFromFile))
})


err = fs.Remove(ignoreFile)
assert.NoError(t, err)
}

0 comments on commit 35e8f68

Please sign in to comment.