133 lines
3.6 KiB
Go
133 lines
3.6 KiB
Go
package matching
|
|
|
|
import (
|
|
"log"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/status-im/zxcvbn-go/match"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
//DateSepMatch("1991-09-11jibjab11.9.1991")
|
|
//[{date 16 25 . 9 11 1991} {date 0 10 - 9 11 1991}]
|
|
|
|
//TODO think about how to write this test. . .
|
|
//func TestDateSepMatch(t *testing.T) {
|
|
// matches := dateSepMatchHelper("1991-09-11jibjab11.9.1991")
|
|
//
|
|
// assert.Len(t, matches, 2, "Length should be 2")
|
|
//
|
|
// for _, match := range matches {
|
|
// if match.Separator == "." {
|
|
// assert.Equal(t, 16, match.I)
|
|
// assert.Equal(t, 25, match.J)
|
|
// assert.Equal(t, int64(9), match.Day)
|
|
// assert.Equal(t, int64(11), match.Month)
|
|
// assert.Equal(t, int64(1991), match.Year)
|
|
// } else {
|
|
// assert.Equal(t, 0, match.I)
|
|
// assert.Equal(t, 10, match.J)
|
|
// assert.Equal(t, int64(9), match.Day)
|
|
// assert.Equal(t, int64(11), match.Month)
|
|
// assert.Equal(t, int64(1991), match.Year)
|
|
// }
|
|
// }
|
|
//
|
|
//}
|
|
//
|
|
func TestRepeatMatch(t *testing.T) {
|
|
//aaaBbBb
|
|
matches := repeatMatch("aaabBbB")
|
|
|
|
assert.Len(t, matches, 2, "Lenght should be 2")
|
|
|
|
for _, match := range matches {
|
|
if strings.ToLower(match.DictionaryName) == "b" {
|
|
assert.Equal(t, 3, match.I)
|
|
assert.Equal(t, 6, match.J)
|
|
assert.Equal(t, "bBbB", match.Token)
|
|
assert.NotZero(t, match.Entropy, "Entropy should be set")
|
|
} else {
|
|
assert.Equal(t, 0, match.I)
|
|
assert.Equal(t, 2, match.J)
|
|
assert.Equal(t, "aaa", match.Token)
|
|
assert.NotZero(t, match.Entropy, "Entropy should be set")
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestSequenceMatch(t *testing.T) {
|
|
//abcdjibjacLMNOPjibjac1234 => abcd LMNOP 1234
|
|
|
|
matches := sequenceMatch("abcdjibjacLMNOPjibjac1234")
|
|
assert.Len(t, matches, 3, "Lenght should be 3")
|
|
|
|
for _, match := range matches {
|
|
if match.DictionaryName == "lower" {
|
|
assert.Equal(t, 0, match.I)
|
|
assert.Equal(t, 3, match.J)
|
|
assert.Equal(t, "abcd", match.Token)
|
|
assert.NotZero(t, match.Entropy, "Entropy should be set")
|
|
} else if match.DictionaryName == "upper" {
|
|
assert.Equal(t, 10, match.I)
|
|
assert.Equal(t, 14, match.J)
|
|
assert.Equal(t, "LMNOP", match.Token)
|
|
assert.NotZero(t, match.Entropy, "Entropy should be set")
|
|
} else if match.DictionaryName == "digits" {
|
|
assert.Equal(t, 21, match.I)
|
|
assert.Equal(t, 24, match.J)
|
|
assert.Equal(t, "1234", match.Token)
|
|
assert.NotZero(t, match.Entropy, "Entropy should be set")
|
|
} else {
|
|
assert.True(t, false, "Unknow dictionary")
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestSpatialMatchQwerty(t *testing.T) {
|
|
matches := spatialMatch("qwerty")
|
|
assert.Len(t, matches, 1, "Lenght should be 1")
|
|
assert.NotZero(t, matches[0].Entropy, "Entropy should be set")
|
|
|
|
matches = spatialMatch("asdf")
|
|
assert.Len(t, matches, 1, "Lenght should be 1")
|
|
assert.NotZero(t, matches[0].Entropy, "Entropy should be set")
|
|
|
|
}
|
|
|
|
func TestSpatialMatchDvorak(t *testing.T) {
|
|
matches := spatialMatch("aoeuidhtns")
|
|
assert.Len(t, matches, 1, "Lenght should be 1")
|
|
assert.NotZero(t, matches[0].Entropy, "Entropy should be set")
|
|
|
|
}
|
|
|
|
func TestDictionaryMatch(t *testing.T) {
|
|
var matches []match.Match
|
|
for _, dicMatcher := range dictionaryMatchers {
|
|
matchesTemp := dicMatcher.MatchingFunc("first")
|
|
matches = append(matches, matchesTemp...)
|
|
}
|
|
|
|
assert.Len(t, matches, 4, "Lenght should be 4")
|
|
for _, match := range matches {
|
|
assert.NotZero(t, match.Entropy, "Entropy should be set")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
func TestDateWithoutSepMatch(t *testing.T) {
|
|
matches := dateWithoutSepMatch("11091991")
|
|
assert.Len(t, matches, 1, "Lenght should be 1")
|
|
|
|
matches = dateWithoutSepMatch("20010911")
|
|
assert.Len(t, matches, 1, "Lenght should be 1")
|
|
log.Println(matches)
|
|
|
|
//matches := dateWithoutSepMatch("110991")
|
|
//assert.Len(t, matches, 21, "Lenght should be blarg")
|
|
}
|