mirror of
https://github.com/trufflesecurity/trufflehog.git
synced 2024-11-14 00:47:21 +00:00
f52946b996
* init * add detector type * rotate leaked credentials * tighten up username pattern * isolated prefixregex as overrriding new line stuff * passwordPat working now * add username test * fix edge case * cleanup * make linter happy * make linter happy rd 2 * skip error logging * fix test * add password regex helper func * make test more robust * cleanup PR * remove comments * clarify prepend rationale
59 lines
1.9 KiB
Go
59 lines
1.9 KiB
Go
package common
|
|
|
|
import (
|
|
"github.com/stretchr/testify/assert"
|
|
"regexp"
|
|
"testing"
|
|
)
|
|
|
|
const (
|
|
usernamePattern = `?()/\+=\s\n`
|
|
passwordPattern = `^<>;.*&|£\n\s`
|
|
usernameRegex = `(?im)(?:user|usr)\S{0,40}?[:=\s]{1,3}[ '"=]{0,1}([^:?()/\+=\s\n]{4,40})\b`
|
|
passwordRegex = `(?im)(?:pass|password)\S{0,40}?[:=\s]{1,3}[ '"=]{0,1}([^:^<>;.*&|£\n\s]{4,40})`
|
|
)
|
|
|
|
func TestUsernameRegexCheck(t *testing.T) {
|
|
usernameRegexPat := UsernameRegexCheck(usernamePattern)
|
|
|
|
expectedRegexPattern := regexp.MustCompile(usernameRegex)
|
|
|
|
if usernameRegexPat.compiledRegex.String() != expectedRegexPattern.String() {
|
|
t.Errorf("\n got %v \n want %v", usernameRegexPat.compiledRegex, expectedRegexPattern)
|
|
}
|
|
|
|
testString := `username = "johnsmith123"
|
|
username='johnsmith123'
|
|
username:="johnsmith123"
|
|
username = johnsmith123
|
|
username=johnsmith123`
|
|
|
|
expectedStr := []string{"johnsmith123", "johnsmith123", "johnsmith123", "johnsmith123", "johnsmith123"}
|
|
|
|
usernameRegexMatches := usernameRegexPat.Matches([]byte(testString))
|
|
|
|
assert.Exactly(t, usernameRegexMatches, expectedStr)
|
|
|
|
}
|
|
|
|
func TestPasswordRegexCheck(t *testing.T) {
|
|
passwordRegexPat := PasswordRegexCheck(passwordPattern)
|
|
|
|
expectedRegexPattern := regexp.MustCompile(passwordRegex)
|
|
assert.Equal(t, passwordRegexPat.compiledRegex, expectedRegexPattern)
|
|
|
|
testString := `password = "johnsmith123$!"
|
|
password='johnsmith123$!'
|
|
password:="johnsmith123$!"
|
|
password = johnsmith123$!
|
|
password=johnsmith123$!
|
|
PasswordAuthenticator(username, "johnsmith123$!")`
|
|
|
|
expectedStr := []string{"johnsmith123$!", "johnsmith123$!", "johnsmith123$!", "johnsmith123$!", "johnsmith123$!",
|
|
"johnsmith123$!"}
|
|
|
|
passwordRegexMatches := passwordRegexPat.Matches([]byte(testString))
|
|
|
|
assert.Exactly(t, passwordRegexMatches, expectedStr)
|
|
|
|
}
|