Merge branch 'main' into avm99963-monorail
Merged commit 34d8229ae2b51fb1a15bd208e6fe6185c94f6266
GitOrigin-RevId: 7ee0917f93a577e475f8e09526dd144d245593f4
diff --git a/redirect/test/redirect_utils_test.py b/redirect/test/redirect_utils_test.py
new file mode 100644
index 0000000..2ea65ce
--- /dev/null
+++ b/redirect/test/redirect_utils_test.py
@@ -0,0 +1,67 @@
+# Copyright 2023 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import unittest
+import werkzeug
+
+from mock import patch
+
+from redirect import redirect_utils
+from mock import patch
+
+
+class TestRedirectUtils(unittest.TestCase):
+
+ @patch("redirect.redirect_project_template.RedirectProjectTemplate.Get")
+ def testNewIssueParams(self, fake_redirectProjectTemplate):
+ fake_redirectProjectTemplate.return_value = None, None
+ params = werkzeug.datastructures.MultiDict(
+ [
+ ('summary', 'this is a summary'),
+ ('owner', 'test@google.com'),
+ ('description', 'task'),
+ ('cc', 'c1@google.com,c2@google.com'),
+ ])
+ expected = ('title=this+is+a+summary&description=task&'
+ 'cc=c1%40google.com%2Cc2%40google.com&assignee=test')
+
+ get = redirect_utils.GetNewIssueParams(params, 'project')
+ self.assertEqual(expected, get)
+
+ @patch("redirect.redirect_project_template.RedirectProjectTemplate.Get")
+ def testNewIssueParamsWithComponent(self, fake_redirectProjectTemplate):
+ fake_redirectProjectTemplate.return_value = '1', '2'
+ params = werkzeug.datastructures.MultiDict(
+ [('summary', 'this is a summary'), ('owner', 'test@google.com')])
+ expected = 'component=1&template=2&title=this+is+a+summary&assignee=test'
+
+ get = redirect_utils.GetNewIssueParams(params, 'project')
+ self.assertEqual(expected, get)
+
+ @patch("redirect.redirect_project_template.RedirectProjectTemplate.Get")
+ def testNewIssueParamsWithNoValidValue(self, fake_redirectProjectTemplate):
+ fake_redirectProjectTemplate.return_value = None, None
+ params = werkzeug.datastructures.MultiDict([('test', 'this is a test')])
+ expected = ''
+ get = redirect_utils.GetNewIssueParams(params, 'project')
+ self.assertEqual(expected, get)
+
+ @patch("redirect.redirect_custom_value.RedirectCustomValue.Get")
+ def testGetSearchQuery(self, fake_redirectcustomevalue):
+ fake_redirectcustomevalue.return_value = None, None
+ params = werkzeug.datastructures.MultiDict(
+ [('q', 'owner%3Ame%20has%3ARollout-Type')])
+ expected = 'q=is%3Aopen+assignee%3A%28me%29'
+
+ get = redirect_utils.GetSearchQuery('project', params)
+ self.assertEqual(expected, get)
+
+ @patch("redirect.redirect_custom_value.RedirectCustomValue.Get")
+ def testGetSearchQueryWithCanValue(self, fake_redirectcustomevalue):
+ fake_redirectcustomevalue.return_value = None, None
+ params = werkzeug.datastructures.MultiDict([('can', 4)])
+ expected = 'q=is%3Aopen+reporter%3A%28me%29'
+
+ get = redirect_utils.GetSearchQuery('project', params)
+ self.assertEqual(expected, get)