37 lines
1.2 KiB
Go
37 lines
1.2 KiB
Go
package processor
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"testing"
|
||
|
|
"time"
|
||
|
|
|
||
|
|
"github.com/stretchr/testify/assert"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestCheckNewPin(t *testing.T) {
|
||
|
|
birth := time.Date(1990, 3, 14, 0, 0, 0, 0, time.UTC)
|
||
|
|
|
||
|
|
for _, ok := range []string{"482913", "019283", "135790", "112233"} {
|
||
|
|
assert.NoError(t, checkNewPin(ok, ok, &birth), ok)
|
||
|
|
}
|
||
|
|
for name, c := range map[string][2]string{
|
||
|
|
"too short": {"12345", "12345"},
|
||
|
|
"too long": {"1234567", "1234567"},
|
||
|
|
"not digits": {"12a456", "12a456"},
|
||
|
|
"confirmation": {"482913", "482914"},
|
||
|
|
"one digit": {"111111", "111111"},
|
||
|
|
"zeros": {"000000", "000000"},
|
||
|
|
"run up": {"123456", "123456"},
|
||
|
|
"run up from 4": {"456789", "456789"},
|
||
|
|
"run down": {"654321", "654321"},
|
||
|
|
"run down from 9": {"987654", "987654"},
|
||
|
|
"birth date DDMMYY": {"140390", "140390"},
|
||
|
|
"birth date YYMMDD": {"900314", "900314"},
|
||
|
|
} {
|
||
|
|
err := checkNewPin(c[0], c[1], &birth)
|
||
|
|
assert.ErrorIs(t, err, ErrInvalidPinInput, name)
|
||
|
|
assert.NotContains(t, err.Error(), c[0], "%s: the message must not echo the PIN", name)
|
||
|
|
}
|
||
|
|
// Without a birth date only the other rules apply.
|
||
|
|
assert.NoError(t, checkNewPin("140390", "140390", nil))
|
||
|
|
}
|