mirror of
https://github.com/Luzifer/password.git
synced 2024-12-19 20:31:18 +00:00
[#6] Add optional separator to XKCD passwords
Squashed commit of the following: commit ef74c84e5b4826c2c58012cd4b0ea975d1dd7260 Author: Knut Ahlers <knut@ahlers.me> Date: Sun Dec 1 13:09:53 2019 +0100 Minor cleamup Signed-off-by: Knut Ahlers <knut@ahlers.me> commit 0b57aa8c8abb2fd118c71fdfd8d51cb707861821 Author: Knut Ahlers <knut@ahlers.me> Date: Sun Dec 1 13:09:17 2019 +0100 [#6] Add optional separator to XKCD passwords Signed-off-by: Knut Ahlers <knut@ahlers.me> Signed-off-by: Knut Ahlers <knut@ahlers.me>
This commit is contained in:
parent
3d83799a91
commit
aa39ad3413
4 changed files with 20 additions and 6 deletions
|
@ -9,6 +9,5 @@ commands:
|
|||
environment:
|
||||
CGO_ENABLED: 0
|
||||
GHUSER: Luzifer
|
||||
GO111MODULE: on
|
||||
PACKAGES: github.com/Luzifer/password/cmd/password
|
||||
REPO: password
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
language: go
|
||||
|
||||
go:
|
||||
- 1.10.x
|
||||
- 1.11.x
|
||||
- 1.12.x
|
||||
- 1.13.x
|
||||
- tip
|
||||
|
||||
install: go get -v github.com/Luzifer/password/lib
|
||||
|
|
|
@ -9,7 +9,10 @@ import (
|
|||
"github.com/Luzifer/go_helpers/v2/str"
|
||||
)
|
||||
|
||||
type XKCD struct{}
|
||||
type XKCD struct {
|
||||
// Separator to be used between words
|
||||
Separator string
|
||||
}
|
||||
|
||||
var (
|
||||
// ErrTooFewWords represents an error thrown if the password will
|
||||
|
@ -48,9 +51,8 @@ func (x XKCD) GeneratePassword(length int, addDate bool) (string, error) {
|
|||
continue
|
||||
}
|
||||
|
||||
password = password + word
|
||||
usedWords = append(usedWords, word)
|
||||
}
|
||||
|
||||
return password, nil
|
||||
return password + strings.Join(usedWords, x.Separator), nil
|
||||
}
|
||||
|
|
|
@ -37,6 +37,20 @@ func TestXKCDDatePrepend(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestXKCDSeparator(t *testing.T) {
|
||||
gen := NewXKCDGenerator()
|
||||
gen.Separator = "-"
|
||||
|
||||
pwd, err := gen.GeneratePassword(4, false)
|
||||
if err != nil {
|
||||
t.Fatalf("Generated had an error: %s", err)
|
||||
}
|
||||
|
||||
if !regexp.MustCompile(`^(?:[A-Z][a-z]+-){3}(?:[A-Z][a-z]+)$`).MatchString(pwd) {
|
||||
t.Errorf("Password %q did not match expected RegEx", pwd)
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkGeneratePasswords4Words(b *testing.B) {
|
||||
for i := 0; i < b.N; i++ {
|
||||
DefaultXKCD.GeneratePassword(4, false)
|
||||
|
|
Loading…
Reference in a new issue