Esempio n. 1
0
    def test_http_task_scheduled_immediately_sends_correct_request(self):
        queue_name = 'queue'
        dummy_url = '/task/dummy_handler'
        payload = {
            'fn_identifier': taskqueue_services.FUNCTION_ID_DELETE_EXPLORATIONS,
            'args': [['1', '2', '3']],
            'kwargs': {}
        }
        task_name = 'task1'

        def mock_create_task(parent, task, retry=None):
            self.assertIsInstance(retry, retry_lib.Retry)
            self.assertEqual(
                parent,
                u'projects/dev-project-id/locations/us-central1/queues/queue')
            self.assertEqual(
                task,
                {
                    'http_request': {
                        'http_method': 1,
                        'url': '%s%s' % (feconf.OPPIA_SITE_URL, dummy_url),
                        'headers': {
                            'Content-type': 'application/json'
                        },
                        'body': json.dumps(payload).encode()
                    },
                    'name': task_name
                }
            )
            return self.Response(task_name)

        with self.swap(
            cloud_taskqueue_services.CLIENT, 'create_task', mock_create_task):
            cloud_taskqueue_services.create_http_task(
                queue_name, dummy_url, payload=payload, task_name=task_name)
Esempio n. 2
0
    def test_http_task_scheduled_for_later_sends_correct_request(self) -> None:
        queue_name = 'queue'
        dummy_url = '/task/dummy_handler'
        payload = {
            'fn_identifier':
            (taskqueue_services.FUNCTION_ID_DELETE_EXPS_FROM_USER_MODELS),
            'args': [['1', '2', '3']],
            'kwargs': {}
        }
        # Create Timestamp protobuf.
        datetime_to_execute_task = (datetime.datetime.utcnow() +
                                    datetime.timedelta(seconds=20))
        timestamp = timestamp_pb2.Timestamp()
        timestamp.FromDatetime(datetime_to_execute_task)
        task_name = 'task1'

        # In the type annotation below, task is of type Dict[str, Any]
        # because it mocks the behaviour of
        # cloud_taskqueue_services.CLIENT.create_task.
        def mock_create_task(
            parent: str,
            task: Dict[str, Any],
            retry: Optional[retry_lib.Retry] = None
        ) -> CloudTaskqueueServicesUnitTests.Response:
            self.assertIsInstance(retry, retry_lib.Retry)
            self.assertEqual(
                parent,
                u'projects/dev-project-id/locations/us-central1/queues/queue')
            self.assertEqual(
                task, {
                    'app_engine_http_request': {
                        'http_method':
                        (tasks_v2.types.target_pb2.HttpMethod.POST),
                        'relative_uri': dummy_url,
                        'headers': {
                            'Content-type': 'application/json'
                        },
                        'body': json.dumps(payload).encode()
                    },
                    'schedule_time': timestamp,
                    'name': task_name
                })
            return self.Response(task_name)

        with self.swap(cloud_taskqueue_services.CLIENT, 'create_task',
                       mock_create_task):
            cloud_taskqueue_services.create_http_task(
                queue_name,
                dummy_url,
                payload=payload,
                scheduled_for=datetime_to_execute_task,
                task_name=task_name)
Esempio n. 3
0
    def test_http_task_scheduled_for_later_sends_correct_request(self):
        queue_name = 'queue'
        dummy_url = '/task/dummy_handler'
        payload = {
            'fn_identifier':
            taskqueue_services.FUNCTION_ID_DELETE_EXPLORATIONS,
            'args': [['1', '2', '3']],
            'kwargs': {}
        }
        # Create Timestamp protobuf.
        datetime_to_execute_task = (datetime.datetime.utcnow() +
                                    datetime.timedelta(seconds=20))
        timestamp = timestamp_pb2.Timestamp()
        timestamp.FromDatetime(datetime_to_execute_task)
        task_name = 'task1'

        def mock_create_task(parent, task, retry):
            self.assertIsInstance(retry, retry_lib.Retry)
            self.assertEqual(
                parent,
                u'projects/dev-project-id/locations/us-central1/queues/queue')
            self.assertEqual(
                task, {
                    'app_engine_http_request': {
                        'http_method':
                        (tasks_v2.types.target_pb2.HttpMethod.POST),
                        'relative_uri': dummy_url,
                        'headers': {
                            'Content-type': 'application/json'
                        },
                        'body': json.dumps(payload).encode()
                    },
                    'schedule_time': timestamp,
                    'name': task_name
                })
            return self.Response(task_name)

        with self.swap(cloud_taskqueue_services.CLIENT, 'create_task',
                       mock_create_task):
            cloud_taskqueue_services.create_http_task(
                queue_name,
                dummy_url,
                payload=payload,
                scheduled_for=datetime_to_execute_task,
                task_name=task_name)
Esempio n. 4
0
    def test_http_task_scheduled_immediately_sends_correct_request(self):
        queue_name = 'queue'
        dummy_url = '/task/dummy_handler'
        payload = {
            'fn_identifier': (
                taskqueue_services.FUNCTION_ID_DELETE_EXPS_FROM_USER_MODELS),
            'args': [['1', '2', '3']],
            'kwargs': {}
        }
        task_name = 'task1'

        def mock_create_task(parent, task, retry=None):
            self.assertIsInstance(retry, retry_lib.Retry)
            self.assertEqual(
                parent,
                u'projects/dev-project-id/locations/us-central1/queues/queue')
            self.assertEqual(
                task,
                {
                    'app_engine_http_request': {
                        'http_method': (
                            tasks_v2.types.target_pb2.HttpMethod.POST),
                        'relative_uri': dummy_url,
                        'headers': {
                            'Content-type': 'application/json'
                        },
                        'body': json.dumps(payload).encode()
                    },
                    'name': task_name
                }
            )
            return self.Response(task_name)

        with self.swap(
            cloud_taskqueue_services.CLIENT, 'create_task', mock_create_task):
            cloud_taskqueue_services.create_http_task(
                queue_name, dummy_url, payload=payload, task_name=task_name)