refactor: Remove duplicate IsPasswordHashed from auth package
The config package has a more robust IsPasswordHashed function that handles truncated hashes. The auth package had a simpler duplicate that was only used in tests. Removed the duplicate and its test (already covered by config/config_utils_test.go). Reduces deadcode findings from 7 to 6.
This commit is contained in:
parent
512f2135f4
commit
ec6133afd8
2 changed files with 0 additions and 60 deletions
|
|
@ -204,59 +204,6 @@ func TestCheckPasswordHash(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestIsPasswordHashed(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
name string
|
|
||||||
input string
|
|
||||||
expected bool
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
name: "valid bcrypt hash",
|
|
||||||
input: "$2a$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/X4.qGAL0kcNWQKS5.",
|
|
||||||
expected: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "bcrypt 2b variant",
|
|
||||||
input: "$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/X4.qGAL0kcNWQKS5.",
|
|
||||||
expected: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "bcrypt 2y variant",
|
|
||||||
input: "$2y$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/X4.qGAL0kcNWQKS5.",
|
|
||||||
expected: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "plain password",
|
|
||||||
input: "mypassword",
|
|
||||||
expected: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "empty string",
|
|
||||||
input: "",
|
|
||||||
expected: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "wrong length",
|
|
||||||
input: "$2a$12$short",
|
|
||||||
expected: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "wrong prefix",
|
|
||||||
input: "$1a$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/X4.qGAL0kcNWQKS5.",
|
|
||||||
expected: false,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, tc := range tests {
|
|
||||||
t.Run(tc.name, func(t *testing.T) {
|
|
||||||
result := IsPasswordHashed(tc.input)
|
|
||||||
if result != tc.expected {
|
|
||||||
t.Errorf("IsPasswordHashed(%q) = %v, want %v", tc.input, result, tc.expected)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestValidatePasswordComplexity(t *testing.T) {
|
func TestValidatePasswordComplexity(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ package auth
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"golang.org/x/crypto/bcrypt"
|
"golang.org/x/crypto/bcrypt"
|
||||||
)
|
)
|
||||||
|
|
@ -32,12 +31,6 @@ func CheckPasswordHash(password, hash string) bool {
|
||||||
return err == nil
|
return err == nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsPasswordHashed checks if a string looks like a bcrypt hash
|
|
||||||
func IsPasswordHashed(password string) bool {
|
|
||||||
// Bcrypt hashes start with $2a$, $2b$, or $2y$ and are 60 characters long
|
|
||||||
return strings.HasPrefix(password, "$2") && len(password) == 60
|
|
||||||
}
|
|
||||||
|
|
||||||
// ValidatePasswordComplexity checks if a password meets complexity requirements
|
// ValidatePasswordComplexity checks if a password meets complexity requirements
|
||||||
func ValidatePasswordComplexity(password string) error {
|
func ValidatePasswordComplexity(password string) error {
|
||||||
if len(password) < MinPasswordLength {
|
if len(password) < MinPasswordLength {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue