//go:build detectors // +build detectors package detectors import ( "testing" regexp "github.com/wasilibs/go-re2" ) func TestPrefixRegex(t *testing.T) { tests := []struct { keywords []string expected string }{ { keywords: []string{"securitytrails"}, expected: `(?i)(?:securitytrails)(?:.|[\n\r]){0,40}`, }, { keywords: []string{"zipbooks"}, expected: `(?i)(?:zipbooks)(?:.|[\n\r]){0,40}`, }, { keywords: []string{"wrike"}, expected: `(?i)(?:wrike)(?:.|[\n\r]){0,40}`, }, } for _, tt := range tests { got := PrefixRegex(tt.keywords) if got != tt.expected { t.Errorf("PrefixRegex(%v) got: %v want: %v", tt.keywords, got, tt.expected) } } } func TestPrefixRegexKeywords(t *testing.T) { keywords := []string{"keyword1", "keyword2", "keyword3"} testCases := []struct { input string expected bool }{ {"keyword1 1234c4aabceeff4444442131444aab44", true}, {"keyword1 1234567890ABCDEF1234567890ABBBCA", false}, {"KEYWORD1 1234567890abcdef1234567890ababcd", true}, {"KEYWORD1 1234567890ABCDEF1234567890ABdaba", false}, {"keyword2 1234567890abcdef1234567890abeeff", true}, {"keyword2 1234567890ABCDEF1234567890ABadbd", false}, {"KEYWORD2 1234567890abcdef1234567890ababca", true}, {"KEYWORD2 1234567890ABCDEF1234567890ABBBBs", false}, {"keyword3 1234567890abcdef1234567890abccea", true}, {"KEYWORD3 1234567890abcdef1234567890abaabb", true}, {"keyword4 1234567890abcdef1234567890abzzzz", false}, {"keyword3 1234567890ABCDEF1234567890AB", false}, {"keyword4 1234567890ABCDEF1234567890AB", false}, } keyPat := regexp.MustCompile(PrefixRegex(keywords) + `\b([0-9a-f]{32})\b`) for _, tc := range testCases { match := keyPat.MatchString(tc.input) if match != tc.expected { t.Errorf("Input: %s, Expected: %v, Got: %v", tc.input, tc.expected, match) } } } func BenchmarkPrefixRegex(b *testing.B) { kws := []string{"securitytrails"} for i := 0; i < b.N; i++ { PrefixRegex(kws) } }