Merge "Normalize url without port with schema default port"

This commit is contained in:
Zuul 2019-05-27 19:49:42 +00:00 committed by Gerrit Code Review
commit 406a7ae873
2 changed files with 25 additions and 2 deletions

View File

@ -1111,8 +1111,10 @@ class BaseSearchCriteriaTest(BaseNetworkTest):
def get_bare_url(self, url):
base_url = self.client.base_url
self.assertTrue(url.startswith(base_url))
return url[len(base_url):]
base_url_normalized = utils.normalize_url(base_url)
url_normalized = utils.normalize_url(url)
self.assertTrue(url_normalized.startswith(base_url_normalized))
return url_normalized[len(base_url_normalized):]
@classmethod
def _extract_resources(cls, body):

View File

@ -21,9 +21,18 @@
import functools
import threading
import time
try:
import urlparse
except ImportError:
from urllib import parse as urlparse
import eventlet
SCHEMA_PORT_MAPPING = {
"http": 80,
"https": 443,
}
class classproperty(object):
def __init__(self, f):
@ -102,3 +111,15 @@ def override_class(overriden_class, overrider_class):
bases = (overrider_class, overriden_class)
overriden_class = type(name, bases, {})
return overriden_class
def normalize_url(url):
"""Normalize url without port with schema default port
"""
parse_result = urlparse.urlparse(url)
(scheme, netloc, url, params, query, fragment) = parse_result
port = parse_result.port
if scheme in SCHEMA_PORT_MAPPING and not port:
netloc = netloc + ":" + str(SCHEMA_PORT_MAPPING[scheme])
return urlparse.urlunparse((scheme, netloc, url, params, query, fragment))