141 lines
5.6 KiB
Python
141 lines
5.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Copyright (c) 2015 Ian Cordasco
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
# implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
|
|
class BaseTestParsesURIs:
|
|
test_class = None
|
|
|
|
"""Tests for self.test_class handling of URIs."""
|
|
def test_handles_basic_uri(self, basic_uri):
|
|
"""Test that self.test_class can handle a simple URI."""
|
|
uri = self.test_class.from_string(basic_uri)
|
|
assert uri.scheme == 'http'
|
|
assert uri.authority == basic_uri[7:] # len('http://')
|
|
assert uri.host == uri.authority
|
|
assert uri.path is None
|
|
assert uri.query is None
|
|
assert uri.fragment is None
|
|
assert uri.port is None
|
|
assert uri.userinfo is None
|
|
|
|
def test_handles_basic_uri_with_port(self, basic_uri_with_port):
|
|
"""Test that self.test_class can handle a simple URI with a port."""
|
|
uri = self.test_class.from_string(basic_uri_with_port)
|
|
assert uri.scheme == 'ftp'
|
|
assert uri.authority == basic_uri_with_port[6:]
|
|
assert uri.host != uri.authority
|
|
assert str(uri.port) == '21'
|
|
assert uri.path is None
|
|
assert uri.query is None
|
|
assert uri.fragment is None
|
|
assert uri.userinfo is None
|
|
|
|
def test_handles_uri_with_port_and_userinfo(
|
|
self, uri_with_port_and_userinfo):
|
|
"""
|
|
Test that self.test_class can handle a URI with a port and userinfo.
|
|
"""
|
|
uri = self.test_class.from_string(uri_with_port_and_userinfo)
|
|
assert uri.scheme == 'ssh'
|
|
# 6 == len('ftp://')
|
|
assert uri.authority == uri_with_port_and_userinfo[6:]
|
|
assert uri.host != uri.authority
|
|
assert str(uri.port) == '22'
|
|
assert uri.path is None
|
|
assert uri.query is None
|
|
assert uri.fragment is None
|
|
assert uri.userinfo == 'user:pass'
|
|
|
|
def test_handles_basic_uri_with_path(self, basic_uri_with_path):
|
|
"""Test that self.test_class can handle a URI with a path."""
|
|
uri = self.test_class.from_string(basic_uri_with_path)
|
|
assert uri.scheme == 'http'
|
|
assert basic_uri_with_path == (uri.scheme + '://' + uri.authority
|
|
+ uri.path)
|
|
assert uri.host == uri.authority
|
|
assert uri.path == '/path/to/resource'
|
|
assert uri.query is None
|
|
assert uri.fragment is None
|
|
assert uri.userinfo is None
|
|
assert uri.port is None
|
|
|
|
def test_handles_uri_with_path_and_query(self, uri_with_path_and_query):
|
|
"""
|
|
Test that self.test_class can handle a URI with a path and query.
|
|
"""
|
|
uri = self.test_class.from_string(uri_with_path_and_query)
|
|
assert uri.scheme == 'http'
|
|
assert uri.host == uri.authority
|
|
assert uri.path == '/path/to/resource'
|
|
assert uri.query == 'key=value'
|
|
assert uri.fragment is None
|
|
assert uri.userinfo is None
|
|
assert uri.port is None
|
|
|
|
def test_handles_uri_with_everything(self, uri_with_everything):
|
|
"""
|
|
Test that self.test_class can handle and with everything in it.
|
|
"""
|
|
uri = self.test_class.from_string(uri_with_everything)
|
|
assert uri.scheme == 'https'
|
|
assert uri.path == '/path/to/resource'
|
|
assert uri.query == 'key=value'
|
|
assert uri.fragment == 'fragment'
|
|
assert uri.userinfo == 'user:pass'
|
|
assert str(uri.port) == '443'
|
|
|
|
def test_handles_relative_uri(self, relative_uri):
|
|
"""Test that self.test_class can handle a relative URI."""
|
|
uri = self.test_class.from_string(relative_uri)
|
|
assert uri.scheme is None
|
|
assert uri.authority == relative_uri[2:]
|
|
|
|
|
|
class BaseTestUnsplits:
|
|
test_class = None
|
|
|
|
def test_basic_uri_unsplits(self, basic_uri):
|
|
uri = self.test_class.from_string(basic_uri)
|
|
assert uri.unsplit() == basic_uri
|
|
|
|
def test_basic_uri_with_port_unsplits(self, basic_uri_with_port):
|
|
uri = self.test_class.from_string(basic_uri_with_port)
|
|
assert uri.unsplit() == basic_uri_with_port
|
|
|
|
def test_uri_with_port_and_userinfo_unsplits(self,
|
|
uri_with_port_and_userinfo):
|
|
uri = self.test_class.from_string(uri_with_port_and_userinfo)
|
|
assert uri.unsplit() == uri_with_port_and_userinfo
|
|
|
|
def test_basic_uri_with_path_unsplits(self, basic_uri_with_path):
|
|
uri = self.test_class.from_string(basic_uri_with_path)
|
|
assert uri.unsplit() == basic_uri_with_path
|
|
|
|
def test_uri_with_path_and_query_unsplits(self, uri_with_path_and_query):
|
|
uri = self.test_class.from_string(uri_with_path_and_query)
|
|
assert uri.unsplit() == uri_with_path_and_query
|
|
|
|
def test_uri_with_everything_unsplits(self, uri_with_everything):
|
|
uri = self.test_class.from_string(uri_with_everything)
|
|
assert uri.unsplit() == uri_with_everything
|
|
|
|
def test_relative_uri_unsplits(self, relative_uri):
|
|
uri = self.test_class.from_string(relative_uri)
|
|
assert uri.unsplit() == relative_uri
|
|
|
|
def test_absolute_path_uri_unsplits(self, absolute_path_uri):
|
|
uri = self.test_class.from_string(absolute_path_uri)
|
|
assert uri.unsplit() == absolute_path_uri
|