password_test.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package utils
  2. import (
  3. "testing"
  4. "golang.org/x/crypto/bcrypt"
  5. )
  6. func TestVerifyPasswordMD5(t *testing.T) {
  7. hash := Md5("secret" + "rustdesk-api")
  8. ok, newHash, err := VerifyPassword(hash, "secret")
  9. if err != nil {
  10. t.Fatalf("md5 verify failed: %v", err)
  11. }
  12. if !ok || newHash == "" {
  13. t.Fatalf("md5 migration failed")
  14. }
  15. if bcrypt.CompareHashAndPassword([]byte(newHash), []byte("secret")) != nil {
  16. t.Fatalf("invalid rehash")
  17. }
  18. }
  19. func TestVerifyPasswordBcrypt(t *testing.T) {
  20. b, _ := bcrypt.GenerateFromPassword([]byte("pass"), bcrypt.DefaultCost)
  21. ok, newHash, err := VerifyPassword(string(b), "pass")
  22. if err != nil || !ok || newHash != "" {
  23. t.Fatalf("bcrypt verify failed")
  24. }
  25. }
  26. func TestVerifyPasswordMigrate(t *testing.T) {
  27. md5hash := Md5("mypass" + "rustdesk-api")
  28. ok, newHash, err := VerifyPassword(md5hash, "mypass")
  29. if err != nil || !ok || newHash == "" {
  30. t.Fatalf("expected bcrypt rehash")
  31. }
  32. if bcrypt.CompareHashAndPassword([]byte(newHash), []byte("mypass")) != nil {
  33. t.Fatalf("rehash not valid bcrypt")
  34. }
  35. }