Projet

Général

Profil

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

Emmanuel Cazenave, 05 mai 2022 16:39

Télécharger (3,06 ko)

Voir les différences:

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

 tests/test_misc.py | 40 ++++++++++++++++++++++++++++++++++++++++
 wcs/qommon/misc.py |  8 +++++++-
 2 files changed, 47 insertions(+), 1 deletion(-)
tests/test_misc.py
589 589
    mock_request.assert_called_once_with(
590 590
        'GET', 'https://example.com/', cert=None, data=None, headers={}, proxies=None, timeout=42
591 591
    )
592

  
593

  
594
@mock.patch('requests.Session.request')
595
def test_http_request_url_switch(mock_request):
596
    response = {'err': 0, 'data': []}
597
    mock_json = mock.Mock(status_code=200)
598
    mock_json.json.return_value = response
599
    mock_request.return_value = mock_json
600
    pub = create_temporary_pub()
601
    pub.load_site_options()
602
    from django.conf import settings
603

  
604
    settings.REQUESTS_TIMEOUT = 28
605

  
606
    _http_request('https://example.com/')
607
    mock_request.assert_called_once_with(
608
        'GET', 'https://example.com/', cert=None, data=None, headers={}, proxies=None, timeout=28
609
    )
610
    mock_request.reset_mock()
611

  
612
    pub.site_options.add_section('legacy-urls')
613
    pub.site_options.set('legacy-urls', 'new.example.com', 'example.com,old.example.com')
614
    pub.site_options.set('legacy-urls', 'old.example.com', 'new.example.com')
615
    pub.site_options.set(
616
        'legacy-urls',
617
        'example.com',
618
        'new.example.com',
619
    )
620

  
621
    _http_request('https://example.com/')
622
    mock_request.assert_called_once_with(
623
        'GET', 'https://new.example.com/', cert=None, data=None, headers={}, proxies=None, timeout=28
624
    )
625
    mock_request.reset_mock()
626

  
627
    _http_request('https://old.example.com/')
628
    mock_request.assert_called_once_with(
629
        'GET', 'https://new.example.com/', cert=None, data=None, headers={}, proxies=None, timeout=28
630
    )
631
    mock_request.reset_mock()
wcs/qommon/misc.py
355 355
    url, method='GET', body=None, headers=None, cert_file=None, timeout=None, raise_on_http_errors=False
356 356
):
357 357
    headers = headers or {}
358
    get_publisher().reload_cfg()
358
    pub = get_publisher()
359
    pub.reload_cfg()
359 360

  
360 361
    splitted_url = urllib.parse.urlsplit(url)
361 362
    if splitted_url.scheme not in ('http', 'https'):
......
364 365
    hostname = splitted_url.netloc
365 366
    timeout = timeout or settings.REQUESTS_TIMEOUT
366 367

  
368
    new_hostname = pub.get_site_option(hostname, 'legacy-urls')
369
    if new_hostname:
370
        hostname = new_hostname
371
        url = splitted_url._replace(netloc=hostname).geturl()
372

  
367 373
    if cert_file is None:
368 374
        for url_prefix, cert in settings.REQUESTS_CERT.items():
369 375
            if url.startswith(url_prefix):
370
-