Skip to content

Commit

Permalink
Add more tests
Browse files Browse the repository at this point in the history
Signed-off-by: James Pond <[email protected]>
  • Loading branch information
jamesponddotco committed Sep 15, 2023
1 parent 8a802c1 commit e17bd89
Show file tree
Hide file tree
Showing 4 changed files with 140 additions and 47 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

[![Go Documentation](https://godocs.io/git.sr.ht/~jamesponddotco/acopw-go?status.svg)](https://godocs.io/git.sr.ht/~jamesponddotco/acopw-go)
[![Go Report Card](https://goreportcard.com/badge/git.sr.ht/~jamesponddotco/acopw-go)](https://goreportcard.com/report/git.sr.ht/~jamesponddotco/acopw-go)
[![Coverage Report](https://img.shields.io/badge/coverage-98%25-brightgreen)](https://git.sr.ht/~jamesponddotco/acopw-go/tree/trunk/item/cover.out)
[![Coverage Report](https://img.shields.io/badge/coverage-100%25-brightgreen)](https://git.sr.ht/~jamesponddotco/acopw-go/tree/trunk/item/cover.out)
[![builds.sr.ht status](https://builds.sr.ht/~jamesponddotco/acopw-go.svg)](https://builds.sr.ht/~jamesponddotco/acopw-go?)

> **Note**: The underlying cryptographic implementations have not been
Expand Down
92 changes: 46 additions & 46 deletions cover.out
Original file line number Diff line number Diff line change
Expand Up @@ -18,52 +18,52 @@ git.sr.ht/~jamesponddotco/acopw-go/diceware.go:95.2,95.63 1 1
git.sr.ht/~jamesponddotco/acopw-go/diceware.go:99.39,100.19 1 1
git.sr.ht/~jamesponddotco/acopw-go/diceware.go:100.19,102.3 1 1
git.sr.ht/~jamesponddotco/acopw-go/diceware.go:104.2,104.20 1 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:29.42,30.18 1 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:30.18,32.3 1 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:34.2,43.16 3 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:43.16,45.3 1 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:47.2,47.32 1 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:47.32,49.19 2 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:49.19,51.18 2 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:51.18,53.5 1 0
git.sr.ht/~jamesponddotco/acopw-go/pin.go:55.4,55.22 1 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:58.3,58.40 1 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:61.2,61.40 1 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:65.34,66.19 1 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:66.19,68.3 1 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:70.2,70.20 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:57.45,58.18 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:58.18,60.3 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:62.2,62.66 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:62.66,67.3 4 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:69.2,70.19 2 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:70.19,72.3 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:74.2,82.16 3 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:82.16,84.3 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:86.2,86.32 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:86.32,89.20 2 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:89.20,91.18 2 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:91.18,93.5 1 0
git.sr.ht/~jamesponddotco/acopw-go/random.go:95.4,95.22 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:98.3,98.45 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:101.2,101.45 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:105.35,106.19 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:106.19,109.17 2 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:109.17,111.4 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:113.3,113.17 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:113.17,115.4 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:117.3,117.19 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:117.19,119.4 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:121.3,121.19 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:121.19,123.4 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:125.3,125.33 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:125.33,126.47 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:126.47,128.5 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:131.3,131.22 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:134.2,134.18 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:138.37,139.19 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:139.19,141.3 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:143.2,143.20 1 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:30.42,31.18 1 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:31.18,33.3 1 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:35.2,44.16 3 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:44.16,46.3 1 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:48.2,48.32 1 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:48.32,50.19 2 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:50.19,52.18 2 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:52.18,54.5 1 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:56.4,56.22 1 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:59.3,59.40 1 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:62.2,62.40 1 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:66.34,67.19 1 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:67.19,69.3 1 1
git.sr.ht/~jamesponddotco/acopw-go/pin.go:71.2,71.20 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:58.45,59.18 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:59.18,61.3 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:63.2,63.66 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:63.66,68.3 4 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:70.2,71.19 2 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:71.19,73.3 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:75.2,83.16 3 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:83.16,85.3 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:87.2,87.32 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:87.32,90.20 2 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:90.20,92.18 2 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:92.18,94.5 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:96.4,96.22 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:99.3,99.45 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:102.2,102.45 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:106.35,107.19 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:107.19,110.17 2 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:110.17,112.4 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:114.3,114.17 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:114.17,116.4 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:118.3,118.19 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:118.19,120.4 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:122.3,122.19 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:122.19,124.4 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:126.3,126.33 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:126.33,127.47 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:127.47,129.5 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:132.3,132.22 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:135.2,135.18 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:139.37,140.19 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:140.19,142.3 1 1
git.sr.ht/~jamesponddotco/acopw-go/random.go:144.2,144.20 1 1
git.sr.ht/~jamesponddotco/acopw-go/uuid.go:34.43,35.63 1 1
git.sr.ht/~jamesponddotco/acopw-go/uuid.go:35.63,37.3 1 1
git.sr.ht/~jamesponddotco/acopw-go/uuid.go:39.2,44.26 4 1
Expand Down
8 changes: 8 additions & 0 deletions pin_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,14 @@ func TestPIN_Generate(t *testing.T) {
},
expectedErr: acopw.ErrRandomPIN,
},
{
name: "SecondFailingReader",
pin: acopw.PIN{
Rand: &secondFailingReader{},
Length: acopw.DefaultRandomLength,
},
expectedErr: acopw.ErrRandomPIN,
},
}

for _, tt := range tests {
Expand Down
85 changes: 85 additions & 0 deletions random_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,20 @@ func (*failingReader) Read(_ []byte) (n int, err error) {
return 0, errors.New("forced read failure")
}

type secondFailingReader struct {
readCount int
}

func (r *secondFailingReader) Read(p []byte) (n int, err error) {
if r.readCount == 0 {
r.readCount++

return rand.Reader.Read(p)
}

return 0, errors.New("forced read failure on second call")
}

func TestRandom_Generate(t *testing.T) {
t.Parallel()

Expand Down Expand Up @@ -48,6 +62,14 @@ func TestRandom_Generate(t *testing.T) {
},
expectedErr: acopw.ErrRandomPassword,
},
{
name: "SecondFailingReader",
random: &acopw.Random{
Rand: &secondFailingReader{},
Length: acopw.DefaultRandomLength,
},
expectedErr: acopw.ErrRandomPassword,
},
{
name: "InvalidCharset",
random: &acopw.Random{
Expand All @@ -74,6 +96,24 @@ func TestRandom_Generate(t *testing.T) {
return len(generated) == acopw.DefaultRandomLength
},
},
{
name: "HighLength",
random: &acopw.Random{
Length: 1024,
},
validate: func(generated string) bool {
return len(generated) == 1024
},
},
{
name: "LowLength",
random: &acopw.Random{
Length: 1,
},
validate: func(generated string) bool {
return len(generated) == 1
},
},
{
name: "UseLowerOnly",
random: &acopw.Random{
Expand All @@ -98,6 +138,51 @@ func TestRandom_Generate(t *testing.T) {
return strings.ToUpper(generated) == generated
},
},
{
name: "UseNumbersOnly",
random: &acopw.Random{
UseLower: false,
UseUpper: false,
UseNumbers: true,
UseSymbols: false,
},
validate: func(generated string) bool {
for _, char := range generated {
if !strings.ContainsRune(acopw.Numbers, char) {
return false
}
}

return true
},
},
{
name: "UseSymbolsOnly",
random: &acopw.Random{
UseLower: false,
UseUpper: false,
UseNumbers: false,
UseSymbols: true,
},
validate: func(generated string) bool {
for _, char := range generated {
if !strings.ContainsRune(acopw.Symbols, char) {
return false
}
}

return true
},
},
{
name: "ExcludeCharacter",
random: &acopw.Random{
ExcludedCharset: []string{"z"},
},
validate: func(generated string) bool {
return !strings.Contains(generated, "z")
},
},
}

for _, tt := range tests {
Expand Down

0 comments on commit e17bd89

Please sign in to comment.