def test_empty_configuration_returns_none(self): self.assertIsNone( db_validation.validate_credential( db_validation.CredentialCollection(username='******', password='******', mfa_token='031337'), db_models.Campaign())) self.assertIsNone( db_validation.validate_credential( db_validation.CredentialCollection(username=None, password=None, mfa_token=None), db_models.Campaign()))
def test_validation_methods(self): cred = db_validation.CredentialCollection(username='******', password=None, mfa_token=None) self.assertEqual( db_validation.validate_credential_fields(cred, self.campaign), db_validation.CredentialCollection(username=True, password=None, mfa_token=None)) self.assertTrue(db_validation.validate_credential(cred, self.campaign)) cred = db_validation.CredentialCollection(username='******', password=None, mfa_token=None) self.assertEqual( db_validation.validate_credential_fields(cred, self.campaign), db_validation.CredentialCollection(username=False, password=None, mfa_token=None)) self.assertFalse(db_validation.validate_credential( cred, self.campaign)) cred = db_validation.CredentialCollection(username='******', password=None, mfa_token=None) campaign = db_models.Campaign(credential_regex_username=r'a\S+', credential_regex_password=r'a\S+') self.assertEqual( db_validation.validate_credential_fields(cred, campaign), db_validation.CredentialCollection(username=True, password=False, mfa_token=None)) self.assertFalse(db_validation.validate_credential(cred, campaign))
def test_bad_regexs_are_skipped(self): self.assertEqual( db_validation.validate_credential_fields( db_validation.CredentialCollection(username='******', password=None, mfa_token=None), db_models.Campaign(credential_regex_username=r'\S+[')), db_validation.CredentialCollection(username=None, password=None, mfa_token=None))
def rpc_campaign_new(self, name): """ Create a new King Phisher campaign and initialize the database information. :param str name: The new campaign's name. :return: The ID of the new campaign. :rtype: int """ session = db_manager.Session() campaign = db_models.Campaign(name=name, user_id=self.basic_auth_user) session.add(campaign) session.commit() return campaign.id
def test_get_row_by_id(self): self._init_db() session = db_manager.Session() user = db_models.User(id='alice') session.add(user) campaign_name = random_string(10) campaign = db_models.Campaign(name=campaign_name, user_id=user.id) session.add(campaign) session.commit() self.assertIsNotNone(campaign.id) campaign_id = campaign.id del campaign row = db_manager.get_row_by_id(session, db_models.Campaign, campaign_id) self.assertEqual(row.id, campaign_id) self.assertEqual(row.name, campaign_name)
def rpc_campaign_new(handler, session, name, description=None): """ Create a new King Phisher campaign and initialize the database information. :param str name: The new campaign's name. :param str description: The new campaign's description. :return: The ID of the new campaign. :rtype: int """ if session.query(db_models.Campaign).filter_by(name=name).count(): raise ValueError('the specified campaign name already exists') campaign = db_models.Campaign(name=name, description=description, user_id=handler.rpc_session.user) campaign.assert_session_has_permissions('c', handler.rpc_session) session.add(campaign) session.commit() return campaign.id
class DatabaseValidateCredentialTests(testing.KingPhisherTestCase): campaign = db_models.Campaign(credential_regex_username=r'a\S+') def test_credential_collection_members(self): for field in db_validation.CredentialCollection._fields: self.assertHasAttribute(db_models.Credential, field) def test_empty_configuration_returns_none(self): self.assertIsNone( db_validation.validate_credential( db_validation.CredentialCollection(username='******', password='******', mfa_token='031337'), db_models.Campaign())) self.assertIsNone( db_validation.validate_credential( db_validation.CredentialCollection(username=None, password=None, mfa_token=None), db_models.Campaign())) def test_extra_fields_are_ignored(self): self.assertTrue( db_validation.validate_credential( db_validation.CredentialCollection(username='******', password='******', mfa_token=None), self.campaign)) self.assertTrue( db_validation.validate_credential( db_validation.CredentialCollection(username='******', password=None, mfa_token='031337'), self.campaign)) self.assertTrue( db_validation.validate_credential( db_validation.CredentialCollection(username='******', password='******', mfa_token='031337'), self.campaign)) def test_validation_methods(self): cred = db_validation.CredentialCollection(username='******', password=None, mfa_token=None) self.assertEqual( db_validation.validate_credential_fields(cred, self.campaign), db_validation.CredentialCollection(username=True, password=None, mfa_token=None)) self.assertTrue(db_validation.validate_credential(cred, self.campaign)) cred = db_validation.CredentialCollection(username='******', password=None, mfa_token=None) self.assertEqual( db_validation.validate_credential_fields(cred, self.campaign), db_validation.CredentialCollection(username=False, password=None, mfa_token=None)) self.assertFalse(db_validation.validate_credential( cred, self.campaign)) cred = db_validation.CredentialCollection(username='******', password=None, mfa_token=None) campaign = db_models.Campaign(credential_regex_username=r'a\S+', credential_regex_password=r'a\S+') self.assertEqual( db_validation.validate_credential_fields(cred, campaign), db_validation.CredentialCollection(username=True, password=False, mfa_token=None)) self.assertFalse(db_validation.validate_credential(cred, campaign)) def test_empty_fields_fail(self): self.assertEqual( db_validation.validate_credential_fields( db_validation.CredentialCollection(username='', password=None, mfa_token=None), self.campaign), db_validation.CredentialCollection(username=False, password=None, mfa_token=None)) def test_none_fields_fail(self): self.assertEqual( db_validation.validate_credential_fields( db_validation.CredentialCollection(username=None, password=None, mfa_token=None), self.campaign), db_validation.CredentialCollection(username=False, password=None, mfa_token=None)) def test_bad_regexs_are_skipped(self): self.assertEqual( db_validation.validate_credential_fields( db_validation.CredentialCollection(username='******', password=None, mfa_token=None), db_models.Campaign(credential_regex_username=r'\S+[')), db_validation.CredentialCollection(username=None, password=None, mfa_token=None))