Project import generated by Copybara.
GitOrigin-RevId: d9e9e3fb4e31372ec1fb43b178994ca78fa8fe70
diff --git a/framework/test/cloud_tasks_helpers_test.py b/framework/test/cloud_tasks_helpers_test.py
new file mode 100644
index 0000000..09ad2cd
--- /dev/null
+++ b/framework/test/cloud_tasks_helpers_test.py
@@ -0,0 +1,88 @@
+# 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)