def type5_pw(password, salt=None): if not HAS_PASSLIB: raise AnsibleFilterError( 'type5_pw filter requires PassLib library to be installed') if not isinstance(password, string_types): raise AnsibleFilterError( "type5_pw password input should be a string, but was given a input of %s" % (type(password).__name__)) salt_chars = ansible_password._gen_candidate_chars( ['ascii_letters', 'digits', './']) if salt is not None and not isinstance(salt, string_types): raise AnsibleFilterError( "type5_pw salt input should be a string, but was given a input of %s" % (type(salt).__name__)) elif not salt: salt = random_password(length=4, chars=salt_chars) elif not set(salt) <= set(salt_chars): raise AnsibleFilterError( "type5_pw salt used inproper characters, must be one of %s" % (salt_chars)) encrypted_password = md5_crypt.encrypt(password, salt=salt) return encrypted_password
def test_gen_password(self): for testcase in old_style_params_data: params = testcase['params'] candidate_chars = testcase['candidate_chars'] params_chars_spec = password._gen_candidate_chars(params['chars']) password_string = password._random_password(length=params['length'], chars=params_chars_spec) self.assertEquals(len(password_string), params['length'], msg='generated password=%s has length (%s) instead of expected length (%s)' % (password_string, len(password_string), params['length'])) for char in password_string: self.assertIn(char, candidate_chars, msg='%s not found in %s from chars spect %s' % (char, candidate_chars, params['chars']))
def test_gen_password(self): for testcase in old_style_params_data: params = testcase['params'] candidate_chars = testcase['candidate_chars'] params_chars_spec = password._gen_candidate_chars(params['chars']) password_string = password.random_password(length=params['length'], chars=params_chars_spec) self.assertEquals(len(password_string), params['length'], msg='generated password=%s has length (%s) instead of expected length (%s)' % (password_string, len(password_string), params['length'])) for char in password_string: self.assertIn(char, candidate_chars, msg='%s not found in %s from chars spect %s' % (char, candidate_chars, params['chars']))
def _assert_gen_candidate_chars(self, testcase): expected_candidate_chars = testcase['candidate_chars'] params = testcase['params'] chars_spec = params['chars'] res = password._gen_candidate_chars(chars_spec) self.assertEqual(res, expected_candidate_chars)
def _assert_gen_candidate_chars(self, testcase): expected_candidate_chars = testcase['candidate_chars'] params = testcase['params'] chars_spec = params['chars'] res = password._gen_candidate_chars(chars_spec) self.assertEquals(res, expected_candidate_chars)