Ejemplo n.º 1
0
    def _fill_event(self, event_type, trigger, trigger_id):
        """
        Here I'm testing only encrypted_tip because trigger a bigger
        amount of %KeyWords%
        """
        self.assertEqual(event_type, u'encrypted_tip')
        self.assertEqual(trigger, 'Tip')

        if event_type == u'encrypted_tip' and trigger == 'Tip':

            receiver_dict = yield admin.get_receiver(
                self.createdReceiver['id'])
            context_dict = yield admin.get_context(self.createdContext['id'])
            notif_dict = yield admin.get_notification()

            yield admin.import_memory_variables()
            node_dict = yield admin.admin_serialize_node()

            tip_dict = yield self.get_a_fucking_random_submission()

            self.event = Event(type=u'encrypted_tip',
                               trigger='Tip',
                               notification_settings=notif_dict,
                               node_info=node_dict,
                               receiver_info=receiver_dict,
                               context_info=context_dict,
                               plugin=None,
                               trigger_info=tip_dict,
                               trigger_parent=None)
Ejemplo n.º 2
0
    def test_bruteforce_login_protection(self):

        handler = self.request({
            'username': self.dummyReceiver_1['id'],
            'password': '******',
            'role': 'receiver'
        })

        sleep_list = []

        def fake_deferred_sleep(seconds):
            sleep_list.append(seconds)

        utility.deferred_sleep = fake_deferred_sleep

        failed_login = 7
        for i in xrange(0, failed_login):
            yield self.assertFailure(handler.post(), errors.InvalidAuthentication)

        receiver_status = yield admin.get_receiver(self.dummyReceiver_1['id'], 'en')

        self.assertEqual(GLSetting.failed_login_attempts, failed_login)

        # validate incremental delay
        self.assertTrue(len(sleep_list), failed_login)
        for i in xrange(1, len(sleep_list)):
            self.assertTrue(i <= sleep_list[i])
Ejemplo n.º 3
0
    def test_019_bruteforce_login_protection(self):

        handler = self.request({
            'username': self.dummyReceiverUser_1['username'],
            'password': '******',
            'role': 'receiver'
        })

        sleep_list = []

        def fake_deferred_sleep(seconds):
            sleep_list.append(seconds)

        utility.deferred_sleep = fake_deferred_sleep

        failed_login = 7
        for i in xrange(0, failed_login):
            try:
                failure = yield handler.post()
                print type(failure)
            except errors.InvalidAuthRequest:
                continue
            except Exception as excep:
                print excep, "Has been raised wrongly"
                self.assertTrue(False)

        receiver_status = yield admin.get_receiver(self.dummyReceiver_1['id'])

        self.assertEqual(GLSetting.failed_login_attempts, failed_login)

        # validate incremental delay
        self.assertTrue(len(sleep_list), failed_login)
        for i in xrange(1, len(sleep_list)):
            self.assertTrue(i <= sleep_list[i])
Ejemplo n.º 4
0
    def _fill_event(self, event_type, trigger, trigger_id):
        """
        Here I'm testing only encrypted_tip because trigger a bigger
        amount of %KeyWords%
        """
        self.assertEqual(event_type, u'encrypted_tip')
        self.assertEqual(trigger, 'Tip')

        if event_type == u'encrypted_tip' and trigger == 'Tip':

            receiver_dict = yield admin.get_receiver(self.createdReceiver['id'])
            context_dict = yield admin.get_context(self.createdContext['id'])
            notif_dict = yield admin.get_notification()

            yield admin.import_memory_variables()
            node_dict = yield admin.admin_serialize_node()

            tip_dict = yield self.get_a_fucking_random_submission()

            self.event = Event(
                type = u'encrypted_tip',
                trigger = 'Tip',
                notification_settings = notif_dict,
                node_info = node_dict,
                receiver_info = receiver_dict,
                context_info = context_dict,
                plugin = None,
                trigger_info = tip_dict,
                trigger_parent = None
            )
Ejemplo n.º 5
0
    def _fill_event_dict(self, event_type, event_trigger):
        """
        A notification is based on the Node, Context and Receiver values,
        that has to be taken from the database.
        """
        receiver_dict = yield admin.get_receiver(self.createdReceiver['id'])
        context_dict = yield admin.get_context(self.createdContext['id'])
        steps_dict = yield admin.get_context_steps(self.createdContext['id'])
        notif_dict = yield admin.notification.get_notification()

        yield admin.import_memory_variables()
        node_dict = yield admin.admin_serialize_node()

        # is a mock 'trigger_info' and 'trigger_parent' at the moment
        self.tip['name'] = ' foo '
        self.tip['size'] = ' 123 '
        self.tip['content_type'] = ' application/javascript '
        self.tip['creation_date'] = context_dict['creation_date']
        self.tip['type'] = ' sorry maker '
        # this is requested in the file cases

        self.event = Event(type = event_type,
                           trigger = event_trigger,
                           notification_settings = notif_dict,
                           node_info = node_dict,
                           receiver_info = receiver_dict,
                           context_info = context_dict,
                steps_info = steps_dict,
                           plugin = None,
                           trigger_info = self.tip,
                           trigger_parent = self.tip )
Ejemplo n.º 6
0
    def _fill_event(self, type, trigger, trigger_id):

        if type == u'tip' and trigger == 'Tip':

            receiver_dict = yield admin.get_receiver(self.createdReceiver['receiver_gus'])
            context_dict = yield admin.get_context(self.createdContext['context_gus'])
            notif_dict = yield admin.get_notification()

            yield admin.import_memory_variables()
            node_dict = yield admin.get_node()

            self.event = Event(
                type = u'tip',
                trigger = 'Tip',
                notification_settings = notif_dict,
                node_info = node_dict,
                receiver_info = receiver_dict,
                context_info = context_dict,
                plugin = None,
                trigger_info = {
                   'id': trigger_id,
                   'creation_date': pretty_date_time(datetime_now())
                }
            )

        elif type == u'comment' and trigger == 'Comment':
            raise AssertionError("Not yet managed Mock comments")
        elif type == u'file' and trigger == 'File':
            raise AssertionError("Not yet managed Mock files")
        else:
            raise AssertionError("type and trigger maybe refactored, but you're using it bad")
Ejemplo n.º 7
0
    def test_bruteforce_login_protection(self):

        handler = self.request({
            'username': self.dummyReceiver_1['id'],
            'password': '******',
            'role': 'receiver'
        })

        sleep_list = []

        def fake_deferred_sleep(seconds):
            sleep_list.append(seconds)

        utility.deferred_sleep = fake_deferred_sleep

        failed_login = 7
        for i in xrange(0, failed_login):
            yield self.assertFailure(handler.post(),
                                     errors.InvalidAuthentication)

        receiver_status = yield admin.get_receiver(self.dummyReceiver_1['id'],
                                                   'en')

        self.assertEqual(GLSettings.failed_login_attempts, failed_login)

        # validate incremental delay
        self.assertTrue(len(sleep_list), failed_login)
        for i in xrange(1, len(sleep_list)):
            self.assertTrue(i <= sleep_list[i])
Ejemplo n.º 8
0
    def test_failed_login_counter(self):
        handler = self.request({
            'username': self.dummyReceiver_1['id'],
            'password': '******',
            'role': 'receiver'
        })

        failed_login = 5
        for i in xrange(0, failed_login):
            self.assertFailure(handler.post(), errors.InvalidAuthentication)

        receiver_status = yield admin.get_receiver(self.dummyReceiver_1['id'], 'en')
        self.assertEqual(GLSetting.failed_login_attempts, failed_login)
Ejemplo n.º 9
0
    def test_failed_login_counter(self):
        handler = self.request({
            'username': self.dummyReceiver_1['id'],
            'password': '******',
            'role': 'receiver'
        })

        failed_login = 5
        for i in xrange(0, failed_login):
            yield self.assertFailure(handler.post(),
                                     errors.InvalidAuthentication)

        receiver_status = yield admin.get_receiver(self.dummyReceiver_1['id'],
                                                   'en')
        self.assertEqual(GLSettings.failed_login_attempts, failed_login)
Ejemplo n.º 10
0
    def test_keywords_conversion(self):
        yield self.perform_full_submission_actions()

        self.receiver_dict = yield admin.get_receiver(
            self.dummyReceiver_1['id'], 'en')
        self.context_dict = yield admin.get_context(self.dummyContext['id'],
                                                    'en')
        self.notif_dict = yield admin.notification.get_notification('en')
        self.node_dict = yield admin.admin_serialize_node('en')
        self.rtip_dict = self.dummyRTips[0]['itip']

        self.templates = {}
        for t, keywords_list in templates_desc.iteritems():

            self.templates[t] = ""

            for kwl in keywords_list:
                for keyword in kwl:
                    self.templates[t] += " " + keyword + " / "

        for template_name, template in self.templates.iteritems():
            # look for appropriate event_type, event_trigger
            event_type = u''
            event_trigger = ''
            for e_t, e_tri in supported_event_types.iteritems():
                if template_name.startswith(e_t):
                    event_type = e_t
                    event_trigger = e_tri
                    break

            if not event_type:
                # we've nothing to do not!
                continue

            self._fill_event_dict(event_type, event_trigger)

            # with the event, we can finally call the template filler
            gentext = Templating().format_template(template, self.event)

            if template_name != 'ping_mail_template' and template_name != 'ping_mail_title':
                self.assertSubstring(self.context_dict['name'], gentext)
                self.assertSubstring(self.node_dict['public_site'], gentext)
                self.assertSubstring(self.node_dict['hidden_service'], gentext)
    def test_018_failed_login_counter(self):
        handler = self.request({
            'username': self.dummyReceiverUser_1['username'],
            'password': '******',
            'role': 'receiver'
        })

        failed_login = 5
        for i in xrange(0, failed_login):
            try:
                failure = yield handler.post()
            except errors.InvalidAuthRequest:
                continue
            except Exception as excep:
                print excep, "Has been raised wrongly"
                self.assertTrue(False)

        receiver_status = yield admin.get_receiver(self.dummyReceiver_1['id'])
        self.assertEqual(GLSetting.failed_login_attempts, failed_login)
Ejemplo n.º 12
0
    def test_keywords_conversion(self):
        yield self.perform_full_submission_actions()

        self.receiver_dict = yield admin.get_receiver(self.dummyReceiver_1['id'], 'en')
        self.context_dict = yield admin.get_context(self.dummyContext['id'], 'en')
        self.steps_dict = yield admin.get_context_steps(self.dummyContext['id'], 'en')
        self.notif_dict = yield admin.notification.get_notification('en')
        self.node_dict = yield admin.admin_serialize_node('en')
        self.rtip_dict = self.dummyRTips[0]['itip']

        self.templates = {}
        for t, keywords_list in templates_desc.iteritems():

            self.templates[t] = ""

            for kwl in keywords_list:
                for keyword in kwl:
                    self.templates[t] += " " + keyword + " / "

        for template_name, template in self.templates.iteritems():
            # look for appropriate event_type, event_trigger
            event_type = u''
            event_trigger = ''
            for e_t, e_tri in supported_event_types.iteritems():
                if template_name.startswith(e_t):
                    event_type = e_t
                    event_trigger = e_tri
                    break

            if not event_type:
                # we've nothing to do not!
                continue

            self._fill_event_dict(event_type, event_trigger)

            # with the event, we can finally call the template filler
            gentext = Templating().format_template(template, self.event)

            if template_name != 'ping_mail_template' and template_name != 'ping_mail_title':
                self.assertSubstring(self.context_dict['name'], gentext)
                self.assertSubstring(self.node_dict['public_site'], gentext)
                self.assertSubstring(self.node_dict['hidden_service'], gentext)
Ejemplo n.º 13
0
    def test_018_failed_login_counter(self):
        handler = self.request({
            'username': self.dummyReceiverUser_1['username'],
            'password': '******',
            'role': 'receiver'
        })

        failed_login = 5
        for i in xrange(0, failed_login):
            try:
                failure = yield handler.post()
                print type(failure)
            except errors.InvalidAuthRequest:
                continue
            except Exception as excep:
                print excep, "Has been raised wrongly"
                self.assertTrue(False)

        receiver_status = yield admin.get_receiver(self.dummyReceiver_1['id'])
        self.assertEqual(GLSetting.failed_login_attempts, failed_login)
Ejemplo n.º 14
0
    def _fill_event_dict(self, event_type, event_trigger):
        """
        A notification is based on the Node, Context and Receiver values,
        that has to be taken from the database.
        """
        receiver_dict = yield admin.get_receiver(self.createdReceiver['id'],
                                                 'en')
        context_dict = yield admin.get_context(self.createdContext['id'], 'en')
        steps_dict = yield admin.get_context_steps(self.createdContext['id'],
                                                   'en')
        notif_dict = yield admin.notification.get_notification('en')

        node_dict = yield admin.admin_serialize_node('en')

        self.subevent = {}

        # this is requested in the file cases
        if event_type == 'ping_mail':
            self.subevent = {'counter': 42}
        elif event_type == 'admin_pgp_expiration_alert':
            self.subevent = {'expired_or_expiring': [receiver_dict]}
        else:
            self.subevent['name'] = ' foo '
            self.subevent['size'] = ' 123 '
            self.subevent['content_type'] = ' application/javascript '
            self.subevent['creation_date'] = context_dict['creation_date']
            self.subevent['type'] = ' sorry maker '

        self.event = Event(type=event_type,
                           trigger=event_trigger,
                           node_info=node_dict,
                           receiver_info=receiver_dict,
                           context_info=context_dict,
                           steps_info=steps_dict,
                           tip_info=self.tip,
                           subevent_info=self.subevent,
                           do_mail=False)