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])
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']
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'))
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'))
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])
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)
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)
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" )
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'])
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')
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')
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")
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)
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)
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'])
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" )
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'])
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 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_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)
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)
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)
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_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)
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]", )
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)
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)
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)
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']))
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)
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])
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()
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')
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)
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)
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'))
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)