app-cloudep-member-server/pkg/usecase/password_utils_test.go

51 lines
1.3 KiB
Go
Raw Normal View History

2024-12-30 03:58:14 +00:00
package usecase
import (
"testing"
"github.com/stretchr/testify/assert"
"golang.org/x/crypto/bcrypt"
)
func TestHashPassword(t *testing.T) {
password := "securepassword123"
cost := bcrypt.DefaultCost
hashedPassword, err := HashPassword(password, cost)
assert.NoError(t, err, "生成哈希密碼應該成功")
assert.NotEmpty(t, hashedPassword, "生成的哈希密碼不應為空")
// 確認哈希密碼長度符合預期
assert.Greater(t, len(hashedPassword), 0, "哈希密碼長度應大於零")
}
func TestCheckPasswordHash(t *testing.T) {
password := "securepassword123"
cost := bcrypt.DefaultCost
// 生成哈希密碼
hashedPassword, err := HashPassword(password, cost)
assert.NoError(t, err)
// 驗證密碼與哈希是否匹配
assert.True(t, CheckPasswordHash(password, hashedPassword), "密碼應與哈希匹配")
// 測試不匹配的密碼
wrongPassword := "wrongpassword"
assert.False(t, CheckPasswordHash(wrongPassword, hashedPassword), "錯誤密碼不應與哈希匹配")
}
func TestGetHashingCost(t *testing.T) {
password := "securepassword123"
cost := bcrypt.DefaultCost
// 生成哈希密碼
hashedPassword, err := HashPassword(password, cost)
assert.NoError(t, err)
// 驗證哈希成本
actualCost := GetHashingCost([]byte(hashedPassword))
assert.Equal(t, cost, actualCost, "哈希成本應與生成時的一致")
}