def test_score_deduction_sequential_symbols(self): passwd = 'Jonas)!@Antunes$(' Deductions(passwd) score = Score(passwd) assert score.score_deduct_sequential_symbols() == 3
def test_score_deduction_sequential_letters(self): passwd = 'JonabcAntuneshij' Deductions(passwd) score = Score(passwd) assert score.score_deduct_sequential_letters() == 6
def test_score_deduction_sequential_numbers(self): passwd = 'Jonas123Antunes23678' Deductions(passwd) score = Score(passwd) assert score.score_deduct_sequential_numbers() == 6
def test_score_deduction_consecutive_numbers(self): passwd = 'Jonas1Antunes45' Deductions(passwd) score = Score(passwd) assert score.score_deduct_consecutive_numbers() == 2
def test_score_deduction_consecutives_lowercases(self): passwd = 'jonasANT234' Deductions(passwd) score = Score(passwd) assert score.score_deduct_consecutives_lowercases() == 8
def test_score_deduct_consecutives_uppercases(self): passwd = 'JonasANtunes' Deductions(passwd) score = Score(passwd) assert score.score_deduct_consecutives_uppercases() == 2
def test_score_deduct_numbers_only(self): passwd = '143475' Deductions(passwd) score = Score(passwd) assert score.score_deduct_numbers_only() == 6
def test_score_deduct_letters_only(self): passwd = 'jonasantunes' Deductions(passwd) score = Score(passwd) assert score.score_deduct_letters_only() == 12
def test_complexity_of_password_very_strong(self): passwd = 'Jo4/An9T-u' Deductions(passwd) Additions(passwd) score = Score(passwd) assert score.complexity() == '\033[1;32mVery Strong\033[m'
def test_complexity_of_password_good(self): passwd = 'Jo4/' Deductions(passwd) Additions(passwd) score = Score(passwd) assert score.complexity() == '\033[1;34mGood\033[m'
def test_complexity_of_password_weak(self): passwd = 'Jo4' Deductions(passwd) Additions(passwd) score = Score(passwd) assert score.complexity() == '\033[1;33mWeak\033[m'
def test_complexity_of_password_too_short(self): passwd = '' Deductions(passwd) Additions(passwd) score = Score(passwd) assert score.complexity() == '\033[1;31mToo Short\033[m'
def test_sequential_letters_retorna_numero_de_sequencias_alfabeticas_agrupadas_por_tres_caracteres(self): passwd = 'Jonasabcjgfjkl' deductions = Deductions(passwd) assert deductions.sequential_letters() == 2
def test_sequential_numbers_retorna_numero_de_sequencias_numericas_ate_dez_agrupadas_por_tres(self): passwd = 'Jonas123ad12/456' deductions = Deductions(passwd) assert deductions.sequential_numbers() == 2
def test_letters_only_deve_retornar_numero_de_letras_se_todas_forem_letras(self): passwd = 'jonasantunes' deductions = Deductions(passwd) assert deductions.letters_only() == 12
def test_consecutive_numbers_retorna_vezes_de_numeros_digitados_consecutivamente(self): passwd = 'Jonas1a79' deductions = Deductions(passwd) assert deductions.consecutive_numbers() == 1
def test_consecutive_uppercase_deve_retornar_numero_de_letras_maiusculas_consecutivas(self): passwd = 'JonasANt32' deductions = Deductions(passwd) assert deductions.consecutive_uppercase_letters() == 1
def test_consecutive_lowercase_retorna_numero_de_letras_minusculas_consecuticvas(self): passwd = 'jonasAnt24' deductions = Deductions(passwd) assert deductions.consecutive_lower_letters() == 5
def test_numbers_only_retorna_zero_se_string_nao_for_toda_em_numbers(self): passwd = '12323af' deductions = Deductions(passwd) assert deductions.numbers_only() == 0
def test_numbers_only_retorna_numero_de_caracteres_se_todos_forem_numeros(self): passwd = '13343545' deductions = Deductions(passwd) assert deductions.numbers_only() == 8
def test_letters_only_retorna_zero_se_string_nao_for_toda_em_letras(self): passwd = 'jonas1antunes' deductions = Deductions(passwd) assert deductions.letters_only() == 0
def __init__(self, passwd): self.__passwd = passwd self.__deduction = Deductions(passwd) self.__addition = Additions(passwd) self.__score = 0
def test_sequential_symbols_retorna_numero_de_sequencias_de_symbolos_agrupados_por_tres(self): passwd = 'Jonas)!@ad$&' deductions = Deductions(passwd) assert deductions.sequential_symbols() == 1
import sys from app.requiriments.additions.addition import Additions from app.requiriments.deductions.deduction import Deductions from app.score.score import Score sys.path.append('C:/Users/jonas.antunes/Desktop/python/') print('-'*30, f'\033[1;31mVerificação de senha\033[m', '-'*30) senha = input('\033[1;33mDigite sua senha: \033[m') add = Additions(senha) deduct = Deductions(senha) score = Score(senha) print(f'Number of Characters: \033[1;32m+{score.score_add_number_of_characteres_passwd()}\033[m') print(f'Uppercase Letters: \033[1;32m+{score.score_add_uppercases()}\033[m') print(f'Lowercase Letter: \033[1;32m+{score.score_add_lowercases()}\033[m') print(f'Numbers: \033[1;32m+{score.score_add_numbers()}\033[m') print(f'Symbols: \033[1;32m+{score.score_add_symbols()}\033[m') print(f'Middle Numbers or Symbols: \033[1;32m+{score.score_add_middle_numbers_or_symbols()}\033[m') print(f'Requirements: \033[1;32m+{score.score_add_requeriments()}\033[m') print(f'Letter Only: \033[1;31m-{score.score_deduct_letters_only()}\033[m') print(f'Numbers Only: \033[1;31m-{score.score_deduct_numbers_only()}\033[m') print(f'Consecutive Uppercase Letters: \033[1;31m-{score.score_deduct_consecutives_uppercases()}\033[m') print(f'Consecutive Lowercase Letters: \033[1;31m-{score.score_deduct_consecutives_lowercases()}\033[m') print(f'Consecutive Numbers: \033[1;31m-{score.score_deduct_consecutive_numbers()}\033[m') print(f'Sequential Letters (+3): \033[1;31m-{score.score_deduct_sequential_letters()}\033[m') print(f'Sequential Numbers (+3): \033[1;31m-{score.score_deduct_sequential_numbers()}\033[m') print(f'Sequential Symbols (+3): \033[1;31m-{score.score_deduct_sequential_symbols()}\033[m') print(f'Score: \033[1;32m{score.get_score():.0f}%\033[m') print(f'Complexity: {score.complexity()}')
class Score: def __init__(self, passwd): self.__passwd = passwd self.__deduction = Deductions(passwd) self.__addition = Additions(passwd) self.__score = 0 def complexity(self): _complex = '' if len(self.__passwd) == 0: _complex = '\033[1;31mToo Short\033[m' elif self.get_score() < 20: _complex = '\033[1;31mVery Weak\033[m' elif self.get_score() < 40: _complex = '\033[1;33mWeak\033[m' elif self.get_score() < 60: _complex = '\033[1;34mGood\033[m' elif self.get_score() < 80: _complex = '\033[1;32mStrong\033[m' elif self.get_score() <= 100: _complex = '\033[1;32mVery Strong\033[m' return _complex def get_score(self): add = self.score_add_number_of_characteres_passwd( ) + self.score_add_lowercases() + self.score_add_uppercases( ) + self.score_add_numbers() + self.score_add_symbols( ) + self.score_add_middle_numbers_or_symbols( ) + self.score_add_requeriments() deduct = self.score_deduct_consecutive_numbers( ) + self.score_deduct_consecutives_lowercases( ) + self.score_deduct_consecutives_uppercases( ) + self.score_deduct_letters_only() + self.score_deduct_numbers_only( ) + self.score_deduct_sequential_letters( ) + self.score_deduct_sequential_numbers( ) + self.score_deduct_sequential_symbols() score = add - deduct if score > 100: score = 100 return score def score_add_number_of_characteres_passwd(self): score = self.__addition.number_of_charactere_passwd() * 4 return score def score_add_uppercases(self): if self.__addition.uppercases() != 0: score = (len(self.__passwd) - self.__addition.uppercases()) * 2 return score return 0 def score_add_lowercases(self): if self.__addition.lowercases() != 0: score = (len(self.__passwd) - self.__addition.lowercases()) * 2 return score return 0 def score_add_numbers(self): score = self.__addition.numbers() * 4 return score def score_add_symbols(self): score = self.__addition.symbols() * 6 return score def score_add_middle_numbers_or_symbols(self): score = self.__addition.middle_numbers_or_symbols() * 2 return score def score_add_requeriments(self): score = 0 if self.__addition.number_of_charactere_passwd() >= 8: if self.__addition.requirements() >= 4: score = self.__addition.requirements() * 2 return score def score_deduct_letters_only(self): score = self.__deduction.letters_only() return score def score_deduct_numbers_only(self): score = self.__deduction.numbers_only() return score def score_deduct_consecutives_uppercases(self): score = self.__deduction.consecutive_uppercase_letters() * 2 return score def score_deduct_consecutives_lowercases(self): score = self.__deduction.consecutive_lower_letters() * 2 return score def score_deduct_consecutive_numbers(self): score = self.__deduction.consecutive_numbers() * 2 return score def score_deduct_sequential_letters(self): score = self.__deduction.sequential_letters() * 3 return score def score_deduct_sequential_numbers(self): score = self.__deduction.sequential_numbers() * 3 return score def score_deduct_sequential_symbols(self): score = self.__deduction.sequential_symbols() * 3 return score