Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class HTTPAuthValidator(object):
- MESSAGE = "Validating user: %s Password: %s for %s"
- def __init__(self, auth=None):
- self.session = Session()
- self.auth = auth or HTTPBasicAuth
- self.url = ""
- def validate(self, url, credentials):
- self.url = url
- p = Pool(cpu_count())
- sc = p.map(self, credentials)
- return [result for result in sc]
- def __call__(self, auth):
- username, password = auth
- info(self.MESSAGE % (username, password, self.url))
- result = self.session.get(self.url, auth=self.auth(username, password))
- if result.status_code == 200:
- return username, password
- auth_validators = (
- ("Tomcat", HTTPAuthValidator),
- )
- def validator_factory(module):
- """
- Validator lookup
- :param module:
- :return: Instance of the validator
- """
- found = next(
- validator[1] for validator in auth_validators if validator[0] == module)
- return found()
- class TestValidators(unittest.TestCase):
- @patch.object(Session, "send")
- def test_auth_validator(self, mock_get):
- expected_text = "FAIL - Unknown command "
- mock_response = Mock()
- mock_response.text = expected_text
- mock_response.headers = [{"content-encoding": "text/plain"}]
- mock_response.status_code = 200
- mock_get.return_value = mock_response
- url = "http://127.0.0.1:8080/manager/"
- expected_tokens = "Basic %s" % b64encode(
- "%s:%s" % ("tomcat", "tomcat"))
- tomcat_validator = validator_factory("Tomcat")
- creds = [
- ("tomcat", "tomcat"),
- ("admin", "admin"),
- ("tomcat", "s3cret"),
- ]
- results = tomcat_validator.validate(url, creds)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement