def test_source_is_deleted_while_logged_in(self, logger): """If a source is deleted by a journalist when they are logged in, a NoResultFound will occur. The source should be redirected to the index when this happens, and a warning logged.""" with self.client as client: codename = new_codename(client, session) resp = client.post('login', data=dict(codename=codename), follow_redirects=True) # Now the journalist deletes the source filesystem_id = crypto_util.hash_codename(codename) crypto_util.delete_reply_keypair(filesystem_id) source = Source.query.filter_by(filesystem_id=filesystem_id).one() db_session.delete(source) db_session.commit() # Source attempts to continue to navigate resp = client.post('/lookup', follow_redirects=True) self.assertEqual(resp.status_code, 200) self.assertIn('Submit documents for the first time', resp.data) self.assertNotIn('logged_in', session.keys()) self.assertNotIn('codename', session.keys()) logger.assert_called_once_with( "Found no Sources when one was expected: " "No row was found for one()")
def delete_collection(source_id): # Delete the source's collection of submissions worker.enqueue(store.delete_source_directory, source_id) # Delete the source's reply keypair crypto_util.delete_reply_keypair(source_id) # Delete their entry in the db source = get_source(source_id) db_session.delete(source) db_session.commit()
def delete_collection(filesystem_id): # Delete the source's collection of submissions job = worker.enqueue(srm, store.path(filesystem_id)) # Delete the source's reply keypair crypto_util.delete_reply_keypair(filesystem_id) # Delete their entry in the db source = get_source(filesystem_id) db_session.delete(source) db_session.commit() return job
def test_basic_encrypt_then_decrypt_multiple_recipients(self): source, codename = utils.db_helper.init_source() message = str(os.urandom(1)) ciphertext = crypto_util.encrypt( message, [crypto_util.getkey(source.filesystem_id), config.JOURNALIST_KEY], store.path(source.filesystem_id, 'somefile.gpg')) plaintext = crypto_util.decrypt(codename, ciphertext) self.assertEqual(message, plaintext) # Since there's no way to specify which key to use for # decryption to python-gnupg, we delete the `source`'s key and # ensure we can decrypt with the `config.JOURNALIST_KEY`. crypto_util.delete_reply_keypair(source.filesystem_id) plaintext_ = crypto_util.gpg.decrypt(ciphertext).data self.assertEqual(message, plaintext_)
def _source_delete_key(self): filesystem_id = crypto_util.hash_codename(self.source_name) crypto_util.delete_reply_keypair(filesystem_id)
def delete_collection(source_id): store.delete_source_directory(source_id) crypto_util.delete_reply_keypair(source_id) db.delete_source(source_id)
def test_delete_reply_keypair_no_key(self): """No exceptions should be raised when provided a filesystem id that does not exist. """ crypto_util.delete_reply_keypair('Reality Winner')
def test_delete_reply_keypair(self): source, _ = utils.db_helper.init_source() crypto_util.delete_reply_keypair(source.filesystem_id) self.assertIsNone(crypto_util.getkey(source.filesystem_id))