def _run_job(self, job_id): job_obj = self.registry('queue.job') job = job_obj.browse(self.cr, self.uid, job_id) (func_name, args, kwargs) = _unpickle(job.func) runnable_job = Job(func=func_name, args=args, kwargs=kwargs, priority=job.priority, eta=None, job_uuid=job.uuid, description=job.name) runnable_job.user_id = self.session.uid return runnable_job.perform(self.session)
def test_unpickle_not_readable(self): with self.assertRaises(NotReadableJobError): self.assertEqual(_unpickle('cucumber'))
def test_unpickle_whitelist(self): """ unpickling function/class that is in the whitelist is allowed """ arg = datetime(2016, 2, 10) pickled = cPickle.dumps(arg) self.assertEqual(_unpickle(pickled), arg)
def test_unpickle_safe(self): """ unpickling function decorated by @job is allowed """ pickled = cPickle.dumps(pickle_allowed_function) self.assertEqual(_unpickle(pickled), pickle_allowed_function)
def test_unpickle_unsafe(self): """ unpickling function not decorated by @job is forbidden """ pickled = cPickle.dumps(pickle_forbidden_function) with self.assertRaises(NotReadableJobError): _unpickle(pickled)
def test_unpickle(self): pickle = ("S'a small cucumber preserved in vinegar, " "brine, or a similar solution.'\np0\n.") self.assertEqual(_unpickle(pickle), 'a small cucumber preserved in vinegar, ' 'brine, or a similar solution.')