blob: 1f71435e6a9315052dddc1758d3867285e25ec82 [file] [log] [blame]
Adrià Vilanova Martínezf19ea432024-01-23 20:20:52 +01001# Copyright 2016 The Chromium Authors
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
Copybara854996b2021-09-07 19:36:02 +00004
5"""Tests for project handlers that redirect."""
6from __future__ import print_function
7from __future__ import division
8from __future__ import absolute_import
9
Adrià Vilanova Martínezde942802022-07-15 14:06:55 +020010from six.moves import http_client
Copybara854996b2021-09-07 19:36:02 +000011import unittest
12
Adrià Vilanova Martínezf19ea432024-01-23 20:20:52 +010013import flask
Copybara854996b2021-09-07 19:36:02 +000014
15from framework import urls
16from project import redirects
17from services import service_manager
18from testing import fake
19from testing import testing_helpers
20
21
22class WikiRedirectTest(unittest.TestCase):
23
24 def setUp(self):
25 self.services = service_manager.Services()
Adrià Vilanova Martínezf19ea432024-01-23 20:20:52 +010026 self.servlet = redirects.WikiRedirect(services=self.services)
27 self.servlet.response = flask.Response()
Copybara854996b2021-09-07 19:36:02 +000028 self.project = fake.Project()
29 self.servlet.mr = testing_helpers.MakeMonorailRequest(
30 project=self.project)
31
32 def testRedirect_NoSuchProject(self):
33 """Visiting a project that we don't host is 404."""
34 self.servlet.mr.project = None
35 self.servlet.get()
Adrià Vilanova Martínezde942802022-07-15 14:06:55 +020036 self.assertEqual(http_client.NOT_FOUND, self.servlet.response.status_code)
Copybara854996b2021-09-07 19:36:02 +000037
38 def testRedirect_NoDocsSpecified(self):
39 """Visiting any old wiki URL goes to admin intro by default."""
40 self.servlet.get()
41 self.assertEqual(
Adrià Vilanova Martínezde942802022-07-15 14:06:55 +020042 http_client.MOVED_PERMANENTLY, self.servlet.response.status_code)
Copybara854996b2021-09-07 19:36:02 +000043 self.assertTrue(
44 self.servlet.response.location.endswith(urls.ADMIN_INTRO))
45
46 def testRedirect_DocsSpecified(self):
47 """Visiting any old wiki URL goes to project docs URL."""
48 self.project.docs_url = 'some_url'
49 self.servlet.get()
50 self.assertEqual(
Adrià Vilanova Martínezde942802022-07-15 14:06:55 +020051 http_client.MOVED_PERMANENTLY, self.servlet.response.status_code)
Copybara854996b2021-09-07 19:36:02 +000052 self.assertEqual('some_url', self.servlet.response.location)
53
54
55class SourceRedirectTest(unittest.TestCase):
56
57 def setUp(self):
58 self.services = service_manager.Services()
Adrià Vilanova Martínezf19ea432024-01-23 20:20:52 +010059 self.servlet = redirects.SourceRedirect(services=self.services)
60 self.servlet.response = flask.Response()
Copybara854996b2021-09-07 19:36:02 +000061 self.project = fake.Project()
62 self.servlet.mr = testing_helpers.MakeMonorailRequest(
63 project=self.project)
64
65 def testRedirect_NoSuchProject(self):
66 """Visiting a project that we don't host is 404."""
67 self.servlet.mr.project = None
68 self.servlet.get()
Adrià Vilanova Martínezde942802022-07-15 14:06:55 +020069 self.assertEqual(http_client.NOT_FOUND, self.servlet.response.status_code)
Copybara854996b2021-09-07 19:36:02 +000070
71 def testRedirect_NoSrcSpecified(self):
72 """Visiting any old source code URL goes to admin intro by default."""
73 self.servlet.get()
74 self.assertEqual(
Adrià Vilanova Martínezde942802022-07-15 14:06:55 +020075 http_client.MOVED_PERMANENTLY, self.servlet.response.status_code)
Copybara854996b2021-09-07 19:36:02 +000076 self.assertTrue(
77 self.servlet.response.location.endswith(urls.ADMIN_INTRO))
78
79 def testRedirect_SrcSpecified(self):
80 """Visiting any old source code URL goes to project source URL."""
81 self.project.source_url = 'some_url'
82 self.servlet.get()
83 self.assertEqual(
Adrià Vilanova Martínezde942802022-07-15 14:06:55 +020084 http_client.MOVED_PERMANENTLY, self.servlet.response.status_code)
Copybara854996b2021-09-07 19:36:02 +000085 self.assertEqual('some_url', self.servlet.response.location)