Tests: removed TestApplicationTLS.get_server_certificate().

distutils.version is replaced by packaging.version.  Also minor style fixes.
This commit is contained in:
Andrei Zeliankou
2022-01-31 23:10:30 +00:00
parent 485886d8f9
commit e53ce40c58
14 changed files with 61 additions and 60 deletions

View File

@@ -1,14 +1,16 @@
import re import re
import time import time
from distutils.version import LooseVersion
import pytest import pytest
from packaging import version
from unit.applications.lang.python import TestApplicationPython from unit.applications.lang.python import TestApplicationPython
class TestASGIApplication(TestApplicationPython): class TestASGIApplication(TestApplicationPython):
prerequisites = { prerequisites = {
'modules': {'python': lambda v: LooseVersion(v) >= LooseVersion('3.5')} 'modules': {
'python': lambda v: version.parse(v) >= version.parse('3.5')
}
} }
load_module = 'asgi' load_module = 'asgi'

View File

@@ -1,14 +1,16 @@
import os import os
from distutils.version import LooseVersion
from conftest import unit_stop from conftest import unit_stop
from packaging import version
from unit.applications.lang.python import TestApplicationPython from unit.applications.lang.python import TestApplicationPython
from unit.option import option from unit.option import option
class TestASGILifespan(TestApplicationPython): class TestASGILifespan(TestApplicationPython):
prerequisites = { prerequisites = {
'modules': {'python': lambda v: LooseVersion(v) >= LooseVersion('3.5')} 'modules': {
'python': lambda v: version.parse(v) >= version.parse('3.5')
}
} }
load_module = 'asgi' load_module = 'asgi'

View File

@@ -1,13 +1,14 @@
from distutils.version import LooseVersion
import pytest import pytest
from packaging import version
from unit.applications.lang.python import TestApplicationPython from unit.applications.lang.python import TestApplicationPython
from unit.option import option from unit.option import option
class TestASGITargets(TestApplicationPython): class TestASGITargets(TestApplicationPython):
prerequisites = { prerequisites = {
'modules': {'python': lambda v: LooseVersion(v) >= LooseVersion('3.5')} 'modules': {
'python': lambda v: version.parse(v) >= version.parse('3.5')
}
} }
load_module = 'asgi' load_module = 'asgi'

View File

@@ -1,8 +1,8 @@
import struct import struct
import time import time
from distutils.version import LooseVersion
import pytest import pytest
from packaging import version
from unit.applications.lang.python import TestApplicationPython from unit.applications.lang.python import TestApplicationPython
from unit.applications.websockets import TestApplicationWebsocket from unit.applications.websockets import TestApplicationWebsocket
from unit.option import option from unit.option import option
@@ -10,7 +10,9 @@ from unit.option import option
class TestASGIWebsockets(TestApplicationPython): class TestASGIWebsockets(TestApplicationPython):
prerequisites = { prerequisites = {
'modules': {'python': lambda v: LooseVersion(v) >= LooseVersion('3.5')} 'modules': {
'python': lambda v: version.parse(v) >= version.parse('3.5')
}
} }
load_module = 'asgi' load_module = 'asgi'

View File

@@ -7,10 +7,14 @@ class TestClientIP(TestApplicationPython):
def client_ip(self, options): def client_ip(self, options):
assert 'success' in self.conf( assert 'success' in self.conf(
{ {
"127.0.0.1:7081": "127.0.0.1:7081": {
{"client_ip": options, "pass": "applications/client_ip"}, "client_ip": options,
"[::1]:7082": "pass": "applications/client_ip",
{"client_ip": options, "pass": "applications/client_ip"}, },
"[::1]:7082": {
"client_ip": options,
"pass": "applications/client_ip",
},
}, },
'listeners', 'listeners',
), 'listeners configure' ), 'listeners configure'
@@ -48,9 +52,7 @@ class TestClientIP(TestApplicationPython):
), 'ipv6 default 2' ), 'ipv6 default 2'
assert self.get_xff('1.1.1.1') == '1.1.1.1', 'replace' assert self.get_xff('1.1.1.1') == '1.1.1.1', 'replace'
assert self.get_xff('blah') == '127.0.0.1', 'bad header 2' assert self.get_xff('blah') == '127.0.0.1', 'bad header 2'
assert ( assert self.get_xff('1.1.1.1', 'ipv6') == '::1', 'bad source ipv6 2'
self.get_xff('1.1.1.1', 'ipv6') == '::1'
), 'bad source ipv6 2'
self.client_ip({'header': 'X-Forwarded-For', 'source': '!127.0.0.1'}) self.client_ip({'header': 'X-Forwarded-For', 'source': '!127.0.0.1'})
@@ -118,10 +120,18 @@ class TestClientIP(TestApplicationPython):
def test_settings_client_ip_invalid(self): def test_settings_client_ip_invalid(self):
assert 'error' in self.conf( assert 'error' in self.conf(
{"http": {"client_ip": {'header': 'X-Forwarded-For', 'source': []}}}, {
"http": {
"client_ip": {'header': 'X-Forwarded-For', 'source': []}
}
},
'settings', 'settings',
), 'empty array source' ), 'empty array source'
assert 'error' in self.conf( assert 'error' in self.conf(
{"http":{"client_ip": {'header': 'X-Forwarded-For', 'source': 'a'}}}, {
"http": {
"client_ip": {'header': 'X-Forwarded-For', 'source': 'a'}
}
},
'settings', 'settings',
), 'empty source invalid' ), 'empty source invalid'

View File

@@ -1,7 +1,6 @@
import re import re
import pytest import pytest
from unit.applications.lang.go import TestApplicationGo from unit.applications.lang.go import TestApplicationGo

View File

@@ -1,5 +1,4 @@
from distutils.version import LooseVersion from packaging import version
from unit.applications.lang.node import TestApplicationNode from unit.applications.lang.node import TestApplicationNode
from unit.applications.websockets import TestApplicationWebsocket from unit.applications.websockets import TestApplicationWebsocket
@@ -7,7 +6,7 @@ from unit.applications.websockets import TestApplicationWebsocket
class TestNodeESModules(TestApplicationNode): class TestNodeESModules(TestApplicationNode):
prerequisites = { prerequisites = {
'modules': { 'modules': {
'node': lambda v: LooseVersion(v) >= LooseVersion("14.16.0") 'node': lambda v: version.parse(v) >= version.parse('14.16.0')
} }
} }

View File

@@ -103,10 +103,7 @@ class TestPerlApplication(TestApplicationPerl):
def test_perl_application_input_buffered_read(self): def test_perl_application_input_buffered_read(self):
self.load('input_buffered_read') self.load('input_buffered_read')
assert ( assert self.post(body='012345')['body'] == '012345', 'buffered read #1'
self.post(body='012345')['body'] == '012345'
), 'buffered read #1'
assert ( assert (
self.post(body='9876543210')['body'] == '9876543210' self.post(body='9876543210')['body'] == '9876543210'
), 'buffered read #2' ), 'buffered read #2'
@@ -114,10 +111,7 @@ class TestPerlApplication(TestApplicationPerl):
def test_perl_application_input_close(self): def test_perl_application_input_close(self):
self.load('input_close') self.load('input_close')
assert ( assert self.post(body='012345')['body'] == '012345', 'input close #1'
self.post(body='012345')['body'] == '012345'
), 'input close #1'
assert ( assert (
self.post(body='9876543210')['body'] == '9876543210' self.post(body='9876543210')['body'] == '9876543210'
), 'input close #2' ), 'input close #2'

View File

@@ -3,7 +3,8 @@ import shutil
import socket import socket
import pytest import pytest
from conftest import unit_run, unit_stop from conftest import unit_run
from conftest import unit_stop
from unit.applications.proto import TestApplicationProto from unit.applications.proto import TestApplicationProto
from unit.option import option from unit.option import option
from unit.utils import waitforfiles from unit.utils import waitforfiles

View File

@@ -82,7 +82,10 @@ class TestStaticFallback(TestApplicationProto):
def test_static_fallback_share(self, temp_dir): def test_static_fallback_share(self, temp_dir):
self.action_update( self.action_update(
{"share": "/blah", "fallback": {"share": temp_dir + "/assets$uri"},} {
"share": "/blah",
"fallback": {"share": temp_dir + "/assets$uri"},
}
) )
resp = self.get() resp = self.get()

View File

@@ -85,7 +85,10 @@ class TestStaticTypes(TestApplicationProto):
def test_static_types_regex(self, temp_dir): def test_static_types_regex(self, temp_dir):
self.action_update( self.action_update(
{"share": temp_dir + "/assets$uri", "types": ["~text/(html|plain)"]} {
"share": temp_dir + "/assets$uri",
"types": ["~text/(html|plain)"],
}
) )
assert self.get(url='/file.php')['status'] == 403, 'regex fail' assert self.get(url='/file.php')['status'] == 403, 'regex fail'
self.check_body('/file.html', '.html') self.check_body('/file.html', '.html')

View File

@@ -175,11 +175,13 @@ basicConstraints = critical,CA:TRUE"""
self.add_tls() self.add_tls()
cert_old = self.get_server_certificate() cert_old = ssl.get_server_certificate(('127.0.0.1', 7080))
self.certificate() self.certificate()
assert cert_old != self.get_server_certificate(), 'update certificate' assert cert_old != ssl.get_server_certificate(
('127.0.0.1', 7080)
), 'update certificate'
@pytest.mark.skip('not yet') @pytest.mark.skip('not yet')
def test_tls_certificate_key_incorrect(self): def test_tls_certificate_key_incorrect(self):
@@ -200,11 +202,13 @@ basicConstraints = critical,CA:TRUE"""
self.add_tls() self.add_tls()
cert_old = self.get_server_certificate() cert_old = ssl.get_server_certificate(('127.0.0.1', 7080))
self.add_tls(cert='new') self.add_tls(cert='new')
assert cert_old != self.get_server_certificate(), 'change certificate' assert cert_old != ssl.get_server_certificate(
('127.0.0.1', 7080)
), 'change certificate'
def test_tls_certificate_key_rsa(self): def test_tls_certificate_key_rsa(self):
self.load('empty') self.load('empty')

View File

@@ -103,20 +103,16 @@ class TestVariables(TestApplicationProto):
def test_variables_empty(self): def test_variables_empty(self):
def update_pass(prefix): def update_pass(prefix):
assert 'success' in self.conf( assert 'success' in self.conf(
{ {"listeners": {"*:7080": {"pass": prefix + "/$method"}}},
"listeners": {
"*:7080": {"pass": prefix + "/$method"},
},
},
), 'variables empty' ), 'variables empty'
update_pass("routes"); update_pass("routes")
assert self.get(url='/1')['status'] == 404 assert self.get(url='/1')['status'] == 404
update_pass("upstreams"); update_pass("upstreams")
assert self.get(url='/2')['status'] == 404 assert self.get(url='/2')['status'] == 404
update_pass("applications"); update_pass("applications")
assert self.get(url='/3')['status'] == 404 assert self.get(url='/3')['status'] == 404
def test_variables_invalid(self): def test_variables_invalid(self):

View File

@@ -52,21 +52,6 @@ class TestApplicationTLS(TestApplicationProto):
def post_ssl(self, **kwargs): def post_ssl(self, **kwargs):
return self.post(wrapper=self.context.wrap_socket, **kwargs) return self.post(wrapper=self.context.wrap_socket, **kwargs)
def get_server_certificate(self, addr=('127.0.0.1', 7080)):
ssl_list = dir(ssl)
if 'PROTOCOL_TLS' in ssl_list:
ssl_version = ssl.PROTOCOL_TLS
elif 'PROTOCOL_TLSv1_2' in ssl_list:
ssl_version = ssl.PROTOCOL_TLSv1_2
else:
ssl_version = ssl.PROTOCOL_TLSv1_1
return ssl.get_server_certificate(addr, ssl_version=ssl_version)
def openssl_conf(self, rewrite=False, alt_names=[]): def openssl_conf(self, rewrite=False, alt_names=[]):
conf_path = option.temp_dir + '/openssl.conf' conf_path = option.temp_dir + '/openssl.conf'