def test_no_redirect(self): """Should be able to skip redirects.""" resolver = get_resolver([no_redirect(r"^iam/the/walrus/$"), redirect(r"^iam/the/.*/$", "/coo/coo/cachoo/")]) middleware = RedirectsMiddleware(resolver) resp = middleware.process_request(self.rf.get("/iam/the/walrus/")) self.assertIsNone(resp) # including locale middleware = RedirectsMiddleware(resolver) resp = middleware.process_request(self.rf.get("/pt-BR/iam/the/walrus/")) self.assertIsNone(resp) resp = middleware.process_request(self.rf.get("/iam/the/marmot/")) eq_(resp.status_code, 301) eq_(resp["Location"], "/coo/coo/cachoo/")
def test_no_redirect(self): """Should be able to skip redirects.""" resolver = get_resolver([ no_redirect(r'^iam/the/walrus/$'), redirect(r'^iam/the/.*/$', '/coo/coo/cachoo/'), ]) middleware = RedirectsMiddleware(resolver) resp = middleware.process_request(self.rf.get('/iam/the/walrus/')) self.assertIsNone(resp) # including locale middleware = RedirectsMiddleware(resolver) resp = middleware.process_request(self.rf.get('/pt-BR/iam/the/walrus/')) self.assertIsNone(resp) resp = middleware.process_request(self.rf.get('/iam/the/marmot/')) eq_(resp.status_code, 301) eq_(resp['Location'], '/coo/coo/cachoo/')
def test_no_redirect(self): """Should be able to skip redirects.""" resolver = get_resolver([ no_redirect(r'^iam/the/walrus/$'), redirect(r'^iam/the/.*/$', '/coo/coo/cachoo/'), ]) middleware = RedirectsMiddleware(resolver) resp = middleware.process_request(self.rf.get('/iam/the/walrus/')) self.assertIsNone(resp) # including locale middleware = RedirectsMiddleware(resolver) resp = middleware.process_request(self.rf.get('/pt-BR/iam/the/walrus/')) self.assertIsNone(resp) resp = middleware.process_request(self.rf.get('/iam/the/marmot/')) assert resp.status_code == 301 assert resp['Location'] == '/coo/coo/cachoo/'
def test_match_flags(self): """ Should be able to set regex flags for redirect URL. """ resolver = get_resolver( [redirect(r"^iam/the/walrus/$", "/coo/coo/cachoo/"), no_redirect(r"^iam/the/walrus/$", re_flags="i")] ) middleware = RedirectsMiddleware(resolver) resp = middleware.process_request(self.rf.get("/IAm/The/Walrus/")) self.assertIsNone(resp) # also with locale resp = middleware.process_request(self.rf.get("/es-ES/Iam/The/Walrus/")) self.assertIsNone(resp) # sanity check resp = middleware.process_request(self.rf.get("/iam/the/walrus/")) eq_(resp.status_code, 301) eq_(resp["Location"], "/coo/coo/cachoo/")
def test_match_flags(self): """ Should be able to set regex flags for redirect URL. """ resolver = get_resolver([ redirect(r'^iam/the/walrus/$', '/coo/coo/cachoo/'), no_redirect(r'^iam/the/walrus/$', re_flags='i'), ]) middleware = RedirectsMiddleware(resolver) resp = middleware.process_request(self.rf.get('/IAm/The/Walrus/')) self.assertIsNone(resp) # also with locale resp = middleware.process_request(self.rf.get('/es-ES/Iam/The/Walrus/')) self.assertIsNone(resp) # sanity check resp = middleware.process_request(self.rf.get('/iam/the/walrus/')) eq_(resp.status_code, 301) eq_(resp['Location'], '/coo/coo/cachoo/')
def test_match_flags(self): """ Should be able to set regex flags for redirect URL. """ resolver = get_resolver([ redirect(r'^iam/the/walrus/$', '/coo/coo/cachoo/'), no_redirect(r'^iam/the/walrus/$', re_flags='i'), ]) middleware = RedirectsMiddleware(resolver) resp = middleware.process_request(self.rf.get('/IAm/The/Walrus/')) self.assertIsNone(resp) # also with locale resp = middleware.process_request(self.rf.get('/es-ES/Iam/The/Walrus/')) self.assertIsNone(resp) # sanity check resp = middleware.process_request(self.rf.get('/iam/the/walrus/')) assert resp.status_code == 301 assert resp['Location'] == '/coo/coo/cachoo/'
def test_no_redirect(self): """Should be able to skip redirects.""" resolver = get_resolver( [ no_redirect(r"^iam/the/walrus/$"), redirect(r"^iam/the/.*/$", "/coo/coo/cachoo/"), ] ) middleware = RedirectsMiddleware(resolver=resolver) resp = middleware.process_request(self.rf.get("/iam/the/walrus/")) self.assertIsNone(resp) # including locale middleware = RedirectsMiddleware(resolver=resolver) resp = middleware.process_request(self.rf.get("/pt-BR/iam/the/walrus/")) self.assertIsNone(resp) resp = middleware.process_request(self.rf.get("/iam/the/marmot/")) assert resp.status_code == 301 assert resp["Location"] == "/coo/coo/cachoo/"
def test_match_flags(self): """ Should be able to set regex flags for redirect URL. """ resolver = get_resolver( [ redirect(r"^iam/the/walrus/$", "/coo/coo/cachoo/"), no_redirect(r"^iam/the/walrus/$", re_flags="i"), ] ) middleware = RedirectsMiddleware(resolver=resolver) resp = middleware.process_request(self.rf.get("/IAm/The/Walrus/")) self.assertIsNone(resp) # also with locale resp = middleware.process_request(self.rf.get("/es-ES/Iam/The/Walrus/")) self.assertIsNone(resp) # sanity check resp = middleware.process_request(self.rf.get("/iam/the/walrus/")) assert resp.status_code == 301 assert resp["Location"] == "/coo/coo/cachoo/"
# bug 1017564 redirect( r'^mobile/.+/system-requirements/?$', 'https://support.mozilla.org/kb/will-firefox-work-my-mobile-device'), # bug 858315 redirect(r'^projects/devpreview/firstrun(?:/(?:index.html)?)?$', '/firefox/firstrun/'), redirect( r'^projects/devpreview/(?P<page>[\/\w\.-]+)?$', 'http://website-archive.mozilla.org/www.mozilla.org/devpreview_releasenotes/projects/devpreview/{page}' ), # bug 1001238, 1025056 no_redirect(r'^firefox/(24\.[5678]\.\d|28\.0)/releasenotes/?$'), # bug 1235082 no_redirect(r'^firefox/23\.0(\.1)?/releasenotes/?$'), # bug 947890, 1069902 redirect( r'^firefox/releases/(?P<v>[01]\.(?:.*))$', 'http://website-archive.mozilla.org/www.mozilla.org/firefox_releasenotes/en-US/firefox/releases/{v}' ), redirect( r'^(?P<path>(?:firefox|mobile)/(?:\d)\.(?:.*)/releasenotes(?:.*))$', 'http://website-archive.mozilla.org/www.mozilla.org/firefox_releasenotes/en-US/{path}' ), # # bug 988746, 989423, 994186, 1153351
# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at https://mozilla.org/MPL/2.0/. from bedrock.redirects.util import no_redirect, redirect redirectpatterns = ( # bug 1319207 # 'Firefox Focus' cannot be used in de locale due to legal constraints redirect(r"^de/privacy/firefox-focus/?", "/de/privacy/firefox-klar/", locale_prefix=False), # special de URL should not be accessible from other locales no_redirect(r"^de/privacy/firefox-klar/?", locale_prefix=False), redirect(r"^privacy/firefox-klar/?", "privacy.notices.firefox-focus"), # bug 1321033 - Hello EOL redirect(r"^privacy/firefox-hello/?$", "privacy.archive.hello-2016-03"), # bug 1394042 - Firefox Cloud Services redirect to Fx redirect(r"^privacy/firefox-cloud/?$", "privacy.notices.firefox"), # mozilla/bedrock/#5745 - archive cliqz policy redirect(r"^privacy/firefox-cliqz/?$", "privacy.archive.firefox-cliqz-2018-06"), # mozilla/bedrock/#7983 redirect(r"^/privacy/products/?$", "firefox.privacy.products"), # mozilla/bedrock/#11610 redirect(r"^privacy/firefox-os/?$", "privacy.archive.firefox-os-2022-05"), )
redirect(r'^firefox/(?P<num>vpat-[.1-5]+)(?:\.html)?$', 'http://website-archive.mozilla.org/www.mozilla.org/firefox_vpat/firefox-{num}.html'), redirect(r'^firefox/vpat(?:\.html)?', 'http://website-archive.mozilla.org/www.mozilla.org/firefox_vpat/firefox-vpat-3.html'), # bug 1017564 redirect(r'^mobile/.+/system-requirements/?$', 'https://support.mozilla.org/kb/will-firefox-work-my-mobile-device'), # bug 858315 redirect(r'^projects/devpreview/firstrun(?:/(?:index.html)?)?$', '/firefox/firstrun/'), redirect(r'^projects/devpreview/(?P<page>[\/\w\.-]+)?$', 'http://website-archive.mozilla.org/www.mozilla.org/devpreview_releasenotes/projects/devpreview/{page}'), # bug 1001238, 1025056 no_redirect(r'^firefox/(24\.[5678]\.\d|28\.0)/releasenotes/?$'), # bug 947890, 1069902 redirect(r'^firefox/releases/(?P<v>[01]\.(?:.*))$', 'http://website-archive.mozilla.org/www.mozilla.org/firefox_releasenotes/en-US/firefox/releases/{v}'), redirect(r'^(?P<path>(?:firefox|mobile)/(?:\d)\.(?:.*)/releasenotes(?:.*))$', 'http://website-archive.mozilla.org/www.mozilla.org/firefox_releasenotes/en-US/{path}'), # # bug 988746, 989423, 994186, 1153351 redirect(r'^mobile/(?P<v>2[38]\.0(?:\.\d)?|29\.0(?:beta|\.\d)?)/releasenotes/?$', '/firefox/android/{v}/releasenotes/'), redirect(r'^mobile/(?P<v>[3-9]\d\.\d(?:a2|beta|\.\d)?)/(?P<p>aurora|release)notes/?$', '/firefox/android/{v}/{p}notes/'), # bug 1041712, 1069335, 1069902 redirect(r'^(?P<prod>firefox|mobile)/(?P<vers>([0-9]|1[0-9]|2[0-8])\.(\d+(?:beta|a2|\.\d+)?))'
from bedrock.redirects.util import no_redirect, redirect redirectpatterns = ( # bug 1319207 # 'Firefox Focus' cannot be used in de locale due to legal constraints redirect(r'^de/privacy/firefox-focus/?', '/de/privacy/firefox-klar/', locale_prefix=False), # special de URL should not be accessible from other locales no_redirect(r'^de/privacy/firefox-klar/?', locale_prefix=False), redirect(r'^privacy/firefox-klar/?', 'privacy.notices.firefox-focus'), # bug 1321033 - Hello EOL redirect(r'^privacy/firefox-hello/?$', 'privacy.archive.hello-2016-03'), )
redirect(r'^mobile/(?P<channel>(?:beta|aurora)/)?notes/?$', '/firefox/android/{channel}notes/'), redirect(r'^firefox/(?P<channel>(?:beta|aurora|organizations)/)?system-requirements(\.html)?$', '/firefox/{channel}system-requirements/'), # bug 1155870 redirect(r'^firefox/os/(releases|notes)/?$', 'https://developer.mozilla.org/Firefox_OS/Releases'), redirect(r'^firefox/os/(?:release)?notes/(?P<v>[^/]+)/?$', 'https://developer.mozilla.org/Firefox_OS/Releases/{v}'), # bug 878871 redirect(r'^firefoxos', '/firefox/os/'), # bug 1438302 no_redirect(r'^firefox/download/thanks/$'), # Bug 1006616 redirect(r'^download/?$', 'firefox.new'), # Bug 1409554 redirect(r'^(firefox|mobile)/download/', 'firefox.new'), # bug 837883 redirect(r'^firefox/firefox\.exe$', 'mozorg.home', re_flags='i'), # bug 821006 redirect(r'^firefox/all(\.html)?$', 'firefox.all'), # bug 727561 redirect(r'^firefox/search(?:\.html)?$', 'firefox.new'),
"firefox.unsupported-systems"), # bug 736934, 860865, 1101220, 1153351 redirect(r"^mobile/(?P<channel>(?:beta|aurora)/)?notes/?$", "/firefox/android/{channel}notes/"), redirect( r"^firefox/(?P<channel>(?:beta|aurora|organizations)/)?system-requirements(\.html)?$", "/firefox/{channel}system-requirements/"), # bug 1155870 redirect(r"^firefox/os/(releases|notes)/?$", "https://developer.mozilla.org/Firefox_OS/Releases"), redirect(r"^firefox/os/(?:release)?notes/(?P<v>[^/]+)/?$", "https://developer.mozilla.org/Firefox_OS/Releases/{v}"), # bug 878871 redirect(r"^firefoxos", "/firefox/os/"), # bug 1438302 no_redirect(r"^firefox/download/thanks/?$"), # Bug 1006616 redirect(r"^download/?$", "firefox.new"), # Bug 1409554 redirect(r"^(firefox|mobile)/download", "firefox.new"), # bug 837883 redirect(r"^firefox/firefox\.exe$", "mozorg.home", re_flags="i"), # bug 821006 redirect(r"^firefox/all(\.html)?$", "firefox.all"), # bug 727561 redirect(r"^firefox/search(?:\.html)?$", "firefox.new"), # bug 860865, 1101220, issue 8096 redirect(r"^firefox/all-(?:beta|rc)(?:/|\.html)?$", "firefox.all", anchor="product-desktop-beta"), redirect(r"^firefox/all-aurora(?:/|\.html)?$",
redirect(r'^firefox/(?P<num>vpat-[.1-5]+)(?:\.html)?$', 'http://website-archive.mozilla.org/www.mozilla.org/firefox_vpat/firefox-{num}.html'), redirect(r'^firefox/vpat(?:\.html)?', 'http://website-archive.mozilla.org/www.mozilla.org/firefox_vpat/firefox-vpat-3.html'), # bug 1017564 redirect(r'^mobile/.+/system-requirements/?$', 'https://support.mozilla.org/kb/will-firefox-work-my-mobile-device'), # bug 858315 redirect(r'^projects/devpreview/firstrun(?:/(?:index.html)?)?$', '/firefox/firstrun/'), redirect(r'^projects/devpreview/(?P<page>.*)$', 'http://website-archive.mozilla.org/www.mozilla.org/devpreview_releasenotes/projects/devpreview/{page}'), # bug 1001238, 1025056 no_redirect(r'^firefox/24\.[5678]\.\d/releasenotes/?$'), # bug 947890, 1069902 redirect(r'^firefox/releases/(?P<v>[01]\.(?:.*))$', 'http://website-archive.mozilla.org/www.mozilla.org/firefox_releasenotes/en-US/firefox/releases/{v}'), redirect(r'^(?P<path>(?:firefox|mobile)/(?:\d)\.(?:.*)/releasenotes(?:.*))$', 'http://website-archive.mozilla.org/www.mozilla.org/firefox_releasenotes/en-US/{path}'), # # bug 988746, 989423, 994186, 1153351 redirect(r'^mobile/(?P<v>2[38]\.0(?:\.\d)?|29\.0(?:beta|\.\d)?)/releasenotes/?$', '/firefox/android/{v}/releasenotes/'), redirect(r'^mobile/(?P<v>[3-9]\d\.\d(?:a2|beta|\.\d)?)/(?P<p>aurora|release)notes/?$', '/firefox/android/{v}/{p}notes/'), # bug 1041712, 1069335, 1069902 redirect(r'^(?P<prod>firefox|mobile)/(?P<vers>([0-9]|1[0-9]|2[0-8])\.(\d+(?:beta|a2|\.\d+)?))'