blob: 0091571c8c470da333a680fc4f13c8246cfa8c6d [file] [log] [blame]
Copybara854996b2021-09-07 19:36:02 +00001# Copyright 2016 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style
3# license that can be found in the LICENSE file or at
4# https://developers.google.com/open-source/licenses/bsd
5
6"""Tests for project handlers that redirect."""
7from __future__ import print_function
8from __future__ import division
9from __future__ import absolute_import
10
Adrià Vilanova Martínezde942802022-07-15 14:06:55 +020011from six.moves import http_client
Copybara854996b2021-09-07 19:36:02 +000012import unittest
13
14import webapp2
15
16from framework import urls
17from project import redirects
18from services import service_manager
19from testing import fake
20from testing import testing_helpers
21
22
23class WikiRedirectTest(unittest.TestCase):
24
25 def setUp(self):
26 self.services = service_manager.Services()
27 self.servlet = redirects.WikiRedirect(
28 webapp2.Request.blank('url'), webapp2.Response(),
29 services=self.services)
30 self.project = fake.Project()
31 self.servlet.mr = testing_helpers.MakeMonorailRequest(
32 project=self.project)
33
34 def testRedirect_NoSuchProject(self):
35 """Visiting a project that we don't host is 404."""
36 self.servlet.mr.project = None
37 self.servlet.get()
Adrià Vilanova Martínezde942802022-07-15 14:06:55 +020038 self.assertEqual(http_client.NOT_FOUND, self.servlet.response.status_code)
Copybara854996b2021-09-07 19:36:02 +000039
40 def testRedirect_NoDocsSpecified(self):
41 """Visiting any old wiki URL goes to admin intro by default."""
42 self.servlet.get()
43 self.assertEqual(
Adrià Vilanova Martínezde942802022-07-15 14:06:55 +020044 http_client.MOVED_PERMANENTLY, self.servlet.response.status_code)
Copybara854996b2021-09-07 19:36:02 +000045 self.assertTrue(
46 self.servlet.response.location.endswith(urls.ADMIN_INTRO))
47
48 def testRedirect_DocsSpecified(self):
49 """Visiting any old wiki URL goes to project docs URL."""
50 self.project.docs_url = 'some_url'
51 self.servlet.get()
52 self.assertEqual(
Adrià Vilanova Martínezde942802022-07-15 14:06:55 +020053 http_client.MOVED_PERMANENTLY, self.servlet.response.status_code)
Copybara854996b2021-09-07 19:36:02 +000054 self.assertEqual('some_url', self.servlet.response.location)
55
56
57class SourceRedirectTest(unittest.TestCase):
58
59 def setUp(self):
60 self.services = service_manager.Services()
61 self.servlet = redirects.SourceRedirect(
62 webapp2.Request.blank('url'), webapp2.Response(),
63 services=self.services)
64 self.project = fake.Project()
65 self.servlet.mr = testing_helpers.MakeMonorailRequest(
66 project=self.project)
67
68 def testRedirect_NoSuchProject(self):
69 """Visiting a project that we don't host is 404."""
70 self.servlet.mr.project = None
71 self.servlet.get()
Adrià Vilanova Martínezde942802022-07-15 14:06:55 +020072 self.assertEqual(http_client.NOT_FOUND, self.servlet.response.status_code)
Copybara854996b2021-09-07 19:36:02 +000073
74 def testRedirect_NoSrcSpecified(self):
75 """Visiting any old source code URL goes to admin intro by default."""
76 self.servlet.get()
77 self.assertEqual(
Adrià Vilanova Martínezde942802022-07-15 14:06:55 +020078 http_client.MOVED_PERMANENTLY, self.servlet.response.status_code)
Copybara854996b2021-09-07 19:36:02 +000079 self.assertTrue(
80 self.servlet.response.location.endswith(urls.ADMIN_INTRO))
81
82 def testRedirect_SrcSpecified(self):
83 """Visiting any old source code URL goes to project source URL."""
84 self.project.source_url = 'some_url'
85 self.servlet.get()
86 self.assertEqual(
Adrià Vilanova Martínezde942802022-07-15 14:06:55 +020087 http_client.MOVED_PERMANENTLY, self.servlet.response.status_code)
Copybara854996b2021-09-07 19:36:02 +000088 self.assertEqual('some_url', self.servlet.response.location)