Beispiel #1
0
    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/")
Beispiel #2
0
    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/')
Beispiel #3
0
    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/'
Beispiel #4
0
    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/")
Beispiel #5
0
    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/')
Beispiel #6
0
    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/'
Beispiel #7
0
    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/"
Beispiel #8
0
    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/"
Beispiel #9
0
    # 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
Beispiel #10
0
# 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"),
)
Beispiel #11
0
    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+)?))'
Beispiel #12
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'),
)
Beispiel #13
0
    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'),
Beispiel #14
0
          "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)?$",
Beispiel #15
0
    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+)?))'