2015-10-05 19:56:21 +00:00
|
|
|
package matching
|
2016-01-13 22:02:53 +00:00
|
|
|
|
2015-10-05 19:56:21 +00:00
|
|
|
import (
|
2016-01-13 22:02:53 +00:00
|
|
|
"github.com/nbutton23/zxcvbn-go/Godeps/_workspace/src/github.com/stretchr/testify/assert"
|
2016-01-19 18:59:29 +00:00
|
|
|
"github.com/nbutton23/zxcvbn-go/match"
|
|
|
|
"strings"
|
2015-10-05 19:56:21 +00:00
|
|
|
"testing"
|
|
|
|
)
|
2016-01-13 22:02:53 +00:00
|
|
|
|
2015-10-05 19:56:21 +00:00
|
|
|
//DateSepMatch("1991-09-11jibjab11.9.1991")
|
2016-01-13 22:02:53 +00:00
|
|
|
//[{date 16 25 . 9 11 1991} {date 0 10 - 9 11 1991}]
|
2015-10-05 19:56:21 +00:00
|
|
|
|
2016-01-13 22:02:53 +00:00
|
|
|
func TestDateSepMatch(t *testing.T) {
|
2015-10-05 19:56:21 +00:00
|
|
|
matches := DateSepMatch("1991-09-11jibjab11.9.1991")
|
|
|
|
|
|
|
|
assert.Len(t, matches, 2, "Length should be 2")
|
|
|
|
|
|
|
|
for _, match := range matches {
|
2016-01-13 22:02:53 +00:00
|
|
|
if match.Separator == "." {
|
2015-10-05 19:56:21 +00:00
|
|
|
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)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-01-13 22:02:53 +00:00
|
|
|
}
|
2016-01-19 18:59:29 +00:00
|
|
|
|
|
|
|
func TestRepeatMatch(t *testing.T) {
|
|
|
|
//aaaBbBb
|
|
|
|
matches := RepeatMatch("aaabBbB")
|
|
|
|
|
|
|
|
assert.Len(t, matches, 2, "Lenght should be 2")
|
|
|
|
|
|
|
|
for _, match := range matches {
|
2016-01-21 22:26:33 +00:00
|
|
|
if strings.ToLower(match.DictionaryName) == "b" {
|
2016-01-19 18:59:29 +00:00
|
|
|
assert.Equal(t, 3, match.I)
|
|
|
|
assert.Equal(t, 6, match.J)
|
|
|
|
assert.Equal(t, "bBbB", match.Token)
|
2016-01-21 22:26:33 +00:00
|
|
|
assert.NotZero(t, match.Entropy, "Entropy should be set")
|
2016-01-19 18:59:29 +00:00
|
|
|
} else {
|
|
|
|
assert.Equal(t, 0, match.I)
|
|
|
|
assert.Equal(t, 2, match.J)
|
|
|
|
assert.Equal(t, "aaa", match.Token)
|
2016-01-21 22:26:33 +00:00
|
|
|
assert.NotZero(t, match.Entropy, "Entropy should be set")
|
|
|
|
|
2016-01-19 18:59:29 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestSequenceMatch(t *testing.T) {
|
|
|
|
//abcdjibjacLMNOPjibjac1234 => abcd LMNOP 1234
|
|
|
|
|
|
|
|
matches := SequenceMatch("abcdjibjacLMNOPjibjac1234")
|
|
|
|
assert.Len(t, matches, 3, "Lenght should be 2")
|
|
|
|
|
|
|
|
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)
|
2016-01-21 22:26:33 +00:00
|
|
|
assert.NotZero(t, match.Entropy, "Entropy should be set")
|
2016-01-19 18:59:29 +00:00
|
|
|
} else if match.DictionaryName == "upper" {
|
|
|
|
assert.Equal(t, 10, match.I)
|
|
|
|
assert.Equal(t, 14, match.J)
|
|
|
|
assert.Equal(t, "LMNOP", match.Token)
|
2016-01-21 22:26:33 +00:00
|
|
|
assert.NotZero(t, match.Entropy, "Entropy should be set")
|
2016-01-19 18:59:29 +00:00
|
|
|
} else if match.DictionaryName == "digits" {
|
|
|
|
assert.Equal(t, 21, match.I)
|
|
|
|
assert.Equal(t, 24, match.J)
|
|
|
|
assert.Equal(t, "1234", match.Token)
|
2016-01-21 22:26:33 +00:00
|
|
|
assert.NotZero(t, match.Entropy, "Entropy should be set")
|
2016-01-19 18:59:29 +00:00
|
|
|
} else {
|
|
|
|
assert.True(t, false, "Unknow dictionary")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestSpatialMatchQwerty(t *testing.T) {
|
|
|
|
matches := SpatialMatch("qwerty")
|
|
|
|
assert.Len(t, matches, 1, "Lenght should be 1")
|
2016-01-21 22:26:33 +00:00
|
|
|
assert.NotZero(t, matches[0].Entropy, "Entropy should be set")
|
2016-01-19 18:59:29 +00:00
|
|
|
|
|
|
|
matches = SpatialMatch("asdf")
|
|
|
|
assert.Len(t, matches, 1, "Lenght should be 1")
|
2016-01-21 22:26:33 +00:00
|
|
|
assert.NotZero(t, matches[0].Entropy, "Entropy should be set")
|
2016-01-19 18:59:29 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestSpatialMatchDvorak(t *testing.T) {
|
|
|
|
matches := SpatialMatch("aoeuidhtns")
|
|
|
|
assert.Len(t, matches, 1, "Lenght should be 1")
|
2016-01-21 22:26:33 +00:00
|
|
|
assert.NotZero(t, matches[0].Entropy, "Entropy should be set")
|
2016-01-19 18:59:29 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDictionaryMatch(t *testing.T) {
|
|
|
|
var matches []match.Match
|
|
|
|
for _, dicMatcher := range DICTIONARY_MATCHERS {
|
|
|
|
matchesTemp := dicMatcher("first")
|
|
|
|
matches = append(matches, matchesTemp...)
|
|
|
|
}
|
|
|
|
|
|
|
|
assert.Len(t, matches, 4, "Lenght should be 4")
|
2016-01-21 22:26:33 +00:00
|
|
|
for _, match := range matches {
|
|
|
|
assert.NotZero(t, match.Entropy, "Entropy should be set")
|
|
|
|
|
|
|
|
}
|
2016-01-19 18:59:29 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDateWithoutSepMatch(t *testing.T) {
|
|
|
|
matches := dateWithoutSepMatch("11091991")
|
|
|
|
assert.Len(t, matches, 1, "Lenght should be 1")
|
|
|
|
}
|