-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgenerator_test.go
53 lines (43 loc) · 1.46 KB
/
generator_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
package main
import (
"strings"
"testing"
)
func TestGenerator(t *testing.T) {
inputs := []*Generator{
NewGenerator(1024, true, false),
NewGenerator(15, false, true),
NewGenerator(30, true, false),
NewGenerator(30, false, true),
}
for _, gen := range inputs {
t.Run("Test generator", func(t *testing.T) {
password, err := gen.Generate()
if err != nil {
t.Errorf("expected no error, got %s", err)
}
containsSymbols := strings.ContainsAny(password, Symbols)
containsLowerCase := strings.ContainsAny(password, LowerLetters)
containsUpperCase := strings.ContainsAny(password, UpperLetters)
containsDigits := strings.ContainsAny(password, Digits)
if gen.Length != len(password) {
t.Errorf("wrong length. expected %d, got %d", gen.Length, len(password))
}
if gen.HasSymbols != containsSymbols {
t.Errorf("wrong password composition (symbols). expected %v, got %v", gen.HasSymbols, containsSymbols)
}
if !containsLowerCase {
t.Errorf("wrong password composition (lowercase letters). expected %v, got %v", true, containsLowerCase)
}
if !containsUpperCase {
t.Errorf("wrong password composition (uppercase letters). expected %v, got %v", true, containsUpperCase)
}
if !containsDigits {
t.Errorf("wrong password composition (digits). expected %v, got %v", true, containsDigits)
}
if gen.AttemptsTaken == 0 {
t.Errorf("wrong attemps taken. expected > 0, got %v", gen.AttemptsTaken)
}
})
}
}