Commit e5bb6936 authored by Dom Sekotill's avatar Dom Sekotill
Browse files

Move tests' request.Session completely within steps/request_steps.py

parent 8d339506
Loading
Loading
Loading
Loading
+0 −14
Original line number Diff line number Diff line
@@ -25,9 +25,7 @@ from behave.model import Feature
from behave.model import Scenario
from behave.runner import Context
from behave_utils import URL
from behave_utils import redirect
from behave_utils.mysql import snapshot_rollback
from requests.sessions import Session
from wp import running_site_fixture

if TYPE_CHECKING:
@@ -55,18 +53,6 @@ def before_scenario(context: ScenarioContext, scenario: Scenario) -> None:
	"""
	Setup tools for each scenario
	"""
	context.session = use_fixture(requests_session, context)


@fixture
def requests_session(context: ScenarioContext, /) -> Iterator[Session]:
	"""
	Create and configure a `requests` session for accessing site fixtures
	"""
	site = use_fixture(running_site_fixture, context)
	with Session() as session:
		redirect(session, site.url, site.address)
		yield session


@fixture
+25 −2
Original line number Diff line number Diff line
@@ -13,13 +13,19 @@ from __future__ import annotations
import json
from collections.abc import Collection
from typing import Any
from typing import Iterator
from typing import TypeVar

from behave import fixture
from behave import then
from behave import use_fixture
from behave import when
from behave.runner import Context
from behave_utils import URL
from behave_utils import PatternEnum
from behave_utils.http import redirect
from requests import Session
from wp import running_site_fixture

T = TypeVar("T")

@@ -87,12 +93,28 @@ class ResponseCode(int, PatternEnum):
		attr.update(additional)


@fixture
def requests_session(context: Context, /) -> Iterator[Session]:
	"""
	Create and configure a `requests` session for accessing site fixtures
	"""
	if hasattr(context, "session"):
		assert isinstance(context.session, Session)
		yield context.session
		return
	site = use_fixture(running_site_fixture, context)
	with Session() as context.session:
		redirect(context.session, site.url, site.address)
		yield context.session


@when("{url:URL} is requested")
def get_request(context: Context, url: URL) -> None:
	"""
	Assign the response from making a GET request to "url" to the context
	"""
	context.response = context.session.get(context.site.url / url, allow_redirects=False)
	session = use_fixture(requests_session, context)
	context.response = session.get(context.site.url / url, allow_redirects=False)


@when("data is sent with {method:Method} to {url:URL}")
@@ -102,7 +124,8 @@ def post_request(context: Context, method: Method, url: URL) -> None:
	"""
	if context.text is None:
		raise ValueError("Missing data, please add as text to step definition")
	context.response = context.session.request(
	session = use_fixture(requests_session, context)
	context.response = session.request(
		method.value,
		context.site.url / url,
		data=context.text.strip().format(context=context).encode("utf-8"),