If someone can help me out my test is looking like...
# pact-python
j
If someone can help me out my test is looking like this:
Copy code
import atexit
import logging
import os
import requests
import pytest
import subprocess

from pact import Consumer, Like, Provider, Term, Format

from orders_service.orders import Order

log = logging.getLogger(__name__)
logging.basicConfig(level=<http://logging.INFO|logging.INFO>)

# If publishing the Pact(s), they will be submitted to the Pact Broker here.
# For the purposes of this example, the broker is started up as a fixture defined
# in conftest.py. For normal usage this would be self-hosted or using Pactflow.
PACT_BROKER_URL = "<https://johnwilliams.pactflow.io/>"
PACT_BROKER_USERNAME = "johnwilliams"
PACT_BROKER_PASSWORD = "secure123"

# Define where to run the mock server, for the consumer to connect to. These
# are the defaults so may be omitted
PACT_MOCK_HOST = "localhost"
PACT_MOCK_PORT = 1234

# Where to output the JSON Pact files created by any tests
PACT_DIR = os.path.dirname(os.path.realpath(__file__))


@pytest.fixture
def consumer() -> Order.cancel:
    return Order.cancel("http://{host}:{port}".format(host=PACT_MOCK_HOST, port=PACT_MOCK_PORT))


@pytest.fixture(scope="session")
def pact(request):
    """Setup a Pact Consumer, which provides the Provider mock service. This
    will generate and optionally publish Pacts to the Pact Broker"""
    # When publishing a Pact to the Pact Broker, a version number of the Consumer
    # is required, to be able to construct the compatability matrix between the
    # Consumer versions and Provider versions
    # version = request.config.getoption("--publish-pact")
    # publish = True if version else False

    pact = Consumer("UserServiceClient", version=1).has_pact_with(
        Provider("UserService"),
        host_name=PACT_MOCK_HOST,
        port=PACT_MOCK_PORT,
        pact_dir=PACT_DIR,
        publish_to_broker=True,
        broker_base_url=PACT_BROKER_URL,
        broker_username=PACT_BROKER_USERNAME,
        broker_password=PACT_BROKER_PASSWORD,
    )

    pact.start_service()

    # Make sure the Pact mocked provider is stopped when we finish, otherwise
    # port 1234 may become blocked
    atexit.register(pact.stop_service)

    yield pact

    # This will stop the Pact mock server, and if publish is True, submit Pacts
    # to the Pact Broker
    pact.stop_service()

    # Given we have cleanly stopped the service, we do not want to re-submit the
    # Pacts to the Pact Broker again atexit, since the Broker may no longer be
    # available if it has been started using the --run-broker option, as it will
    # have been torn down at that point
    pact.publish_to_broker = False


def test_cancel_scheduled_order(pact, consumer):
        expected = \
       {
          "id": "1e54e244-d0ab-46ed-a88a-b9e6037655ef",
          "order": [
            {
              "product": "coffee",
              "quantity": 1,
              "size": "small"
            }
          ],
          "scheduled": "Wed, 22 Jun 2022 09:21:26 GMT",
          "status": "cancelled"
        }


        (pact
        .given('A scheduled order exists and it is not cancelled already')
        .upon_receiving('a request for cancellation')
        .with_request('get', f'<http://localhost:3001/kitchen/schedule/{Like(12343)}/cancel>')
        .will_respond_with(200, body=Like(expected)))

        with pact:
            response = consumer.cancel()
            assert response['status'] == "cancelled"
        
        pact.verify()