Skip to content

Commit

Permalink
Merge branch 'master' into dependabot/pip/aioquic-0.9.22
Browse files Browse the repository at this point in the history
  • Loading branch information
jell-o-fishi committed Nov 28, 2023
2 parents 0a6a922 + a23f4dd commit bc338f6
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 10 deletions.
6 changes: 3 additions & 3 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@ asyncclick==8.1.3.4
asyncstdlib==3.10.9
coverage==6.5.0
coveralls==3.3.1
decoy==2.1.0
decoy==2.1.1
flake8==6.1.0
pytest-asyncio==0.21.1
pytest-cov==4.1.0
pytest-profiling==1.7.0
pytest-rerunfailures==12.0
pytest-rerunfailures==13.0
pytest-timeout==2.2.0
pytest-xdist==3.3.1
pytest-xdist==3.5.0
pytest==7.4.3
quart==0.19.3
reactivex==4.0.4
Expand Down
1 change: 1 addition & 0 deletions tests/tools/fixtures_aioquic.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ async def pipe_factory_quic(generate_test_certificates,
)

server: Optional[RSocketBase] = None
client: Optional[RSocketBase] = None
wait_for_server = Event()

def store_server(new_server):
Expand Down
5 changes: 4 additions & 1 deletion tests/tools/fixtures_http3.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ async def pipe_factory_http3(generate_test_certificates,
certificate, private_key = generate_test_certificates

server: Optional[RSocketBase] = None
client: Optional[RSocketBase] = None
wait_for_server = Event()

def store_server(new_server):
Expand All @@ -43,7 +44,9 @@ def store_server(new_server):
await wait_for_server.wait()
yield server, client
finally:
await server.close()
if server is not None:
await server.close()

assert_no_open_streams(client, server)

http3_server.close()
31 changes: 25 additions & 6 deletions tests/tools/fixtures_shared.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,23 @@
import datetime
import ipaddress
from typing import Optional

import pytest
from cryptography import x509
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import ec
from cryptography.hazmat.primitives.asymmetric.ec import generate_private_key, SECP256R1


def generate_certificate(*, alternative_names, common_name, hash_algorithm, key):
def dns_name_or_ip_address(name):
try:
ip = ipaddress.ip_address(name)
except ValueError:
return x509.DNSName(name)
else:
return x509.IPAddress(ip)


def generate_certificate(*, alternative_names: Optional[list], common_name: str, hash_algorithm, key):
subject = issuer = x509.Name(
[x509.NameAttribute(x509.NameOID.COMMON_NAME, common_name)]
)
Expand All @@ -19,22 +30,30 @@ def generate_certificate(*, alternative_names, common_name, hash_algorithm, key)
.not_valid_before(datetime.datetime.utcnow())
.not_valid_after(datetime.datetime.utcnow() + datetime.timedelta(days=10))
)

builder = builder.add_extension(
x509.SubjectAlternativeName([
x509.DNSName(u"localhost")
]),
critical=False
)

if alternative_names:
builder = builder.add_extension(
x509.SubjectAlternativeName(
[x509.DNSName(name) for name in alternative_names]
[dns_name_or_ip_address(name) for name in alternative_names]
),
critical=False,
)
cert = builder.sign(key, hash_algorithm)
return cert, key


def generate_ec_certificate(common_name, alternative_names=None, curve=ec.SECP256R1):
def generate_ec_certificate(common_name: str, alternative_names: Optional[list] = None, curve=SECP256R1):
if alternative_names is None:
alternative_names = []

key = ec.generate_private_key(curve=curve)
key = generate_private_key(curve=curve)
return generate_certificate(
alternative_names=alternative_names,
common_name=common_name,
Expand All @@ -45,4 +64,4 @@ def generate_ec_certificate(common_name, alternative_names=None, curve=ec.SECP25

@pytest.fixture(scope="session")
def generate_test_certificates():
return generate_ec_certificate(common_name="localhost")
return generate_ec_certificate(common_name='localhost')

0 comments on commit bc338f6

Please sign in to comment.