def test_creating_dev_mode_task_will_create_the_correct_post_request(self):
        correct_queue_name = 'dummy_queue'
        dummy_url = '/dummy_handler'
        correct_payload = {
            'fn_identifier':
            (taskqueue_services.FUNCTION_ID_DELETE_EXPS_FROM_USER_MODELS),
            'args': [['1', '2', '3']],
            'kwargs': {}
        }

        correct_task_name = 'task1'

        def mock_create_task(queue_name,
                             url,
                             payload,
                             scheduled_for=None,
                             task_name=None):  # pylint: disable=unused-argument
            self.assertEqual(queue_name, correct_queue_name)
            self.assertEqual(url, dummy_url)
            self.assertEqual(payload, correct_payload)
            self.assertEqual(task_name, correct_task_name)

        swap_create_task = self.swap(dev_mode_taskqueue_services.CLIENT,
                                     'create_task', mock_create_task)
        with swap_create_task:
            dev_mode_taskqueue_services.create_http_task(
                correct_queue_name,
                dummy_url,
                payload=correct_payload,
                task_name=correct_task_name)
    def test_creating_dev_mode_task_will_create_the_correct_post_request(
            self) -> None:
        correct_queue_name = 'dummy_queue'
        dummy_url = '/dummy_handler'
        correct_payload = {
            'fn_identifier':
            (taskqueue_services.FUNCTION_ID_DELETE_EXPS_FROM_USER_MODELS),
            'args': [['1', '2', '3']],
            'kwargs': {}
        }

        correct_task_name = 'task1'

        # In the type annotation below, payload is of type Dict[str, Any]
        # because it mocks the behaviour of
        # dev_mode_taskqueue_services.CLIENT.create_task.
        def mock_create_task(
            queue_name: str,
            url: str,
            payload: Dict[str, Any],
            scheduled_for: Optional[datetime.datetime] = None,  # pylint: disable=unused-argument
            task_name: Optional[str] = None,
        ) -> None:
            self.assertEqual(queue_name, correct_queue_name)
            self.assertEqual(url, dummy_url)
            self.assertEqual(payload, correct_payload)
            self.assertEqual(task_name, correct_task_name)

        swap_create_task = self.swap(dev_mode_taskqueue_services.CLIENT,
                                     'create_task', mock_create_task)
        with swap_create_task:
            dev_mode_taskqueue_services.create_http_task(
                correct_queue_name,
                dummy_url,
                correct_payload,
                task_name=correct_task_name)