Beispiel #1
0
    def do_setup_tip_environment(self):

        basehandler = MockHandler()

        for attrname in models.Context.localized_strings:
            self.tipContext[attrname] = u'⅛¡⅜⅛’ŊÑŦŊŊ’‘ª‘ª’‘ÐŊ'

        basehandler.validate_jmessage(self.tipContext, requests.adminContextDesc)
        self.context_desc = yield admin.create_context(self.tipContext)

        self.tipReceiver1['contexts'] = self.tipReceiver2['contexts'] = [ self.context_desc['id'] ]

        for attrname in models.Receiver.localized_strings:
            self.tipReceiver2[attrname] = u'222222’‘ª‘ª’‘ÐŊ'
            self.tipReceiver1[attrname] = u'⅛¡⅜⅛’ŊÑŦŊ1111111’‘ª‘ª’‘ÐŊ'

        basehandler.validate_jmessage( self.tipReceiver1, requests.adminReceiverDesc )
        basehandler.validate_jmessage( self.tipReceiver2, requests.adminReceiverDesc )

        try:
            self.receiver1_desc = yield admin.create_receiver(self.tipReceiver1)
            self.receiver2_desc = yield admin.create_receiver(self.tipReceiver2)
        except Exception as exxxx:
            self.assertTrue(False)

        self.assertEqual(self.receiver1_desc['contexts'], [ self.context_desc['id']])
        self.assertEqual(self.receiver2_desc['contexts'], [ self.context_desc['id']])

        dummySubmission = self.get_dummy_submission(self.context_desc['id'], self.context_desc['fields'])
        basehandler.validate_jmessage( dummySubmission, requests.wbSubmissionDesc)

        self.submission_desc = yield submission.create_submission(dummySubmission, finalize=False)

        self.assertEqual(self.submission_desc['wb_fields'], dummySubmission['wb_fields'])
        self.assertEqual(self.submission_desc['mark'], models.InternalTip._marker[0])
Beispiel #2
0
    def setup_tip_environment(self):
        self.context_desc = yield admin.context.create_context(self.dummyContext, 'en')

        self.dummyReceiver_1['contexts'] = self.dummyReceiver_2['contexts'] = [self.context_desc['id']]
        self.dummyReceiver_1['can_postpone_expiration'] = False
        self.dummyReceiver_2['can_postpone_expiration'] = True
        self.dummyReceiver_1['can_delete_submission'] = True
        self.dummyReceiver_2['can_delete_submission'] = False

        self.receiver1_desc = yield admin.receiver.create_receiver(self.dummyReceiver_1, 'en')
        self.receiver2_desc = yield admin.receiver.create_receiver(self.dummyReceiver_2, 'en')

        self.assertEqual(self.receiver1_desc['contexts'], [ self.context_desc['id']])
        self.assertEqual(self.receiver2_desc['contexts'], [ self.context_desc['id']])

        dummySubmissionDict = yield self.get_dummy_submission(self.context_desc['id'])

        token = Token(token_kind='submission')
        token.proof_of_work = False

        self.submission_desc = yield submission.create_submission(token.id, dummySubmissionDict, False, 'en')

        self.assertEqual(self.submission_desc['answers'], dummySubmissionDict['answers'])

        tips_receiver_1 = yield receiver.get_receivertip_list(self.receiver1_desc['id'], 'en')
        tips_receiver_2 = yield receiver.get_receivertip_list(self.receiver2_desc['id'], 'en')

        self.rtip1_id = tips_receiver_1[0]['id']
        self.rtip2_id = tips_receiver_2[0]['id']
        self.rtip1_questionnaire_hash = tips_receiver_1[0]['questionnaire_hash']
        self.rtip1_questionnaire_hash = tips_receiver_2[0]['questionnaire_hash']
Beispiel #3
0
    def test_003_create_submission_attach_files_finalize_and_access_wbtip(
            self):
        submission_desc = dict(self.dummySubmission)
        submission_desc['finalize'] = True
        del submission_desc['id']

        status = yield submission.create_submission(submission_desc,
                                                    finalize=False)

        yield self.emulate_file_upload(self.dummySubmission['id'])

        status = yield submission.update_submission(status['id'],
                                                    status,
                                                    finalize=True)

        self.assertEqual(status['mark'], u'finalize')

        receipt = yield submission.create_whistleblower_tip(status)

        self.assertTrue(re.match(self.dummyNode['receipt_regexp'], receipt))

        wb_access_id = yield authentication.login_wb(receipt)

        # remind: return a tuple (serzialized_itip, wb_itip)
        wb_tip = yield wbtip.get_internaltip_wb(wb_access_id)

        # In the WB/Receiver Tip interface, wb_fields are called fields.
        # This can be uniformed when API would be cleaned of the _id
        self.assertTrue(wb_tip.has_key('fields'))
Beispiel #4
0
    def test_007_submission_with_receiver_selection_allow_unencrypted_false_no_keys_loaded(
            self):

        GLSetting.memory_copy.allow_unencrypted = False

        # for some reason, the first receiver is no more with the same ID
        self.receivers = yield get_receiver_list()

        rcvrs_ids = []

        for rcvr in self.receivers:
            rcvrs_ids.append(rcvr['id'])

        self.dummyContext['receivers'] = rcvrs_ids
        self.dummyContext['selectable_receiver'] = True
        self.dummyContext['escalation_threshold'] = 0

        for attrname in models.Context.localized_strings:
            self.dummyContext[attrname] = u'⅛¡⅜⅛’ŊÑŦŊŊ’‘ª‘ª’‘ÐŊ'

        context_status = yield update_context(self.dummyContext['id'],
                                              self.dummyContext)

        # Create a new request with selected three of the four receivers
        submission_request = dict(self.dummySubmission)
        # submission_request['context_id'] = context_status['context_id']
        submission_request['id'] = ''
        submission_request['finalize'] = False
        submission_request['receivers'] = rcvrs_ids

        yield self.assertFailure(
            submission.create_submission(submission_request, finalize=True),
            errors.SubmissionFailFields)
    def test_007_submission_with_receiver_selection_allow_unencrypted_false_no_keys_loaded(self):

        GLSetting.memory_copy.allow_unencrypted = False

        # for some reason, the first receiver is no more with the same ID
        self.receivers = yield get_receiver_list()

        rcvrs_ids = []

        for rcvr in self.receivers:
            rcvrs_ids.append(rcvr['id'])

        self.dummyContext['receivers'] = rcvrs_ids
        self.dummyContext['selectable_receiver'] = True
        self.dummyContext['escalation_threshold'] = 0

        for attrname in models.Context.localized_strings:
            self.dummyContext[attrname] = u'⅛¡⅜⅛’ŊÑŦŊŊ’‘ª‘ª’‘ÐŊ'

        context_status = yield update_context(self.dummyContext['id'], self.dummyContext)

        # Create a new request with selected three of the four receivers
        submission_request= dict(self.dummySubmission)
        # submission_request['context_id'] = context_status['context_id']
        submission_request['id'] = ''
        submission_request['finalize'] = False
        submission_request['receivers'] = rcvrs_ids

        yield self.assertFailure(submission.create_submission(submission_request, finalize=True), errors.SubmissionFailFields)
    def test_003_create_submission_attach_files_finalize_and_access_wbtip(self):
        submission_desc = dict(self.dummySubmission)
        submission_desc['finalize'] = True
        del submission_desc['id']

        status = yield submission.create_submission(submission_desc, finalize=False)

        yield self.emulate_file_upload(self.dummySubmission['id'])

        status = yield submission.update_submission(status['id'], status, finalize=True)

        self.assertEqual(status['mark'], u'finalize')

        receipt = yield submission.create_whistleblower_tip(status)

        self.assertTrue(re.match(self.dummyNode['receipt_regexp'], receipt))

        wb_access_id = yield authentication.login_wb(receipt)

        # remind: return a tuple (serzialized_itip, wb_itip)
        wb_tip = yield wbtip.get_internaltip_wb(wb_access_id)

        # In the WB/Receiver Tip interface, wb_fields are called fields.
        # This can be uniformed when API would be cleaned of the _id
        self.assertTrue(wb_tip.has_key('fields'))
Beispiel #7
0
    def setup_tip_environment(self):

        basehandler = MockHandler()

        stuff = u'⅛⅛⅛£"$"$¼³²¼²³¼²³“““““ð'
        for attrname in models.Context.localized_strings:
            self.tipContext[attrname] = stuff

        basehandler.validate_jmessage(self.tipContext, requests.adminContextDesc)

        self.context_desc = yield admin.create_context(self.tipContext)

        self.tipReceiver1['contexts'] = self.tipReceiver2['contexts'] = [ self.context_desc['id'] ]

        for attrname in models.Receiver.localized_strings:
            self.tipReceiver1[attrname] = stuff
            self.tipReceiver2[attrname] = stuff

        basehandler.validate_jmessage( self.tipReceiver1, requests.adminReceiverDesc )
        basehandler.validate_jmessage( self.tipReceiver2, requests.adminReceiverDesc )

        self.receiver1_desc = yield admin.create_receiver(self.tipReceiver1)
        self.receiver2_desc = yield admin.create_receiver(self.tipReceiver2)

        self.assertEqual(self.receiver1_desc['contexts'], [ self.context_desc['id']])

        dummySubmissionDict = self.get_dummy_submission(
            self.context_desc['id'], self.context_desc['fields'])
        basehandler.validate_jmessage(dummySubmissionDict, requests.wbSubmissionDesc)

        self.submission_desc = yield submission.create_submission(dummySubmissionDict, finalize=True)

        self.assertEqual(self.submission_desc['wb_fields'], dummySubmissionDict['wb_fields'])
        self.assertEqual(self.submission_desc['mark'], models.InternalTip._marker[1])
Beispiel #8
0
    def setup_tip_environment(self):
        self.context_desc = yield admin.create_context(self.dummyContext, 'en')

        self.dummyReceiver_1['contexts'] = self.dummyReceiver_2['contexts'] = [self.context_desc['id']]
        self.dummyReceiver_1['can_postpone_expiration'] = False
        self.dummyReceiver_2['can_postpone_expiration'] = True
        self.dummyReceiver_1['can_delete_submission'] = True
        self.dummyReceiver_2['can_delete_submission'] = False

        self.receiver1_desc = yield admin.create_receiver(self.dummyReceiver_1, 'en')
        self.receiver2_desc = yield admin.create_receiver(self.dummyReceiver_2, 'en')

        self.assertEqual(self.receiver1_desc['contexts'], [ self.context_desc['id']])
        self.assertEqual(self.receiver2_desc['contexts'], [ self.context_desc['id']])

        dummySubmissionDict = yield self.get_dummy_submission(self.context_desc['id'])

        token = Token(token_kind='submission',
                      context_id=self.context_desc['id'])

        self.submission_desc = yield submission.create_submission(token, dummySubmissionDict, 'en')

        self.assertEqual(self.submission_desc['wb_steps'], dummySubmissionDict['wb_steps'])

        tips_receiver_1 = yield receiver.get_receivertip_list(self.receiver1_desc['id'], 'en')
        tips_receiver_2 = yield receiver.get_receivertip_list(self.receiver2_desc['id'], 'en')

        self.rtip1_id = tips_receiver_1[0]['id']
        self.rtip2_id = tips_receiver_2[0]['id']
    def test_tor2web_absence(self):
        """
        This test checks:
        https://github.com/globaleaks/GlobaLeaks/issues/268
        """

        yield self._initialize()

        # be sure of Tor2Web capability
        self.mockNode['tor2web_tip'] = False
        self.createdNode = yield admin.update_node(self.mockNode)
        yield admin.import_memory_variables()

        self._load_defaults()

        self.mockSubmission = MockDict().dummySubmission
        self.mockSubmission['finalize'] = True
        self.mockSubmission['context_gus'] = self.createdReceiver['contexts'][0]
        self.mockSubmission['receivers'] = [ self.createdReceiver['receiver_gus'] ]
        self.createdSubmission = yield submission.create_submission(self.mockSubmission, finalize=True)

        created_rtip = yield delivery_sched.tip_creation()
        self.assertEqual(len(created_rtip), 1)

        yield self._fill_event(u'tip', 'Tip', created_rtip[0])

        # with the event, we can finally call the format checks
        gentext = MailNotification().format_template(self.Tip_notifi_template, self.event)

        self.assertSubstring(self.createdContext['name'], gentext)
        self.assertSubstring(created_rtip[0], gentext)
        self.assertNotSubstring("%TipT2WURL%", gentext)
    def test_keywords(self):

        yield self._initialize()
        self._load_defaults()

        self.mockSubmission = MockDict().dummySubmission
        self.mockSubmission['finalize'] = True
        self.mockSubmission['context_gus'] = self.createdReceiver['contexts'][0]
        self.mockSubmission['receivers'] = [ self.createdReceiver['receiver_gus'] ]
        self.createdSubmission = yield submission.create_submission(self.mockSubmission, finalize=True)

        created_rtip = yield delivery_sched.tip_creation()
        self.assertEqual(len(created_rtip), 1)

        try:
            yield self._fill_event(u'tip', 'Tip', created_rtip[0])
        except Exception as excep:
            print excep; raise excep

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

        self.assertSubstring(self.createdContext['name'], gentext)
        self.assertSubstring(created_rtip[0], gentext)
        self.assertSubstring(self.createdNode['public_site'], gentext)
        self.assertSubstring(self.createdNode['hidden_service'], gentext)
    def test_6_fail_create_huge_submission(self):
        self.assertTrue(len(SubmissionTest.context_used["context_gus"]) > 1)

        submission_request = dict(
            helpers.get_dummy_submission(
                SubmissionTest.context_used["context_gus"], SubmissionTest.context_used["fields"]
            )
        )

        submission_request["receivers"] = [SubmissionTest.receiver_used["receiver_gus"]]
        submission_request["context_gus"] = SubmissionTest.context_used["context_gus"]

        for key in submission_request["wb_fields"].keys():
            submission_request["wb_fields"][key] = unicode("You know nothing John Snow" * 100 * 100)

        submission_request["finalize"] = True

        try:
            r = yield submission.create_submission(submission_request, finalize=True)
            self.assertTrue(False)
        except InvalidInputFormat:
            self.assertTrue(True)
        except GLException, e:
            log.debug("GLException %s %s" % (str(e), e.reason))
            self.assertTrue(False)
    def test_011_fields_fail_missing_required(self):

        required_key = self.dummyContext['fields'][0]['key']
        sbmt = self.get_dummy_submission(self.dummyContext['id'], self.dummyContext['fields'])
        del sbmt['wb_fields'][required_key]

        yield self.assertFailure(submission.create_submission(sbmt, finalize=True), errors.SubmissionFailFields)
Beispiel #13
0
    def test_tor2web_absence(self):
        """
        This test checks:
        https://github.com/globaleaks/GlobaLeaks/issues/268
        """

        ### INITIALIZE BLOCK
        self.mockContext = helpers.MockDict().dummyContext
        self.mockReceiver = helpers.MockDict().dummyReceiver
        self.mockNode = helpers.MockDict().dummyNode

        self.createdContext = yield admin.create_context(self.mockContext)
        self.assertTrue(self.createdContext.has_key('id'))

        self.mockReceiver['contexts'] = [self.createdContext['id']]

        self.createdReceiver = yield admin.create_receiver(self.mockReceiver)
        self.assertTrue(self.createdReceiver.has_key('id'))

        self.createdNode = yield admin.update_node(self.mockNode)
        self.assertTrue(self.createdNode.has_key('version'))
        ### END OF THE INITIALIZE BLOCK

        # be sure of Tor2Web capability
        for attrname in Node.localized_strings:
            self.mockNode[attrname] = self.mockNode[attrname]['en']
        self.createdNode = yield admin.update_node(self.mockNode)
        yield admin.import_memory_variables()

        self._load_defaults()

        self.mockSubmission = helpers.MockDict().dummySubmission
        self.mockSubmission['finalize'] = True
        self.mockSubmission['context_id'] = self.createdReceiver['contexts'][0]
        self.mockSubmission['receivers'] = [self.createdReceiver['id']]
        self.mockSubmission['wb_fields'] = helpers.fill_random_fields(
            self.createdContext)
        self.createdSubmission = yield submission.create_submission(
            self.mockSubmission, finalize=True)

        created_rtip = yield delivery_sched.tip_creation()
        self.assertEqual(len(created_rtip), 1)

        yield self._fill_event(u'encrypted_tip', 'Tip', created_rtip[0])

        # adding funny configured variables
        self.templates['default_ETNT.txt'][
            'en'] += " %OttimoDireiOOOttimoDirei%"

        # with the event, we can finally call the format checks
        gentext = Templating().format_template(
            self.templates['default_ETNT.txt'], self.event)

        self.assertSubstring(self.createdContext['name'], gentext)
        self.assertSubstring(created_rtip[0], gentext)
        self.assertNotSubstring("%TipT2WURL%", gentext)

        # test against funny configured variables
        self.assertSubstring("%OttimoDireiOOOttimoDirei%", gentext)
Beispiel #14
0
    def test_submission_file_delivery_pgp(self):

        new_fields = MockDict().dummyFields
        new_context = MockDict().dummyContext

        new_context['steps'][0]['children'] = []

        new_context['name'] = "this uniqueness is no more checked due to the lang"
        new_context_output = yield create_context(new_context, 'en')
        self.context_assertions(new_context, new_context_output)

        doubletest = yield get_context_list('en')
        self.assertEqual(len(doubletest), 2)

        yanr = dict(MockDict().dummyReceiver)
        yanr['name'] = yanr['mail_address'] = u"*****@*****.**"
        yanr['pgp_key_public'] = unicode(VALID_PGP_KEY1)
        yanr['contexts'] = [ new_context_output['id']]
        yanr_output = yield create_receiver(yanr, 'en')
        self.receiver_assertions(yanr, yanr_output)

        asdr = dict(MockDict().dummyReceiver)
        asdr['name'] = asdr['mail_address'] = u"*****@*****.**"
        asdr['pgp_key_public'] = unicode(VALID_PGP_KEY1)
        asdr['contexts'] = [ new_context_output['id']]
        asdr_output = yield create_receiver(asdr, 'en')
        self.receiver_assertions(asdr, asdr_output)

        new_subm = dict(MockDict().dummySubmission)

        new_subm['finalize'] = False

        new_subm['context_id'] = new_context_output['id']
        new_subm['receivers'] = [ asdr_output['id'],
                                  yanr_output['id'] ]
        new_subm['wb_steps'] = yield self.fill_random_fields(new_context_output['id'])

        token = Token('submission', new_context_output['id'])
        yield self.emulate_file_upload(token, 3)

        new_subm_output = yield submission.create_submission(token, new_subm, 'en')

        yield DeliverySchedule().operation()

        # now get a lots of receivertips/receiverfiles and check!
        ifilist = yield get_files_by_itip(new_subm_output['id'])

        self.assertTrue(isinstance(ifilist, list))
        self.assertEqual(len(ifilist), 3)

        rfilist = yield get_receiverfile_by_itip(new_subm_output['id'])

        self.assertTrue(isinstance(ifilist, list))
        self.assertEqual(len(rfilist), 6)

        for i in range(0, 3):
            self.assertLess(ifilist[0]['size'], rfilist[i]['size'])

        self.assertEqual(rfilist[0]['status'], u"encrypted" )
Beispiel #15
0
    def test_post_file_on_not_finalized_submission(self):
        self.submission_desc = yield self.get_dummy_submission(
            self.dummyContext['id'])
        self.submission_desc = yield submission.create_submission(
            self.submission_desc, False, 'en')

        handler = self.request(body=self.get_dummy_file())
        yield handler.post(self.submission_desc['id'])
Beispiel #16
0
    def perform_submission_actions(self):
        self.dummySubmission['context_id'] = self.dummyContext['id']
        self.dummySubmission['receivers'] = self.dummyContext['receivers']
        self.dummySubmission['wb_steps'] = yield self.fill_random_fields(self.dummyContext['id'])

        self.dummySubmission = yield create_submission(self.dummyToken,
                                                       self.dummySubmission,
                                                       'en')
    def test_001_create_submission(self):
        submission_desc = dict(self.dummySubmission)
        submission_desc['finalize'] = False
        del submission_desc['id']

        status = yield submission.create_submission(submission_desc, finalize=False)

        self.assertEqual(status['mark'], u'submission')
Beispiel #18
0
    def perform_submission_actions(self):
        self.dummySubmission['context_id'] = self.dummyContext['id']
        self.dummySubmission['receivers'] = self.dummyContext['receivers']
        self.dummySubmission['answers'] = yield self.fill_random_answers(self.dummyContext['id'])

        self.dummySubmission = yield create_submission(self.dummyToken.token_id,
                                                       self.dummySubmission, 
                                                       True, 'en')
Beispiel #19
0
    def test_submission_file_delivery_pgp(self):
        new_fields = MockDict().dummyFields
        new_context = MockDict().dummyContext

        new_context['name'] = "Context Name"
        new_context_output = yield create_context(new_context, 'en')
        self.context_assertions(new_context, new_context_output)

        doubletest = yield get_context_list('en')
        self.assertEqual(len(doubletest), 2)

        yanr = self.get_dummy_receiver("antani1")
        yanr['pgp_key_public'] = unicode(VALID_PGP_KEY1)
        yanr['contexts'] = [new_context_output['id']]
        yanr_output = yield receiver.create_receiver(yanr, 'en')
        self.receiver_assertions(yanr, yanr_output)

        asdr = self.get_dummy_receiver("antani2")
        asdr['pgp_key_public'] = unicode(VALID_PGP_KEY1)
        asdr['contexts'] = [new_context_output['id']]
        asdr_output = yield receiver.create_receiver(asdr, 'en')
        self.receiver_assertions(asdr, asdr_output)

        new_subm = dict(MockDict().dummySubmission)

        new_subm['finalize'] = False

        new_subm['context_id'] = new_context_output['id']
        new_subm['receivers'] = [asdr_output['id'], yanr_output['id']]
        new_subm['identity_provided'] = False
        new_subm['answers'] = yield self.fill_random_answers(
            new_context_output['id'])

        token = Token('submission')
        token.proof_of_work = False
        yield self.emulate_file_upload(token, 3)

        new_subm_output = yield submission.create_submission(
            token.id, new_subm, False, 'en')

        yield DeliverySchedule().operation()

        # now get a lots of receivertips/receiverfiles and check!
        ifilist = yield self.get_internalfiles_by_wbtip(new_subm_output['id'])

        self.assertTrue(isinstance(ifilist, list))
        self.assertEqual(len(ifilist), 3)

        rfilist = yield self.get_receiverfiles_by_wbtip(new_subm_output['id'])

        self.assertTrue(isinstance(ifilist, list))
        self.assertEqual(len(rfilist), 6)

        for i in range(0, 3):
            self.assertLess(ifilist[0]['size'], rfilist[i]['size'])

        self.assertEqual(rfilist[0]['status'], u"encrypted")
Beispiel #20
0
    def test_010_fields_fail_unexpected_presence(self):

        sbmt = self.get_dummy_submission(self.dummyContext['id'],
                                         self.dummyContext['fields'])
        sbmt['wb_fields'].update({'alien': 'predator'})

        yield self.assertFailure(
            submission.create_submission(sbmt, finalize=True),
            errors.SubmissionFailFields)
Beispiel #21
0
    def test_001_create_submission(self):
        submission_desc = dict(self.dummySubmission)
        submission_desc['finalize'] = False
        del submission_desc['id']

        status = yield submission.create_submission(submission_desc,
                                                    finalize=False)

        self.assertEqual(status['mark'], u'submission')
    def test_002_create_submission_missing_receiver(self):
        self.assertTrue(len(SubmissionTest.context_used['id']) > 1)

        submission_request = dict( self.get_dummy_submission(SubmissionTest.context_used['id'],
                                                             SubmissionTest.context_used['fields']) )
        submission_request['finalize'] = True

        yield self.assertFailure(submission.create_submission(submission_request, finalize=True),
                                 GLException)
Beispiel #23
0
    def test_006_delete_submission_not_finalized(self):
        submission_desc = dict(self.dummySubmission)
        submission_desc['finalize'] = False
        del submission_desc['id']

        status = yield submission.create_submission(submission_desc, finalize=False)

        handler = self.request({})
        yield handler.delete(status['id'])
Beispiel #24
0
    def test_submission_file_delivery_pgp(self):
        new_fields = MockDict().dummyFields
        new_context = MockDict().dummyContext

        new_context['name'] = "this uniqueness is no more checked due to the lang"
        new_context_output = yield create_context(new_context, 'en')
        self.context_assertions(new_context, new_context_output)

        doubletest = yield get_context_list('en')
        self.assertEqual(len(doubletest), 2)

        yanr = dict(MockDict().dummyReceiver)
        yanr['name'] = u"Receiver1"
        yanr['pgp_key_public'] = unicode(VALID_PGP_KEY1)
        yanr['contexts'] = [ new_context_output['id']]
        yanr_output = yield create_receiver(yanr, 'en')
        self.receiver_assertions(yanr, yanr_output)

        asdr = dict(MockDict().dummyReceiver)
        asdr['name'] = u"Receiver2"
        asdr['pgp_key_public'] = unicode(VALID_PGP_KEY1)
        asdr['contexts'] = [ new_context_output['id']]
        asdr_output = yield create_receiver(asdr, 'en')
        self.receiver_assertions(asdr, asdr_output)

        new_subm = dict(MockDict().dummySubmission)

        new_subm['finalize'] = False

        new_subm['context_id'] = new_context_output['id']
        new_subm['receivers'] = [ asdr_output['id'],
                                  yanr_output['id'] ]
        new_subm['wb_steps'] = yield self.fill_random_answers(new_context_output['id'])

        token = Token('submission')
        yield self.emulate_file_upload(token, 3)

        new_subm_output = yield submission.create_submission(token.id, new_subm, False, 'en')

        yield DeliverySchedule().operation()

        # now get a lots of receivertips/receiverfiles and check!
        ifilist = yield get_files_by_itip(new_subm_output['id'])

        self.assertTrue(isinstance(ifilist, list))
        self.assertEqual(len(ifilist), 3)

        rfilist = yield get_receiverfile_by_itip(new_subm_output['id'])

        self.assertTrue(isinstance(ifilist, list))
        self.assertEqual(len(rfilist), 6)

        for i in range(0, 3):
            self.assertLess(ifilist[0]['size'], rfilist[i]['size'])

        self.assertEqual(rfilist[0]['status'], u"encrypted" )
Beispiel #25
0
    def test_submission_file_delivery_pgp(self):
        new_fields = MockDict().dummyFields
        new_context = MockDict().dummyContext

        new_context['name'] = "this uniqueness is no more checked due to the lang"
        new_context_output = yield create_context(new_context, 'en')
        self.context_assertions(new_context, new_context_output)

        doubletest = yield get_context_list('en')
        self.assertEqual(len(doubletest), 2)

        yanr = self.get_dummy_receiver("antani1")
        yanr['pgp_key_public'] = unicode(VALID_PGP_KEY1)
        yanr['contexts'] = [ new_context_output['id']]
        yanr_output = yield receiver.create_receiver(yanr, 'en')
        self.receiver_assertions(yanr, yanr_output)

        asdr = self.get_dummy_receiver("antani2")
        asdr['pgp_key_public'] = unicode(VALID_PGP_KEY1)
        asdr['contexts'] = [ new_context_output['id']]
        asdr_output = yield receiver.create_receiver(asdr, 'en')
        self.receiver_assertions(asdr, asdr_output)

        new_subm = dict(MockDict().dummySubmission)

        new_subm['finalize'] = False

        new_subm['context_id'] = new_context_output['id']
        new_subm['receivers'] = [ asdr_output['id'],
                                  yanr_output['id'] ]
        new_subm['identity_provided'] = False
        new_subm['answers'] = yield self.fill_random_answers(new_context_output['id'])

        token = Token('submission')
        token.proof_of_work = False
        yield self.emulate_file_upload(token, 3)

        new_subm_output = yield submission.create_submission(token.id, new_subm, False, 'en')

        yield DeliverySchedule().operation()

        # now get a lots of receivertips/receiverfiles and check!
        ifilist = yield self.get_internalfiles_by_wbtip(new_subm_output['id'])

        self.assertTrue(isinstance(ifilist, list))
        self.assertEqual(len(ifilist), 3)

        rfilist = yield self.get_receiverfiles_by_wbtip(new_subm_output['id'])

        self.assertTrue(isinstance(ifilist, list))
        self.assertEqual(len(rfilist), 6)

        for i in range(0, 3):
            self.assertLess(ifilist[0]['size'], rfilist[i]['size'])

        self.assertEqual(rfilist[0]['status'], u"encrypted" )
    def test_005_create_valid_submission(self):
        self.assertTrue(len(SubmissionTest.context_used['id']) > 1)

        submission_request = dict( self.get_dummy_submission(SubmissionTest.context_used['id'],
                                                             SubmissionTest.context_used['fields']) )

        submission_request['receivers'] = [ SubmissionTest.receiver_used['id']  ]
        submission_request['finalize'] = True

        yield submission.create_submission(submission_request, finalize=True)
    def test_create_submission(self):
        submission_desc = dict(self.dummySubmission)
        submission_desc["finalize"] = True
        del submission_desc["submission_gus"]

        status = yield submission.create_submission(submission_desc, finalize=True)
        receipt = yield submission.create_whistleblower_tip(status)

        retval = re.match(self.dummyContext["receipt_regexp"], receipt)
        self.assertTrue(retval)
    def test_006_delete_submission_not_finalized(self):
        submission_desc = dict(self.dummySubmission)
        submission_desc['finalize'] = False
        del submission_desc['id']

        status = yield submission.create_submission(submission_desc,
                                                    finalize=False)

        handler = self.request({})
        yield handler.delete(status['id'])
Beispiel #29
0
    def perform_submission_actions(self, token):
        self.dummySubmission['context_id'] = self.dummyContext['id']
        self.dummySubmission['receivers'] = self.dummyContext['receivers']
        self.dummySubmission['identity_provided'] = False
        self.dummySubmission['answers'] = yield self.fill_random_answers(
            self.dummyContext['questionnaire_id'])
        self.dummySubmission['total_score'] = 0

        self.dummySubmission = yield create_submission(1, self.dummySubmission,
                                                       token, True)
Beispiel #30
0
    def perform_submission_actions(self):
        self.dummySubmission['context_id'] = self.dummyContext['id']
        self.dummySubmission['receivers'] = self.dummyContext['receivers']
        self.dummySubmission['identity_provided'] = False
        self.dummySubmission['answers'] = yield self.fill_random_answers(self.dummyContext['id'])
        self.dummySubmission['total_score'] = 0

        self.dummySubmission = yield create_submission(self.dummySubmission,
                                                       self.dummyToken.uploaded_files,
                                                       True, 'en')
Beispiel #31
0
    def test_011_fields_fail_missing_required(self):

        required_key = self.dummyContext['fields'][0]['key']
        sbmt = self.get_dummy_submission(self.dummyContext['id'],
                                         self.dummyContext['fields'])
        del sbmt['wb_fields'][required_key]

        yield self.assertFailure(
            submission.create_submission(sbmt, finalize=True),
            errors.SubmissionFailFields)
Beispiel #32
0
    def perform_submission_actions(self):
        self.dummySubmission['context_id'] = self.dummyContext['id']
        self.dummySubmission['receivers'] = self.dummyContext['receivers']
        self.dummySubmission['identity_provided'] = False
        self.dummySubmission['answers'] = yield self.fill_random_answers(
            self.dummyContext['id'])
        self.dummySubmission['total_score'] = 0

        self.dummySubmission = yield create_submission(
            self.dummySubmission, self.dummyToken.uploaded_files, True, 'en')
    def test_tor2web_absence(self):
        """
        This test checks:
        https://github.com/globaleaks/GlobaLeaks/issues/268
        """

        ### INITIALIZE BLOCK
        self.mockContext = helpers.MockDict().dummyContext
        self.mockReceiver = helpers.MockDict().dummyReceiver
        self.mockNode = helpers.MockDict().dummyNode

        self.createdContext = yield admin.create_context(self.mockContext)
        self.assertTrue(self.createdContext.has_key('id'))

        self.mockReceiver['contexts'] = [ self.createdContext['id'] ]

        self.createdReceiver = yield admin.create_receiver(self.mockReceiver)
        self.assertTrue(self.createdReceiver.has_key('id'))

        self.createdNode = yield admin.update_node(self.mockNode)
        self.assertTrue(self.createdNode.has_key('version'))
        ### END OF THE INITIALIZE BLOCK

        # be sure of Tor2Web capability
        for attrname in Node.localized_strings:
            self.mockNode[attrname] = self.mockNode[attrname]['en']
        self.createdNode = yield admin.update_node(self.mockNode)
        yield admin.import_memory_variables()

        self._load_defaults()

        self.mockSubmission = helpers.MockDict().dummySubmission
        self.mockSubmission['finalize'] = True
        self.mockSubmission['context_id'] = self.createdReceiver['contexts'][0]
        self.mockSubmission['receivers'] = [ self.createdReceiver['id'] ]
        self.mockSubmission['wb_fields'] = helpers.fill_random_fields(self.createdContext)
        self.createdSubmission = yield submission.create_submission(self.mockSubmission, finalize=True)

        created_rtip = yield delivery_sched.tip_creation()
        self.assertEqual(len(created_rtip), 1)

        yield self._fill_event(u'encrypted_tip', 'Tip', created_rtip[0])

        # adding funny configured variables 
        self.templates['default_ETNT.txt']['en'] += " %OttimoDireiOOOttimoDirei%"

        # with the event, we can finally call the format checks
        gentext = Templating().format_template(self.templates['default_ETNT.txt'], self.event)

        self.assertSubstring(self.createdContext['name'], gentext)
        self.assertSubstring(created_rtip[0], gentext)
        self.assertNotSubstring("%TipT2WURL%", gentext)

        # test against funny configured variables
        self.assertSubstring("%OttimoDireiOOOttimoDirei%", gentext)
Beispiel #34
0
    def perform_submission_actions(self, token):
        self.dummySubmission['context_id'] = self.dummyContext['id']
        self.dummySubmission['receivers'] = self.dummyContext['receivers']
        self.dummySubmission['identity_provided'] = False
        self.dummySubmission['answers'] = yield self.fill_random_answers(self.dummyContext['questionnaire_id'])
        self.dummySubmission['total_score'] = 0

        self.dummySubmission = yield create_submission(1,
                                                       self.dummySubmission,
                                                       token,
                                                       True)
    def test_003_create_submission_flip_receiver(self):
        self.assertTrue(len(SubmissionTest.context_used['id']) > 1)

        fields = yield admin.get_context_fields(SubmissionTest.context_used['id'])
        submission_request = yield self.get_dummy_submission(SubmissionTest.context_used['id'])

        submission_request['receivers'] = [ SubmissionTest.receiver_unused['id'] ]
        submission_request['finalize'] = True

        yield self.assertFailure(submission.create_submission(submission_request, finalize=True),
                                 GLException)
Beispiel #36
0
    def test_005_create_valid_submission(self):
        self.assertTrue(len(SubmissionTest.context_used['id']) > 1)

        submission_request = dict(
            self.get_dummy_submission(SubmissionTest.context_used['id'],
                                      SubmissionTest.context_used['fields']))

        submission_request['receivers'] = [SubmissionTest.receiver_used['id']]
        submission_request['finalize'] = True

        yield submission.create_submission(submission_request, finalize=True)
Beispiel #37
0
    def test_002_create_submission_missing_receiver(self):
        self.assertTrue(len(SubmissionTest.context_used['id']) > 1)

        submission_request = dict(
            self.get_dummy_submission(SubmissionTest.context_used['id'],
                                      SubmissionTest.context_used['fields']))
        submission_request['finalize'] = True

        yield self.assertFailure(
            submission.create_submission(submission_request, finalize=True),
            GLException)
    def test_fields_fail_missing_required(self):

        required_key = self.dummyContext["fields"][0]["key"]
        sbmt = helpers.get_dummy_submission(self.dummySubmission["context_gus"], self.dummyContext["fields"])
        del sbmt["wb_fields"][required_key]

        try:
            yield submission.create_submission(sbmt, finalize=True)
            self.assertTrue(False)
        except Exception as excep:
            self.assertTrue(excep.reason.startswith("Submission do not validate the input fields [Missing field"))
    def setUp(self):
        yield helpers.TestGLWithPopulatedDB.setUp(self)

        self.recipe = yield submission.create_submission({
            'wb_fields': helpers.fill_random_fields(self.dummyContext),
            'context_id': self.dummyContext['id'],
            'receivers': [self.dummyReceiver_1['id']],
            'files': [],
            'finalize': True,
            }, finalize=True)

        yield delivery_sched.tip_creation()
    def test_unable_to_access_finalized(self):
        submission_desc = dict(self.dummySubmission)
        submission_desc["finalize"] = True
        submission_desc["context_gus"] = self.dummyContext["context_gus"]

        status = yield submission.create_submission(submission_desc, finalize=True)
        try:
            yield submission.update_submission(status["submission_gus"], status, finalize=True)
        except errors.SubmissionConcluded:
            self.assertTrue(True)
            return
        self.assertTrue(False)
    def test_004_create_submission_both_valid_and_invalid_receiver(self):
        self.assertTrue(len(SubmissionTest.context_used['id']) > 1)

        submission_request = dict( self.get_dummy_submission(SubmissionTest.context_used['id'],
                                                             SubmissionTest.context_used['fields']) )

        submission_request['receivers'] = [ SubmissionTest.receiver_unused['id'],
                                            SubmissionTest.receiver_used['id']  ]
        submission_request['finalize'] = True

        yield self.assertFailure(submission.create_submission(submission_request, finalize=True),
                                 GLException)
Beispiel #42
0
    def test_tip_creation(self):

        receivers = yield get_public_receiver_list('en')
        contexts = yield get_public_context_list('en')

        yield create_submission(self.dummySubmission, finalize=True)
        created_tips = yield delivery_sched.tip_creation()
        self.assertEqual(len(created_tips), 2) # this createSubmission and the helpers one

        receiver_tips = yield get_receiver_tip_list(self.dummyReceiver['receiver_gus'])

        expected_keys = ['access_counter', 'creation_date', 'expressed_pertinence', 'id', 'files_number', 'last_access', 'preview']
        self.assertEqual(set(receiver_tips[0].keys()), set(expected_keys))
    def test_fields_fail_unexpected_presence(self):

        sbmt = helpers.get_dummy_submission(self.dummySubmission["context_gus"], self.dummyContext["fields"])
        sbmt["wb_fields"].update({"alien": "predator"})

        try:
            yield submission.create_submission(sbmt, finalize=True)
            self.assertTrue(False)
        except Exception as excep:
            self.assertEqual(
                excep.reason,
                "Submission do not validate the input fields [Submitted field 'alien' not expected in context]",
            )
Beispiel #44
0
    def test_004_put_with_finalize_true(self):
        submission_desc = dict(self.dummySubmission)
        submission_desc['finalize'] = False
        del submission_desc['id']

        status = yield submission.create_submission(submission_desc, finalize=False)

        status['finalize'] = True

        handler = self.request({}, body=json.dumps(status))
        yield handler.put(status['id'])

        self.assertNotEqual(self.responses[0]['receipt'], '')
    def setUp(self):
        yield helpers.TestGLWithPopulatedDB.setUp(self)

        self.recipe = yield submission.create_submission(
            {
                'wb_fields': helpers.fill_random_fields(self.dummyContext),
                'context_id': self.dummyContext['id'],
                'receivers': [self.dummyReceiver_1['id']],
                'files': [],
                'finalize': True,
            },
            finalize=True)

        yield delivery_sched.tip_creation()
    def test_004_put_with_finalize_true(self):
        submission_desc = dict(self.dummySubmission)
        submission_desc['finalize'] = False
        del submission_desc['id']

        status = yield submission.create_submission(submission_desc,
                                                    finalize=False)

        status['finalize'] = True

        handler = self.request({}, body=json.dumps(status))
        yield handler.put(status['id'])

        self.assertNotEqual(self.responses[0]['receipt'], '')
    def test_002_fail_submission_missing_required_file(self):
        mycopy = dict(self.dummyContext)
        mycopy['file_required'] = True
        del mycopy['id']

        for attrname in models.Context.localized_strings:
            mycopy[attrname] = u'⅛¡⅜⅛’ŊÑŦŊŊ’‘ª‘ª’‘ÐŊ'

        context_status = yield create_context(mycopy)
        submission_desc = dict(self.dummySubmission)

        submission_desc['context_id'] = context_status['id']
        submission_desc['finalize'] = True
        submission_desc['wb_fields'] = helpers.fill_random_fields(mycopy)
        yield self.assertFailure(submission.create_submission(submission_desc, finalize=True), errors.FileRequiredMissing)
Beispiel #48
0
    def test_009_unable_to_access_finalized(self):
        submission_desc = dict(self.dummySubmission)
        submission_desc['finalize'] = True
        submission_desc['context_id'] = self.dummyContext['id']

        status = yield submission.create_submission(submission_desc,
                                                    finalize=True)
        try:
            yield submission.update_submission(status['id'],
                                               status,
                                               finalize=True)
        except errors.SubmissionConcluded:
            self.assertTrue(True)
            return
        self.assertTrue(False)
Beispiel #49
0
    def test_004_create_submission_both_valid_and_invalid_receiver(self):
        self.assertTrue(len(SubmissionTest.context_used['id']) > 1)

        submission_request = dict(
            self.get_dummy_submission(SubmissionTest.context_used['id'],
                                      SubmissionTest.context_used['fields']))

        submission_request['receivers'] = [
            SubmissionTest.receiver_unused['id'],
            SubmissionTest.receiver_used['id']
        ]
        submission_request['finalize'] = True

        yield self.assertFailure(
            submission.create_submission(submission_request, finalize=True),
            GLException)
Beispiel #50
0
    def test_006_submission_with_receiver_selection_allow_unencrypted_true_no_keys_loaded(
            self):

        # for some reason, the first receiver is no more with the same ID
        self.receivers = yield get_receiver_list()

        rcvrs_ids = []

        for rcvr in self.receivers:
            rcvrs_ids.append(rcvr['id'])

        self.dummyContext['receivers'] = rcvrs_ids
        self.dummyContext['selectable_receiver'] = True
        self.dummyContext['escalation_threshold'] = 0

        for attrname in models.Context.localized_strings:
            self.dummyContext[attrname] = u'⅛¡⅜⅛’ŊÑŦŊŊ’‘ª‘ª’‘ÐŊ'

        context_status = yield update_context(self.dummyContext['id'],
                                              self.dummyContext)

        # Create a new request with selected three of the four receivers
        submission_request = dict(self.dummySubmission)
        # submission_request['context_id'] = context_status['context_id']
        submission_request['id'] = ''
        submission_request['finalize'] = False

        submission_request['receivers'] = rcvrs_ids

        status = yield submission.create_submission(submission_request,
                                                    finalize=False)
        just_empty_eventually_internaltip = yield delivery_sched.tip_creation()

        # Checks, the submission need to be the same now
        self.assertEqual(len(submission_request['receivers']),
                         len(status['receivers']))

        status['finalize'] = True
        submission_request['context_id'] = context_status['id']  # reused
        status['receivers'] = rcvrs_ids

        status = yield submission.update_submission(status['id'],
                                                    status,
                                                    finalize=True)

        receiver_tips = yield delivery_sched.tip_creation()
        self.assertEqual(len(receiver_tips), len(status['receivers']))
Beispiel #51
0
    def test_002_fail_submission_missing_required_file(self):
        mycopy = dict(self.dummyContext)
        mycopy['file_required'] = True
        del mycopy['id']

        for attrname in models.Context.localized_strings:
            mycopy[attrname] = u'⅛¡⅜⅛’ŊÑŦŊŊ’‘ª‘ª’‘ÐŊ'

        context_status = yield create_context(mycopy)
        submission_desc = dict(self.dummySubmission)

        submission_desc['context_id'] = context_status['id']
        submission_desc['finalize'] = True
        submission_desc['wb_fields'] = helpers.fill_random_fields(mycopy)
        yield self.assertFailure(
            submission.create_submission(submission_desc, finalize=True),
            errors.FileRequiredMissing)
Beispiel #52
0
    def setup_tip_environment(self):

        basehandler = MockHandler()

        stuff = u'⅛⅛⅛£"$"$¼³²¼²³¼²³“““““ð'
        for attrname in models.Context.localized_strings:
            self.tipContext[attrname] = stuff

        basehandler.validate_jmessage(self.tipContext,
                                      requests.adminContextDesc)

        self.context_desc = yield admin.create_context(self.tipContext)

        self.tipReceiver1['contexts'] = self.tipReceiver2['contexts'] = [
            self.context_desc['id']
        ]

        for attrname in models.Receiver.localized_strings:
            self.tipReceiver1[attrname] = stuff
            self.tipReceiver2[attrname] = stuff

        basehandler.validate_jmessage(self.tipReceiver1,
                                      requests.adminReceiverDesc)
        basehandler.validate_jmessage(self.tipReceiver2,
                                      requests.adminReceiverDesc)

        self.receiver1_desc = yield admin.create_receiver(self.tipReceiver1)
        self.receiver2_desc = yield admin.create_receiver(self.tipReceiver2)

        self.assertEqual(self.receiver1_desc['contexts'],
                         [self.context_desc['id']])

        dummySubmissionDict = self.get_dummy_submission(
            self.context_desc['id'], self.context_desc['fields'])
        basehandler.validate_jmessage(dummySubmissionDict,
                                      requests.wbSubmissionDesc)

        self.submission_desc = yield submission.create_submission(
            dummySubmissionDict, finalize=True)

        self.assertEqual(self.submission_desc['wb_fields'],
                         dummySubmissionDict['wb_fields'])
        self.assertEqual(self.submission_desc['mark'],
                         models.InternalTip._marker[1])
Beispiel #53
0
    def perform_submission(self):

        self.dummySubmission['context_id'] = self.dummyContext['id']
        self.dummySubmission['receivers'] = self.dummyContext['receivers']
        self.dummySubmission['wb_steps'] = yield fill_random_fields(self.dummyContext['id'])
        self.dummySubmission = yield create_submission(self.dummySubmission, False, 'en')

        yield self.emulate_file_upload(self.dummySubmission['id'])
        submission = yield update_submission(self.dummySubmission['id'], self.dummySubmission, True, 'en')
        self.dummyWBTip = yield create_whistleblower_tip(self.dummySubmission)

        yield delivery_sched.DeliverySchedule().operation()
        yield notification_sched.NotificationSchedule().operation()

        commentCreation = {
            'content': 'comment!',
        }

        messageCreation = {
            'content': 'message!',
        }

        rtips_desc = yield self.get_rtips()

        for rtip_desc in rtips_desc:
            yield rtip.create_comment_receiver(rtip_desc['receiver_id'],
                                               rtip_desc['rtip_id'],
                                               commentCreation)

            yield rtip.create_message_receiver(rtip_desc['receiver_id'],
                                               rtip_desc['rtip_id'],
                                               messageCreation)

        wbtips_desc = yield self.get_wbtips()

        for wbtip_desc in wbtips_desc:
            yield wbtip.create_comment_wb(wbtip_desc['wbtip_id'],
                                          commentCreation)

            for receiver_id in wbtip_desc['wbtip_receivers']:
                yield wbtip.create_message_wb(wbtip_desc['wbtip_id'], receiver_id, messageCreation)

        yield delivery_sched.DeliverySchedule().operation()
        yield notification_sched.NotificationSchedule().operation()
Beispiel #54
0
    def setup_tip_environment(self):

        basehandler = MockHandler()

        stuff = u'⅛⅛⅛£"$"$¼³²¼²³¼²³“““““ð'
        for attrname in models.Context.localized_strings:
            self.tipContext[attrname] = stuff

        basehandler.validate_jmessage(self.tipContext, requests.adminContextDesc)

        for idx, field in enumerate(self.dummyFields):
            f = yield create_field(field, 'en')
            self.dummyFields[idx]['id'] = f['id']

        self.tipContext['steps'][0]['children'] = [
            self.dummyFields[0], # Field 1
            self.dummyFields[1], # Field 2
            self.dummyFields[4]  # Generalities
        ]

        self.context_desc = yield admin.create_context(self.tipContext, 'en')

        self.tipReceiver1['contexts'] = self.tipReceiver2['contexts'] = [ self.context_desc['id'] ]

        for attrname in models.Receiver.localized_strings:
            self.tipReceiver1[attrname] = stuff
            self.tipReceiver2[attrname] = stuff

        basehandler.validate_jmessage( self.tipReceiver1, requests.adminReceiverDesc )
        basehandler.validate_jmessage( self.tipReceiver2, requests.adminReceiverDesc )

        self.receiver1_desc = yield admin.create_receiver(self.tipReceiver1, 'en')
        self.receiver2_desc = yield admin.create_receiver(self.tipReceiver2, 'en')

        self.assertEqual(self.receiver1_desc['contexts'], [ self.context_desc['id']])

        dummySubmissionDict = yield self.get_dummy_submission(self.context_desc['id'])
        basehandler.validate_jmessage(dummySubmissionDict, requests.wbSubmissionDesc)

        self.submission_desc = yield submission.create_submission(dummySubmissionDict, True, 'en')

        self.assertEqual(self.submission_desc['wb_steps'], dummySubmissionDict['wb_steps'])
        self.assertEqual(self.submission_desc['mark'], u'finalize')
Beispiel #55
0
    def test_default_template_keywords(self):

        self._load_defaults()

        ### INITIALIZE BLOCK
        self.mockContext = helpers.MockDict().dummyContext
        self.mockReceiver = helpers.MockDict().dummyReceiver
        self.mockNode = helpers.MockDict().dummyNode

        self.createdContext = yield admin.create_context(self.mockContext)
        self.assertTrue(self.createdContext.has_key('id'))

        self.mockReceiver['contexts'] = [self.createdContext['id']]

        self.createdReceiver = yield admin.create_receiver(self.mockReceiver)
        self.assertTrue(self.createdReceiver.has_key('id'))

        self.createdNode = yield admin.update_node(self.mockNode)
        self.assertTrue(self.createdNode.has_key('version'))
        ### END OF THE INITIALIZE BLOCK

        # THE REAL CONVERSION TEST START HERE:
        self.mockSubmission = helpers.MockDict().dummySubmission
        self.mockSubmission['finalize'] = True
        self.mockSubmission['context_id'] = self.createdReceiver['contexts'][0]
        self.mockSubmission['receivers'] = [self.createdReceiver['id']]
        self.mockSubmission['wb_fields'] = helpers.fill_random_fields(
            self.createdContext)
        self.createdSubmission = yield submission.create_submission(
            self.mockSubmission, finalize=True)

        created_rtip = yield delivery_sched.tip_creation()
        self.assertEqual(len(created_rtip), 1)

        yield self._fill_event(u'encrypted_tip', 'Tip', created_rtip[0])

        # with the event, we can finally call the template filler
        gentext = Templating().format_template(
            self.templates['default_ETNT.txt'], self.event)

        self.assertSubstring(self.createdContext['name'], gentext)
        self.assertSubstring(created_rtip[0], gentext)
        self.assertSubstring(self.createdNode['public_site'], gentext)
Beispiel #56
0
    def test_006_fail_create_huge_submission(self):
        self.assertTrue(len(SubmissionTest.context_used['id']) > 1)

        submission_request = dict(
            self.get_dummy_submission(SubmissionTest.context_used['id'],
                                      SubmissionTest.context_used['fields']))

        submission_request['receivers'] = [SubmissionTest.receiver_used['id']]
        submission_request['context_id'] = SubmissionTest.context_used['id']

        for key in submission_request['wb_fields'].keys():
            submission_request['wb_fields'][key] = {
                u'value': unicode("You know nothing John Snow" * 100 * 100),
                u'answer_order': 0
            }

        submission_request['finalize'] = True

        yield self.assertFailure(
            submission.create_submission(submission_request, finalize=True),
            InvalidInputFormat)
Beispiel #57
0
    def test_008_update_submission(self):
        submission_desc = dict(self.dummySubmission)
        submission_desc['finalize'] = False
        submission_desc['context_id'] = self.dummyContext['id']
        submission_desc['id'] = submission_desc['mark'] = None

        status = yield submission.create_submission(submission_desc,
                                                    finalize=False)

        status['wb_fields'] = helpers.fill_random_fields(self.dummyContext)
        status['finalize'] = True

        status = yield submission.update_submission(status['id'],
                                                    status,
                                                    finalize=True)

        receipt = yield submission.create_whistleblower_tip(status)
        wb_access_id = yield authentication.login_wb(receipt)

        wb_tip = yield wbtip.get_internaltip_wb(wb_access_id)

        self.assertTrue(wb_tip.has_key('fields'))
Beispiel #58
0
    def test_010_fields_validator_all_fields(self):

        sbmt = dict(self.dummySubmission)

        sbmt['wb_fields'] = {}
        i = 0
        for sf in self.dummyContext['fields']:
            assert (sf['type'] == u'text' or sf['type'] == u'textarea'), \
                    "Dummy fields had only 'text' when this test has been dev"

            sbmt['wb_fields'].update(
                {sf['key']: {
                     u'value': "something",
                     u'answer_order': i
                 }})

            i += 1

        try:
            status = yield submission.create_submission(sbmt, finalize=True)
            self.assertEqual(status['wb_fields'], sbmt['wb_fields'])
        except Exception as excep:
            print "Unexpected error: %s", excep
            self.assertTrue(False)