コード例 #1
0
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
コード例 #2
0
    def test_uppercases_deve_retornar_numero_de_letras_maiusculas(self):
        passwd = '123JoNaS'

        additions = Additions(passwd)

        self.assertEqual(additions.uppercases(), 3)