new_contents: from mock import Mock
  from datetime import datetime, timedelta
  
  from celery.result import AsyncResult
  
  from tests import AsyncHTTPTestCase
  
  
  class AsyncApplyTests(AsyncHTTPTestCase):
      def test_async_apply(self):
          task = self._app.capp.tasks['foo'] = Mock()
          task.apply_async = Mock(return_value=AsyncResult(123))
          r = self.post('/api/task/async-apply/foo', body={})
  
          self.assertEqual(200, r.code)
          task.apply_async.assert_called_once_with(args=[], kwargs={})
  
      def test_async_apply_eta(self):
          task = self._app.capp.tasks['foo'] = Mock()
          task.apply_async = Mock(return_value=AsyncResult(123))
          tomorrow = datetime.utcnow() + timedelta(days=1)
          r = self.post('/api/task/async-apply/foo',
                        body='{"eta": "%s"}' % tomorrow)
  
          self.assertEqual(200, r.code)
          task.apply_async.assert_called_once_with(
                  args=[], kwargs={}, eta=tomorrow)
  
      def test_async_apply_countdown(self):
          task = self._app.capp.tasks['foo'] = Mock()
          task.apply_async = Mock(return_value=AsyncResult(123))
          r = self.post('/api/task/async-apply/foo',
                        body='{"countdown": "3"}')
  
          self.assertEqual(200, r.code)
          task.apply_async.assert_called_once_with(
                  args=[], kwargs={}, countdown=3)
  
      def test_async_apply_expires(self):
          task = self._app.capp.tasks['foo'] = Mock()
          task.apply_async = Mock(return_value=AsyncResult(123))
          r = self.post('/api/task/async-apply/foo',
                        body='{"expires": "60"}')
  
          self.assertEqual(200, r.code)
          task.apply_async.assert_called_once_with(
                  args=[], kwargs={}, expires=60)
  
      def test_async_apply_expires_datetime(self):
          task = self._app.capp.tasks['foo'] = Mock()
          task.apply_async = Mock(return_value=AsyncResult(123))
          tomorrow = datetime.utcnow() + timedelta(days=1)
          r = self.post('/api/task/async-apply/foo',
                        body='{"expires": "%s"}' % tomorrow)
  
          self.assertEqual(200, r.code)
          task.apply_async.assert_called_once_with(
                  args=[], kwargs={}, expires=tomorrow)
  
subject: Add tests for /api/task/async-apply