blob: 09ad2cd8001d93cc63f214a806137b6522a3a25e [file] [log] [blame]
# Copyright 2020 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Tests for the cloud tasks helper module."""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from google.api_core import exceptions
import mock
import unittest
from framework import cloud_tasks_helpers
import settings
class CloudTasksHelpersTest(unittest.TestCase):
@mock.patch('framework.cloud_tasks_helpers._get_client')
def test_create_task(self, get_client_mock):
queue = 'somequeue'
task = {
'app_engine_http_request':
{
'http_method': 'GET',
'relative_uri': '/some_url'
}
}
cloud_tasks_helpers.create_task(task, queue=queue)
get_client_mock().queue_path.assert_called_with(
settings.app_id, settings.CLOUD_TASKS_REGION, queue)
get_client_mock().create_task.assert_called_once()
((_parent, called_task), _kwargs) = get_client_mock().create_task.call_args
self.assertEqual(called_task, task)
@mock.patch('framework.cloud_tasks_helpers._get_client')
def test_create_task_raises(self, get_client_mock):
task = {'app_engine_http_request': {}}
get_client_mock().create_task.side_effect = exceptions.GoogleAPICallError(
'oh no!')
with self.assertRaises(exceptions.GoogleAPICallError):
cloud_tasks_helpers.create_task(task)
@mock.patch('framework.cloud_tasks_helpers._get_client')
def test_create_task_retries(self, get_client_mock):
task = {'app_engine_http_request': {}}
cloud_tasks_helpers.create_task(task)
(_args, kwargs) = get_client_mock().create_task.call_args
self.assertEqual(kwargs.get('retry'), cloud_tasks_helpers._DEFAULT_RETRY)
def test_generate_simple_task(self):
actual = cloud_tasks_helpers.generate_simple_task(
'/alphabet/letters', {
'a': 'a',
'b': 'b'
})
expected = {
'app_engine_http_request':
{
'relative_uri': '/alphabet/letters',
'body': 'a=a&b=b',
'headers': {
'Content-type': 'application/x-www-form-urlencoded'
}
}
}
self.assertEqual(actual, expected)
actual = cloud_tasks_helpers.generate_simple_task('/alphabet/letters', {})
expected = {
'app_engine_http_request':
{
'relative_uri': '/alphabet/letters',
'body': '',
'headers': {
'Content-type': 'application/x-www-form-urlencoded'
}
}
}
self.assertEqual(actual, expected)