diff --git a/tests/consumer/test_products_consumer.py b/tests/consumer/test_products_consumer.py index 8705685..2b50ae3 100644 --- a/tests/consumer/test_products_consumer.py +++ b/tests/consumer/test_products_consumer.py @@ -1,10 +1,7 @@ -"""pact test for product service client""" +"""pact test for product service client via ruby core""" -import json import logging import os -import requests -from requests.auth import HTTPBasicAuth import pytest from pact import Consumer, Like, Provider, Term, Format diff --git a/tests/consumer/test_products_consumer_v3.py b/tests/consumer/test_products_consumer_v3.py new file mode 100644 index 0000000..64d3d91 --- /dev/null +++ b/tests/consumer/test_products_consumer_v3.py @@ -0,0 +1,37 @@ +"""pact test for product service client via rust core""" + +import logging +from typing import Generator + +import pytest +from pact.v3.pact import Pact +from pact.v3.match import like +from src.consumer import ProductConsumer + +log = logging.getLogger(__name__) +logging.basicConfig(level=logging.INFO) + +@pytest.fixture(scope='session') +def pact() -> Generator[Pact, None, None]: + pact = Pact("pactflow-example-consumer-python-v3", "pactflow-example-provider-python-v3") + yield pact.with_specification("V4") + pact.write_file("./pacts") + +def test_get_product(pact) -> None: + expected = { + 'id': "27", + 'name': 'Margharita', + 'type': 'Pizza' + } + + (pact + .upon_receiving('a request to get a product') + .given('a product with ID 10 exists') + .with_request(method='GET', path='/product/10') + .will_respond_with(200) + .with_body(like(expected))) + + with pact.serve() as srv: + consumer = ProductConsumer(str(srv.url)) + user = consumer.get_product('10') + assert user.name == 'Margharita'