# 🔒 auth-pass - Secure Password Validator  

**auth-pass** is a lightweight password validation utility that ensures strong security for password updates. It prevents weak passwords, ensures password uniqueness, and enforces strong validation rules.  

## 🚀 Features  
- **Ensures strong password security** (length, complexity, uniqueness)  
- **Prevents reusing the old password**  
- **Checks for common & weak passwords**  
- **Validates password confirmation**  
- **Levenshtein Distance algorithm to prevent similar passwords**  
- **Simple and lightweight**  

## 📦 Installation  
```sh  
npm install auth-pass  
```

## 🔍 Usage  
```javascript  
const validatePasswordUpdate = require("auth-pass");

const testCases = [  
  {
    description: "✅ Valid password update",  
    oldPassword: "OldPassword@123",  
    newPassword: "NewPassword@456",  
    confirmPassword: "NewPassword@456",  
  },  
  {
    description: "❌ Old password is empty",  
    oldPassword: "",  
    newPassword: "NewPassword@456",  
    confirmPassword: "NewPassword@456",  
  },  
  {
    description: "❌ New password is empty",  
    oldPassword: "OldPassword@123",  
    newPassword: "",  
    confirmPassword: "NewPassword@456",  
  },  
  {
    description: "❌ Confirm password is empty",  
    oldPassword: "OldPassword@123",  
    newPassword: "NewPassword@456",  
    confirmPassword: "",  
  },  
  {
    description: "❌ New password is same as old password",  
    oldPassword: "SamePassword@123",  
    newPassword: "SamePassword@123",  
    confirmPassword: "SamePassword@123",  
  },  
  {
    description: "❌ Confirm password does not match new password",  
    oldPassword: "OldPassword@123",  
    newPassword: "NewPassword@456",  
    confirmPassword: "WrongPassword@789",  
  },  
  {
    description: "❌ New password is too short (< 8 chars)",  
    oldPassword: "OldPassword@123",  
    newPassword: "Short1!",  
    confirmPassword: "Short1!",  
  },  
  {
    description: "❌ New password is too long (> 16 chars)",  
    oldPassword: "OldPassword@123",  
    newPassword: "VeryLongPassword@2024",  
    confirmPassword: "VeryLongPassword@2024",  
  },  
  {
    description: "❌ New password missing uppercase letter",  
    oldPassword: "OldPassword@123",  
    newPassword: "newpassword@123",  
    confirmPassword: "newpassword@123",  
  },  
  {
    description: "❌ New password missing lowercase letter",  
    oldPassword: "OldPassword@123",  
    newPassword: "NEWPASSWORD@123",  
    confirmPassword: "NEWPASSWORD@123",  
  },  
  {
    description: "❌ New password missing number",  
    oldPassword: "OldPassword@123",  
    newPassword: "NoNumber@Password",  
    confirmPassword: "NoNumber@Password",  
  },  
  {
    description: "❌ New password missing special character",  
    oldPassword: "OldPassword@123",  
    newPassword: "NoSpecial123",  
    confirmPassword: "NoSpecial123",  
  },  
];

testCases.forEach(({ description, oldPassword, newPassword, confirmPassword }) => {  
  const result = validatePasswordUpdate(oldPassword, newPassword, confirmPassword);  
  console.log(`${description}:`, result ? result : "✅ Passed!");  
});  

## 🧪 Validation Rules  
- **Old password is required**  
- **New password (8-16 chars, A-Z, a-z, 0-9, special char)**  
- **New password ≠ Old password**  
- **New password should not be too similar to the old password**  
- **New password should not be a common or weak password**  
- **Confirm password must match**  

## 🛠 Testing  
```sh  
npm test  
```

## 📜 License  
MIT License  

📌 **GitHub Repo**: [https://github.com/Twinkle49/auth-pass.git](https://github.com/Twinkle49/auth-pass.git)