示例#1
0
 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()))
示例#2
0
    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))
示例#3
0
 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))
示例#4
0
    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
示例#5
0
	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)
示例#6
0
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
示例#7
0
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))