Files
deb-python-rfc3986/tests/base.py
2015-07-04 21:16:04 -05:00

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