211 lines
5.6 KiB
Go
211 lines
5.6 KiB
Go
|
package cryptext
|
||
|
|
||
|
import (
|
||
|
"gogs.mikescher.com/BlackForestBytes/goext/langext"
|
||
|
"gogs.mikescher.com/BlackForestBytes/goext/totpext"
|
||
|
"gogs.mikescher.com/BlackForestBytes/goext/tst"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestPassHash1(t *testing.T) {
|
||
|
ph, err := HashPassword("test123", nil)
|
||
|
tst.AssertNoErr(t, err)
|
||
|
|
||
|
tst.AssertTrue(t, ph.Valid())
|
||
|
tst.AssertFalse(t, ph.HasTOTP())
|
||
|
tst.AssertFalse(t, ph.NeedsPasswordUpgrade())
|
||
|
|
||
|
tst.AssertTrue(t, ph.Verify("test123", nil))
|
||
|
tst.AssertFalse(t, ph.Verify("test124", nil))
|
||
|
}
|
||
|
|
||
|
func TestPassHashTOTP(t *testing.T) {
|
||
|
sec, err := totpext.GenerateSecret()
|
||
|
tst.AssertNoErr(t, err)
|
||
|
|
||
|
ph, err := HashPassword("test123", sec)
|
||
|
tst.AssertNoErr(t, err)
|
||
|
|
||
|
tst.AssertTrue(t, ph.Valid())
|
||
|
tst.AssertTrue(t, ph.HasTOTP())
|
||
|
tst.AssertFalse(t, ph.NeedsPasswordUpgrade())
|
||
|
|
||
|
tst.AssertFalse(t, ph.Verify("test123", nil))
|
||
|
tst.AssertFalse(t, ph.Verify("test124", nil))
|
||
|
tst.AssertTrue(t, ph.Verify("test123", langext.Ptr(totpext.TOTP(sec))))
|
||
|
tst.AssertFalse(t, ph.Verify("test124", nil))
|
||
|
}
|
||
|
|
||
|
func TestPassHashUpgrade_V0(t *testing.T) {
|
||
|
ph, err := HashPasswordV0("test123")
|
||
|
tst.AssertNoErr(t, err)
|
||
|
|
||
|
tst.AssertTrue(t, ph.Valid())
|
||
|
tst.AssertFalse(t, ph.HasTOTP())
|
||
|
tst.AssertTrue(t, ph.NeedsPasswordUpgrade())
|
||
|
|
||
|
tst.AssertTrue(t, ph.Verify("test123", nil))
|
||
|
tst.AssertFalse(t, ph.Verify("test124", nil))
|
||
|
|
||
|
ph, err = ph.Upgrade("test123")
|
||
|
tst.AssertNoErr(t, err)
|
||
|
|
||
|
tst.AssertTrue(t, ph.Valid())
|
||
|
tst.AssertFalse(t, ph.HasTOTP())
|
||
|
tst.AssertFalse(t, ph.NeedsPasswordUpgrade())
|
||
|
|
||
|
tst.AssertTrue(t, ph.Verify("test123", nil))
|
||
|
tst.AssertFalse(t, ph.Verify("test124", nil))
|
||
|
|
||
|
}
|
||
|
|
||
|
func TestPassHashUpgrade_V1(t *testing.T) {
|
||
|
ph, err := HashPasswordV1("test123")
|
||
|
tst.AssertNoErr(t, err)
|
||
|
|
||
|
tst.AssertTrue(t, ph.Valid())
|
||
|
tst.AssertFalse(t, ph.HasTOTP())
|
||
|
tst.AssertTrue(t, ph.NeedsPasswordUpgrade())
|
||
|
|
||
|
tst.AssertTrue(t, ph.Verify("test123", nil))
|
||
|
tst.AssertFalse(t, ph.Verify("test124", nil))
|
||
|
|
||
|
ph, err = ph.Upgrade("test123")
|
||
|
tst.AssertNoErr(t, err)
|
||
|
|
||
|
tst.AssertTrue(t, ph.Valid())
|
||
|
tst.AssertFalse(t, ph.HasTOTP())
|
||
|
tst.AssertFalse(t, ph.NeedsPasswordUpgrade())
|
||
|
|
||
|
tst.AssertTrue(t, ph.Verify("test123", nil))
|
||
|
tst.AssertFalse(t, ph.Verify("test124", nil))
|
||
|
|
||
|
}
|
||
|
|
||
|
func TestPassHashUpgrade_V2(t *testing.T) {
|
||
|
ph, err := HashPasswordV2("test123")
|
||
|
tst.AssertNoErr(t, err)
|
||
|
|
||
|
tst.AssertTrue(t, ph.Valid())
|
||
|
tst.AssertFalse(t, ph.HasTOTP())
|
||
|
tst.AssertTrue(t, ph.NeedsPasswordUpgrade())
|
||
|
|
||
|
tst.AssertTrue(t, ph.Verify("test123", nil))
|
||
|
tst.AssertFalse(t, ph.Verify("test124", nil))
|
||
|
|
||
|
ph, err = ph.Upgrade("test123")
|
||
|
tst.AssertNoErr(t, err)
|
||
|
|
||
|
tst.AssertTrue(t, ph.Valid())
|
||
|
tst.AssertFalse(t, ph.HasTOTP())
|
||
|
tst.AssertFalse(t, ph.NeedsPasswordUpgrade())
|
||
|
|
||
|
tst.AssertTrue(t, ph.Verify("test123", nil))
|
||
|
tst.AssertFalse(t, ph.Verify("test124", nil))
|
||
|
|
||
|
}
|
||
|
|
||
|
func TestPassHashUpgrade_V3(t *testing.T) {
|
||
|
ph, err := HashPasswordV3("test123", nil)
|
||
|
tst.AssertNoErr(t, err)
|
||
|
|
||
|
tst.AssertTrue(t, ph.Valid())
|
||
|
tst.AssertFalse(t, ph.HasTOTP())
|
||
|
tst.AssertTrue(t, ph.NeedsPasswordUpgrade())
|
||
|
|
||
|
tst.AssertTrue(t, ph.Verify("test123", nil))
|
||
|
tst.AssertFalse(t, ph.Verify("test124", nil))
|
||
|
|
||
|
ph, err = ph.Upgrade("test123")
|
||
|
tst.AssertNoErr(t, err)
|
||
|
|
||
|
tst.AssertTrue(t, ph.Valid())
|
||
|
tst.AssertFalse(t, ph.HasTOTP())
|
||
|
tst.AssertFalse(t, ph.NeedsPasswordUpgrade())
|
||
|
|
||
|
tst.AssertTrue(t, ph.Verify("test123", nil))
|
||
|
tst.AssertFalse(t, ph.Verify("test124", nil))
|
||
|
|
||
|
}
|
||
|
|
||
|
func TestPassHashUpgrade_V3_TOTP(t *testing.T) {
|
||
|
sec, err := totpext.GenerateSecret()
|
||
|
tst.AssertNoErr(t, err)
|
||
|
|
||
|
ph, err := HashPasswordV3("test123", sec)
|
||
|
tst.AssertNoErr(t, err)
|
||
|
|
||
|
tst.AssertTrue(t, ph.Valid())
|
||
|
tst.AssertTrue(t, ph.HasTOTP())
|
||
|
tst.AssertTrue(t, ph.NeedsPasswordUpgrade())
|
||
|
|
||
|
tst.AssertFalse(t, ph.Verify("test123", nil))
|
||
|
tst.AssertFalse(t, ph.Verify("test124", nil))
|
||
|
tst.AssertTrue(t, ph.Verify("test123", langext.Ptr(totpext.TOTP(sec))))
|
||
|
tst.AssertFalse(t, ph.Verify("test124", nil))
|
||
|
|
||
|
ph, err = ph.Upgrade("test123")
|
||
|
tst.AssertNoErr(t, err)
|
||
|
|
||
|
tst.AssertTrue(t, ph.Valid())
|
||
|
tst.AssertTrue(t, ph.HasTOTP())
|
||
|
tst.AssertFalse(t, ph.NeedsPasswordUpgrade())
|
||
|
|
||
|
tst.AssertFalse(t, ph.Verify("test123", nil))
|
||
|
tst.AssertFalse(t, ph.Verify("test124", nil))
|
||
|
tst.AssertTrue(t, ph.Verify("test123", langext.Ptr(totpext.TOTP(sec))))
|
||
|
tst.AssertFalse(t, ph.Verify("test124", nil))
|
||
|
}
|
||
|
|
||
|
func TestPassHashUpgrade_V4(t *testing.T) {
|
||
|
ph, err := HashPasswordV4("test123", nil)
|
||
|
tst.AssertNoErr(t, err)
|
||
|
|
||
|
tst.AssertTrue(t, ph.Valid())
|
||
|
tst.AssertFalse(t, ph.HasTOTP())
|
||
|
tst.AssertTrue(t, ph.NeedsPasswordUpgrade())
|
||
|
|
||
|
tst.AssertTrue(t, ph.Verify("test123", nil))
|
||
|
tst.AssertFalse(t, ph.Verify("test124", nil))
|
||
|
|
||
|
ph, err = ph.Upgrade("test123")
|
||
|
tst.AssertNoErr(t, err)
|
||
|
|
||
|
tst.AssertTrue(t, ph.Valid())
|
||
|
tst.AssertFalse(t, ph.HasTOTP())
|
||
|
tst.AssertFalse(t, ph.NeedsPasswordUpgrade())
|
||
|
|
||
|
tst.AssertTrue(t, ph.Verify("test123", nil))
|
||
|
tst.AssertFalse(t, ph.Verify("test124", nil))
|
||
|
|
||
|
}
|
||
|
|
||
|
func TestPassHashUpgrade_V4_TOTP(t *testing.T) {
|
||
|
sec, err := totpext.GenerateSecret()
|
||
|
tst.AssertNoErr(t, err)
|
||
|
|
||
|
ph, err := HashPasswordV4("test123", sec)
|
||
|
tst.AssertNoErr(t, err)
|
||
|
|
||
|
tst.AssertTrue(t, ph.Valid())
|
||
|
tst.AssertTrue(t, ph.HasTOTP())
|
||
|
tst.AssertTrue(t, ph.NeedsPasswordUpgrade())
|
||
|
|
||
|
tst.AssertFalse(t, ph.Verify("test123", nil))
|
||
|
tst.AssertFalse(t, ph.Verify("test124", nil))
|
||
|
tst.AssertTrue(t, ph.Verify("test123", langext.Ptr(totpext.TOTP(sec))))
|
||
|
tst.AssertFalse(t, ph.Verify("test124", nil))
|
||
|
|
||
|
ph, err = ph.Upgrade("test123")
|
||
|
tst.AssertNoErr(t, err)
|
||
|
|
||
|
tst.AssertTrue(t, ph.Valid())
|
||
|
tst.AssertTrue(t, ph.HasTOTP())
|
||
|
tst.AssertFalse(t, ph.NeedsPasswordUpgrade())
|
||
|
|
||
|
tst.AssertFalse(t, ph.Verify("test123", nil))
|
||
|
tst.AssertFalse(t, ph.Verify("test124", nil))
|
||
|
tst.AssertTrue(t, ph.Verify("test123", langext.Ptr(totpext.TOTP(sec))))
|
||
|
tst.AssertFalse(t, ph.Verify("test124", nil))
|
||
|
}
|