-
Notifications
You must be signed in to change notification settings - Fork 0
/
diceware_test.go
91 lines (82 loc) · 2.06 KB
/
diceware_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package diceware_test
import (
"strings"
"testing"
"github.com/everlastingbeta/diceware"
"github.com/everlastingbeta/diceware/wordlist"
"github.com/stretchr/testify/assert"
)
func TestRollWords(t *testing.T) {
assert := assert.New(t)
validWordlistMap := wordlist.NewMap(
1,
3,
map[int]string{
1: "test",
2: "testing",
3: "tests",
})
inValidWordlistMap := wordlist.NewMap(
2,
3,
map[int]string{
1: "test",
2: "testing",
3: "tests",
})
tests := []struct {
Name string
EnhanceEntropy bool
Error error
Separator string
WordCount int
Wordlist diceware.Wordlist
}{
{
Name: "Rolling several words with a nil wordlist",
Error: diceware.ErrInvalidWordlist,
Separator: ":",
WordCount: 6,
}, {
Name: "Rolling several words with a custom invalid wordlist",
Error: diceware.ErrInvalidWordFetched,
Separator: " ",
WordCount: 5,
Wordlist: inValidWordlistMap,
}, {
Name: "Rolling several words with a custom valid wordlist",
Separator: " ",
WordCount: 5,
Wordlist: validWordlistMap,
}, {
Name: "Rolling several words with the original wordlist",
Separator: "_",
WordCount: 8,
Wordlist: wordlist.Original,
}, {
Name: "Rolling several words with the EFF long wordlist",
Separator: ":",
WordCount: 6,
Wordlist: wordlist.EFFLong,
}, {
Name: "Rolling several words with the EFF long wordlist with enhanced entropy",
EnhanceEntropy: true,
Separator: "-",
WordCount: 6,
Wordlist: wordlist.EFFLong,
},
}
for _, test := range tests {
passphrase, err := diceware.RollWords(test.WordCount, test.Separator, test.Wordlist, test.EnhanceEntropy)
if test.Error != nil {
// verifying that we can hit the two user defined errors in the library
assert.Error(err)
continue
}
if assert.NoError(err, test.Name) {
assert.NotEmpty(passphrase, test.Name)
split := strings.Split(passphrase, test.Separator)
assert.Equal(test.WordCount, len(split), test.Name)
}
}
}