Projet

Général

Profil

0001-misc-use-legacy-urls-to-call-up-to-date-urls-64344.patch

Emmanuel Cazenave, 09 mai 2022 17:00

Télécharger (2,27 ko)

Voir les différences:

Subject: [PATCH] misc: use legacy urls to call up to date urls (#64344)

 chrono/utils/publik_urls.py | 12 +++++++++++-
 tests/settings.py           |  2 ++
 tests/test_requests.py      |  7 +++++++
 3 files changed, 20 insertions(+), 1 deletion(-)
chrono/utils/publik_urls.py
23 23
    if not url:
24 24
        return ''
25 25
    source_url = urllib.parse.urlparse(url)
26

  
26 27
    if source_url.scheme != 'publik':
27
        return url
28
        # search in legacy urls
29
        legacy_urls_mapping = getattr(settings, 'LEGACY_URLS_MAPPING', None)
30
        if not legacy_urls_mapping:
31
            return url
32
        splitted_url = urllib.parse.urlparse(url)
33
        hostname = splitted_url.netloc
34
        if hostname not in legacy_urls_mapping:
35
            return url
36
        return splitted_url._replace(netloc=legacy_urls_mapping[hostname]).geturl()
37

  
28 38
    known_services = getattr(settings, 'KNOWN_SERVICES', None)
29 39
    if not known_services:
30 40
        return url
tests/settings.py
29 29
    },
30 30
}
31 31

  
32
LEGACY_URLS_MAPPING = {'old.org': 'new.org'}
33

  
32 34
EXCEPTIONS_SOURCES = {}
33 35

  
34 36
SITE_BASE_URL = 'https://example.com'
tests/test_requests.py
145 145

  
146 146
        # check with unicode url
147 147
        assert requests.get('http://cache.example.org/éléphant').content == b'hello second world'
148

  
149

  
150
def test_requests_to_legacy_urls():
151
    with mock.patch('chrono.utils.requests_wrapper.RequestsSession.request') as requests_get:
152
        requests_get.return_value = mock.Mock(content=b'hello world', status_code=200)
153
        assert requests.get('http://old.org/').content == b'hello world'
154
        assert requests_get.call_args.args[1] == 'http://new.org/'
148
-