test(spec): Control Server API secured via cross-pinning mTLS
. We are now leveraging nix for portable dependency handling. . There are now three types of tests: client, server and end-to-end. . server tests exercise the actual kapow server being tested, while the requests are performed using the test steps. . client tests exercise the actual kapow client being tested, while the requests are served using the test steps. . e2e test exercise the actual kapow program in its dual role of client and server (¡como tiene que ser!). Co-authored-by: Roberto Abdelkader Martínez Pérez <robertomartinezp@gmail.com>
This commit is contained in:
@@ -15,25 +15,43 @@
|
||||
#
|
||||
import tempfile
|
||||
import os
|
||||
import signal
|
||||
from contextlib import suppress
|
||||
|
||||
|
||||
def before_scenario(context, scenario):
|
||||
# Create the request_handler FIFO
|
||||
def tmpfifo():
|
||||
while True:
|
||||
context.handler_fifo_path = tempfile.mktemp() # Safe because using
|
||||
# mkfifo
|
||||
fifo_path = tempfile.mktemp() # The usage mkfifo make this safe
|
||||
try:
|
||||
os.mkfifo(context.handler_fifo_path)
|
||||
os.mkfifo(fifo_path)
|
||||
except OSError:
|
||||
# The file already exist
|
||||
pass
|
||||
else:
|
||||
break
|
||||
|
||||
return fifo_path
|
||||
|
||||
|
||||
def before_scenario(context, scenario):
|
||||
context.handler_fifo_path = tmpfifo()
|
||||
context.init_script_fifo_path = tmpfifo()
|
||||
|
||||
|
||||
def after_scenario(context, scenario):
|
||||
# Real Kapow! server being tested
|
||||
if hasattr(context, 'server'):
|
||||
context.server.terminate()
|
||||
context.server.wait()
|
||||
|
||||
os.unlink(context.handler_fifo_path)
|
||||
os.unlink(context.init_script_fifo_path)
|
||||
|
||||
# Mock HTTP server for testing
|
||||
if hasattr(context, 'httpserver'):
|
||||
context.response_ready.set()
|
||||
context.httpserver.shutdown()
|
||||
context.httpserver_thread.join()
|
||||
|
||||
if getattr(context, 'testing_handler_pid', None) is not None:
|
||||
with suppress(ProcessLookupError):
|
||||
os.kill(int(context.testing_handler_pid), signal.SIGTERM)
|
||||
|
||||
Reference in New Issue
Block a user