diff --git a/src/passwordler/password_strength.py b/src/passwordler/password_strength.py index a8dea63..7ab3ade 100644 --- a/src/passwordler/password_strength.py +++ b/src/passwordler/password_strength.py @@ -15,20 +15,21 @@ def password_strength(password): Returns: str: a rating of either 'weak', 'good' or 'strong' """ + if not isinstance(password, str): + raise TypeError("'password' should be of type 'string'") + elif password == '': + raise ValueError("'password' cannot be an empty string") + count_uppercase = len(re.findall("[A-Z]", password)) count_numbers = len(re.findall('[0-9]', password)) - count_special_chars = len(re.findall('[!-\/:-@[-`{-~]', password)) + count_special_chars = len(re.findall('[!-/:-@\\[-`{-~]', password)) length = len(password) common_passwords = ['123456', 'password', '12345', '12345678', 'qwerty', '1234567890', '1234', 'baseball', 'dragon', 'football', '1234567', 'monkey', 'letmein', 'abc123', '111111', 'mustang', 'access', 'shadow', 'master', 'michael', 'superman', '696969', '123123', 'batman', 'trustno1'] - if not isinstance(password, str): - raise TypeError("'password' should be of type 'string'") - if password == '': - raise ValueError("'password' cannot be an empty string") - elif length >= 12 and count_uppercase >= 1 and count_numbers >= 1 and count_special_chars >= 1 and password not in common_passwords: + if length >= 12 and count_uppercase >= 1 and count_numbers >= 1 and count_special_chars >= 1 and password not in common_passwords: return 'Your password is: Strong' elif length >= 8 and (count_uppercase + count_numbers + count_special_chars) >= 2 and password not in common_passwords: return 'Your password is: Good'