pytest-docker-haproxy-fixtures


Namepytest-docker-haproxy-fixtures JSON
Version 1.0.0 PyPI version JSON
download
home_pagehttps://github.com/crashvb/pytest-docker-haproxy-fixtures
SummaryPytest fixtures for testing with haproxy.
upload_time2024-08-12 23:44:18
maintainerNone
docs_urlNone
authorRichard Davis
requires_pythonNone
licenseApache License 2.0
keywords docker fixtures haproxy pytest
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # pytest-docker-haproxy-fixtures

[![pypi version](https://img.shields.io/pypi/v/pytest-docker-haproxy-fixtures.svg)](https://pypi.org/project/pytest-docker-haproxy-fixtures)
[![build status](https://github.com/crashvb/pytest-docker-haproxy-fixtures/actions/workflows/main.yml/badge.svg)](https://github.com/crashvb/pytest-docker-haproxy-fixtures/actions)
[![coverage status](https://coveralls.io/repos/github/crashvb/pytest-docker-haproxy-fixtures/badge.svg)](https://coveralls.io/github/crashvb/pytest-docker-haproxy-fixtures)
[![python versions](https://img.shields.io/pypi/pyversions/pytest-docker-haproxy-fixtures.svg?logo=python&logoColor=FBE072)](https://pypi.org/project/pytest-docker-haproxy-fixtures)
[![linting](https://img.shields.io/badge/linting-pylint-yellowgreen)](https://github.com/PyCQA/pylint)
[![code style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![license](https://img.shields.io/github/license/crashvb/pytest-docker-haproxy-fixtures.svg)](https://github.com/crashvb/pytest-docker-haproxy-fixtures/blob/master/LICENSE.md)

## Overview

Pytest fixtures to instantiate and utilize local haproxy docker containers, using [lovely-pytest-docker](https://pypi.org/project/lovely-pytest-docker) and [docker-py](https://pypi.org/project/docker-py), for testing.

## Getting Started

Update <tt>setup.py</tt> to include:

```python
from distutils.core import setup

setup(
	tests_require=["pytest-docker-haproxy-fixtures"]
)
```

All fixtures should be automatically included via the <tt>pytest11</tt> entry point.
```python
import requests
import pytest
from pytest_docker_haproxy_fixtures import HAProxyInsecure, HAProxySecure  # Optional, for typing

def test_haproxy_secure(haproxy_secure: HAProxySecure):
    response = requests.head(f"https://{haproxy_secure.endpoint}/",
        headers=haproxy_secure.auth_header,
        verify=str(haproxy_secure.cacerts),
    )
    assert response.status_code == 200

def test_haproxy_insecure(haproxy_insecure: HAProxyInsecure):
    response = requests.head(f"http://{haproxy_insecure.endpoint}/")
    assert response.status_code == 200
```

The `push_image` mark can optionally be added to stage images in the haproxy prior to testing. See [Markers](#markers) for details.

## Installation
### From [pypi.org](https://pypi.org/project/pytest-docker-haproxy-fixtures/)

```
$ pip install pytest_docker_haproxy_fixtures
```

### From source code

```bash
$ git clone https://github.com/crashvb/pytest-docker-haproxy-fixtures
$ cd pytest-docker-haproxy-fixtures
$ virtualenv env
$ source env/bin/activate
$ python -m pip install --editable .[dev]
```

## <a name="fixtures"></a>Fixtures

### <a name="haproxy_auth_header"></a> haproxy_auth_header

Retrieves an HTTP basic authentication header that is populated with credentials that can access the secure haproxy service. The credentials are retrieved from the [haproxy_password](#haproxy_password) and [haproxy_username](#haproxy_username) fixtures. This fixture is used to replicate docker images into the secure haproxy service.

### <a name="haproxy_cacerts"></a> haproxy_cacerts

Locates a user-defined CA trust store (<tt>tests/cacerts</tt>) to use to verify connections to the secure haproxy service. If one cannot be located, a temporary trust store is created containing certificates from <tt>certifi</tt> and the [haproxy_certs](#haproxy_certs) fixture. This fixture is used to instantiate the secure haproxy service.

### <a name="haproxy_certs"></a> haproxy_certs

Returns the paths of the self-signed certificate authority certificate, certificate, and private key that are used by the secure haproxy service. This fixture is used to instantiate the secure haproxy service.

#### NamedTuple Fields

The following fields are defined in the tuple provided by this fixture:

* **ca_certificate** - Path to the self-signed certificate authority certificate.
* **ca_private_key** - Path to the self-signed certificate authority private key.
* **certificate** - Path to the certificate.
* **private_key** - Path to the private key.

Typing is provided by `pytest_docker_haproxy_fixtures.HAProxyCerts`.

### <a name="haproxy_haproxycfg_insecure"></a> haproxy_haproxycfg_insecure

Provides the path to an insecure haproxy.cfg file that is used by the insecure haproxy service. If a user-defined haproxy.cfg file (<tt>tests/haproxy.insecure.cfg</tt>) can be located, it is used. Otherwise, an embedded configuration is copied to a temporary location and returned. This fixture is used to instantiate the insecure haproxy service.

### <a name="haproxy_haproxycfg_secure"></a> haproxy_haproxycfg_secure

Provides the path to a secure haproxy.cfg file that is used by the secure haproxy service. If a user-defined haproxy.cfg file (<tt>tests/haproxy.secure.cfg</tt>) can be located, it is used. Otherwise, an embedded configuration is copied to a temporary location and returned. This fixture is used to instantiate the secure haproxy service. The configuration will be treated as a template; the <tt>$PASSWORD</tt> and <tt>$USERNAME</tt> tokens will be populated with values provided by the [haproxy_password](#haproxy_password) and [haproxy_username](#haproxy_username) fixtures, as appropriate.

### <a name="haproxy_insecure"></a> haproxy_insecure

Configures and instantiates a haproxy service without TLS or authentication.

```python
import requests
from pytest_docker_haproxy_fixtures import HAProxyInsecure  # Optional, for typing

def test_haproxy_insecure(haproxy_insecure: HAProxyInsecure):
    response = requests.head(f"http://{haproxy_insecure.endpoint}/")
    assert response.status_code == 200
```

#### NamedTuple Fields

The following fields are defined in the tuple provided by this fixture:

* **docker_compose** - Path to the fully instantiated docker-compose configuration.
* **endpoint** - Endpoint of the insecure haproxy service.
* **endpoint_name** - Endpoint of the insecure haproxy service, by server name.
* **service_name** - Name of the service within the docker-compose configuration.

Typing is provided by `pytest_docker_haproxy_fixtures.HAProxyInsecure`.

### <a name="haproxy_password"></a> haproxy_password

Provides a generated password to use for authentication to the secure haproxy service. This fixture is used to replicate docker images into the secure haproxy service.

### <a name="haproxy_secure"></a> haproxy_secure

Configures and instantiates a TLS enabled haproxy service with HTTP basic authorization.

```python
import requests
from pytest_docker_haproxy_fixtures import HAProxySecure  # Optional, for typing

def test_haproxy_secure(haproxy_secure: HAProxySecure):
    response = requests.head(
        f"https://{haproxy_secure.endpoint}/",
        headers=haproxy_secure.auth_header,
        verify=str(haproxy_secure.cacerts),
    )
    assert response.status_code == 200
```

#### NamedTuple Fields

The following fields are defined in the tuple provided by this fixture:

* **auth_header** - from [haproxy_auth_header](#haproxy_auth_header).
* **cacerts** - from [haproxy_cacerts](#haproxy_cacerts).
* **certs** - from [haproxy_certs](#haproxy_certs).
* **docker_compose** - Path to the fully instantiated docker-compose configuration.
* **endpoint** - Endpoint of the secure haproxy service.
* **endpoint_name** - Endpoint of the secure haproxy service, by server name.
* **password** - from [haproxy_password](#haproxy_password).
* **service_name** - Name of the service within the docker-compose configuration.
* **ssl_context** - from [haproxy_ssl_context](#haproxy_ssl_context).
* **username** - from [haproxy_username](#haproxy_username).

Typing is provided by `pytest_docker_haproxy_fixtures.HAProxySecure`.

### <a name="haproxy_ssl_context"></a> haproxy_ssl_context

Provides an SSL context containing the CA trust store from the  [haproxy_cacerts](#haproxy_cacerts) fixture. This fixture is used to instantiate the secure haproxy service.

### <a name="haproxy_username"></a> haproxy_username

Provides a generated username to use for authentication to the secure haproxy service. This fixture is used to replicate docker images into the secure haproxy service.

### <a name="pdhf_docker_compose_insecure"></a> pdhf_docker_compose_insecure

This fixture uses the `docker_compose_files` fixture to locate a user-defined docker-compose configuration file (typically <tt>tests/docker-compose.yml</tt>) that contains the <tt>pytest-docker-haproxy-insecure</tt> service. If one cannot be located, an embedded configuration is copied to a temporary location and returned. This fixture is used to instantiate the insecure haproxy service. The configuration will be treated as a template; the <tt>$PATH_HAPROXYCFG</tt> token will be populated with the absolute path provided by the [haproxy_haproxycfg](#haproxy_haproxycfg) fixture.

### <a name="pdhf_docker_compose_secure"></a> pdhf_docker_compose_secure

This fixture uses the `docker_compose_files` fixture to locate a user-defined docker-compose configuration file (typically <tt>tests/docker-compose.yml</tt>) that contains the <tt>pytest-docker-haproxy-secure</tt> service. If one cannot be located, an embedded configuration is copied to a temporary location and returned. This fixture is used to instantiate the secure haproxy service. The configuration will be treated as a template; the <tt>$PATH_CERTIFICATE</tt>, <tt>$PATH_HAPROXYCFG</tt>, and <tt>$PATH_KEY</tt> tokens will be populated with the absolute paths provided by the [haproxy_certs](#haproxy_certs) and [haproxy_haproxycfg](#haproxy_haproxycfg) fixtures, as appropriate.

## <a name="enumerated_fixtures"></a>Enumerated Fixtures

It is possible to instantiate multiple haproxy instances using the corresponding enumerated fixtures. All [fixtures](#fixtures) listed above have _*_list_ (e.g. `haproxy_secure` -> `haproxy_secure_list`) versions that will return enumerated lists of corresponding data type.

For example:

```python
import requests
from typing import List  # Optional, for typing
from pytest_docker_haproxy_fixtures import HAProxySecure  # Optional, for typing

def test_haproxy_secure_list(haproxy_secure_list: List[HAProxySecure]):
    for haproxy_secure in haproxy_secure_list:
        response = requests.head(
            f"https://{haproxy_secure.endpoint}/",
            headers=haproxy_secure.auth_header,
            verify=str(haproxy_secure.cacerts),
        )
        assert response.status_code == 200
```

It is possible to use both singular and enumerated fixtures within the same test context; however, the same values will be returned for the singular fixture as the first enumerated list value (i.e. haproxy_secure == haproxy_secure_list[0]). To avoid complications with lower layers, mainly docker-compose, and to allow for this interchangeability, caching is used internally.

By default, the scale factor of the enumerated instances is set to one (n=1). This value can be changed by overriding the `pdhf_scale_factor` fixture, as follows:

```python
import pytest

@pytest.fixture(scope="session")
def pdhf_scale_factor() -> int:
    return 4
```

This fixture will be used to scale both the insecure and secure docker registries.

## <a name="limitations"></a>Limitations

1. All the fixtures provided by this package are <tt>session</tt> scoped; and will only be executed once per test execution.
2. At most 10 insecure and 10 secure haproxy instances are supported using the embedded docker compose.

## Development

[Source Control](https://github.com/crashvb/pytest-docker-haproxy-fixtures)



            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/crashvb/pytest-docker-haproxy-fixtures",
    "name": "pytest-docker-haproxy-fixtures",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "docker fixtures haproxy pytest",
    "author": "Richard Davis",
    "author_email": "crashvb@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/6e/64/28220257e95d98f7bb1ac19fcb35e8d18039723af77536f00b284b62bca3/pytest_docker_haproxy_fixtures-1.0.0.tar.gz",
    "platform": null,
    "description": "# pytest-docker-haproxy-fixtures\n\n[![pypi version](https://img.shields.io/pypi/v/pytest-docker-haproxy-fixtures.svg)](https://pypi.org/project/pytest-docker-haproxy-fixtures)\n[![build status](https://github.com/crashvb/pytest-docker-haproxy-fixtures/actions/workflows/main.yml/badge.svg)](https://github.com/crashvb/pytest-docker-haproxy-fixtures/actions)\n[![coverage status](https://coveralls.io/repos/github/crashvb/pytest-docker-haproxy-fixtures/badge.svg)](https://coveralls.io/github/crashvb/pytest-docker-haproxy-fixtures)\n[![python versions](https://img.shields.io/pypi/pyversions/pytest-docker-haproxy-fixtures.svg?logo=python&logoColor=FBE072)](https://pypi.org/project/pytest-docker-haproxy-fixtures)\n[![linting](https://img.shields.io/badge/linting-pylint-yellowgreen)](https://github.com/PyCQA/pylint)\n[![code style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![license](https://img.shields.io/github/license/crashvb/pytest-docker-haproxy-fixtures.svg)](https://github.com/crashvb/pytest-docker-haproxy-fixtures/blob/master/LICENSE.md)\n\n## Overview\n\nPytest fixtures to instantiate and utilize local haproxy docker containers, using [lovely-pytest-docker](https://pypi.org/project/lovely-pytest-docker) and [docker-py](https://pypi.org/project/docker-py), for testing.\n\n## Getting Started\n\nUpdate <tt>setup.py</tt> to include:\n\n```python\nfrom distutils.core import setup\n\nsetup(\n\ttests_require=[\"pytest-docker-haproxy-fixtures\"]\n)\n```\n\nAll fixtures should be automatically included via the <tt>pytest11</tt> entry point.\n```python\nimport requests\nimport pytest\nfrom pytest_docker_haproxy_fixtures import HAProxyInsecure, HAProxySecure  # Optional, for typing\n\ndef test_haproxy_secure(haproxy_secure: HAProxySecure):\n    response = requests.head(f\"https://{haproxy_secure.endpoint}/\",\n        headers=haproxy_secure.auth_header,\n        verify=str(haproxy_secure.cacerts),\n    )\n    assert response.status_code == 200\n\ndef test_haproxy_insecure(haproxy_insecure: HAProxyInsecure):\n    response = requests.head(f\"http://{haproxy_insecure.endpoint}/\")\n    assert response.status_code == 200\n```\n\nThe `push_image` mark can optionally be added to stage images in the haproxy prior to testing. See [Markers](#markers) for details.\n\n## Installation\n### From [pypi.org](https://pypi.org/project/pytest-docker-haproxy-fixtures/)\n\n```\n$ pip install pytest_docker_haproxy_fixtures\n```\n\n### From source code\n\n```bash\n$ git clone https://github.com/crashvb/pytest-docker-haproxy-fixtures\n$ cd pytest-docker-haproxy-fixtures\n$ virtualenv env\n$ source env/bin/activate\n$ python -m pip install --editable .[dev]\n```\n\n## <a name=\"fixtures\"></a>Fixtures\n\n### <a name=\"haproxy_auth_header\"></a> haproxy_auth_header\n\nRetrieves an HTTP basic authentication header that is populated with credentials that can access the secure haproxy service. The credentials are retrieved from the [haproxy_password](#haproxy_password) and [haproxy_username](#haproxy_username) fixtures. This fixture is used to replicate docker images into the secure haproxy service.\n\n### <a name=\"haproxy_cacerts\"></a> haproxy_cacerts\n\nLocates a user-defined CA trust store (<tt>tests/cacerts</tt>) to use to verify connections to the secure haproxy service. If one cannot be located, a temporary trust store is created containing certificates from <tt>certifi</tt> and the [haproxy_certs](#haproxy_certs) fixture. This fixture is used to instantiate the secure haproxy service.\n\n### <a name=\"haproxy_certs\"></a> haproxy_certs\n\nReturns the paths of the self-signed certificate authority certificate, certificate, and private key that are used by the secure haproxy service. This fixture is used to instantiate the secure haproxy service.\n\n#### NamedTuple Fields\n\nThe following fields are defined in the tuple provided by this fixture:\n\n* **ca_certificate** - Path to the self-signed certificate authority certificate.\n* **ca_private_key** - Path to the self-signed certificate authority private key.\n* **certificate** - Path to the certificate.\n* **private_key** - Path to the private key.\n\nTyping is provided by `pytest_docker_haproxy_fixtures.HAProxyCerts`.\n\n### <a name=\"haproxy_haproxycfg_insecure\"></a> haproxy_haproxycfg_insecure\n\nProvides the path to an insecure haproxy.cfg file that is used by the insecure haproxy service. If a user-defined haproxy.cfg file (<tt>tests/haproxy.insecure.cfg</tt>) can be located, it is used. Otherwise, an embedded configuration is copied to a temporary location and returned. This fixture is used to instantiate the insecure haproxy service.\n\n### <a name=\"haproxy_haproxycfg_secure\"></a> haproxy_haproxycfg_secure\n\nProvides the path to a secure haproxy.cfg file that is used by the secure haproxy service. If a user-defined haproxy.cfg file (<tt>tests/haproxy.secure.cfg</tt>) can be located, it is used. Otherwise, an embedded configuration is copied to a temporary location and returned. This fixture is used to instantiate the secure haproxy service. The configuration will be treated as a template; the <tt>$PASSWORD</tt> and <tt>$USERNAME</tt> tokens will be populated with values provided by the [haproxy_password](#haproxy_password) and [haproxy_username](#haproxy_username) fixtures, as appropriate.\n\n### <a name=\"haproxy_insecure\"></a> haproxy_insecure\n\nConfigures and instantiates a haproxy service without TLS or authentication.\n\n```python\nimport requests\nfrom pytest_docker_haproxy_fixtures import HAProxyInsecure  # Optional, for typing\n\ndef test_haproxy_insecure(haproxy_insecure: HAProxyInsecure):\n    response = requests.head(f\"http://{haproxy_insecure.endpoint}/\")\n    assert response.status_code == 200\n```\n\n#### NamedTuple Fields\n\nThe following fields are defined in the tuple provided by this fixture:\n\n* **docker_compose** - Path to the fully instantiated docker-compose configuration.\n* **endpoint** - Endpoint of the insecure haproxy service.\n* **endpoint_name** - Endpoint of the insecure haproxy service, by server name.\n* **service_name** - Name of the service within the docker-compose configuration.\n\nTyping is provided by `pytest_docker_haproxy_fixtures.HAProxyInsecure`.\n\n### <a name=\"haproxy_password\"></a> haproxy_password\n\nProvides a generated password to use for authentication to the secure haproxy service. This fixture is used to replicate docker images into the secure haproxy service.\n\n### <a name=\"haproxy_secure\"></a> haproxy_secure\n\nConfigures and instantiates a TLS enabled haproxy service with HTTP basic authorization.\n\n```python\nimport requests\nfrom pytest_docker_haproxy_fixtures import HAProxySecure  # Optional, for typing\n\ndef test_haproxy_secure(haproxy_secure: HAProxySecure):\n    response = requests.head(\n        f\"https://{haproxy_secure.endpoint}/\",\n        headers=haproxy_secure.auth_header,\n        verify=str(haproxy_secure.cacerts),\n    )\n    assert response.status_code == 200\n```\n\n#### NamedTuple Fields\n\nThe following fields are defined in the tuple provided by this fixture:\n\n* **auth_header** - from [haproxy_auth_header](#haproxy_auth_header).\n* **cacerts** - from [haproxy_cacerts](#haproxy_cacerts).\n* **certs** - from [haproxy_certs](#haproxy_certs).\n* **docker_compose** - Path to the fully instantiated docker-compose configuration.\n* **endpoint** - Endpoint of the secure haproxy service.\n* **endpoint_name** - Endpoint of the secure haproxy service, by server name.\n* **password** - from [haproxy_password](#haproxy_password).\n* **service_name** - Name of the service within the docker-compose configuration.\n* **ssl_context** - from [haproxy_ssl_context](#haproxy_ssl_context).\n* **username** - from [haproxy_username](#haproxy_username).\n\nTyping is provided by `pytest_docker_haproxy_fixtures.HAProxySecure`.\n\n### <a name=\"haproxy_ssl_context\"></a> haproxy_ssl_context\n\nProvides an SSL context containing the CA trust store from the  [haproxy_cacerts](#haproxy_cacerts) fixture. This fixture is used to instantiate the secure haproxy service.\n\n### <a name=\"haproxy_username\"></a> haproxy_username\n\nProvides a generated username to use for authentication to the secure haproxy service. This fixture is used to replicate docker images into the secure haproxy service.\n\n### <a name=\"pdhf_docker_compose_insecure\"></a> pdhf_docker_compose_insecure\n\nThis fixture uses the `docker_compose_files` fixture to locate a user-defined docker-compose configuration file (typically <tt>tests/docker-compose.yml</tt>) that contains the <tt>pytest-docker-haproxy-insecure</tt> service. If one cannot be located, an embedded configuration is copied to a temporary location and returned. This fixture is used to instantiate the insecure haproxy service. The configuration will be treated as a template; the <tt>$PATH_HAPROXYCFG</tt> token will be populated with the absolute path provided by the [haproxy_haproxycfg](#haproxy_haproxycfg) fixture.\n\n### <a name=\"pdhf_docker_compose_secure\"></a> pdhf_docker_compose_secure\n\nThis fixture uses the `docker_compose_files` fixture to locate a user-defined docker-compose configuration file (typically <tt>tests/docker-compose.yml</tt>) that contains the <tt>pytest-docker-haproxy-secure</tt> service. If one cannot be located, an embedded configuration is copied to a temporary location and returned. This fixture is used to instantiate the secure haproxy service. The configuration will be treated as a template; the <tt>$PATH_CERTIFICATE</tt>, <tt>$PATH_HAPROXYCFG</tt>, and <tt>$PATH_KEY</tt> tokens will be populated with the absolute paths provided by the [haproxy_certs](#haproxy_certs) and [haproxy_haproxycfg](#haproxy_haproxycfg) fixtures, as appropriate.\n\n## <a name=\"enumerated_fixtures\"></a>Enumerated Fixtures\n\nIt is possible to instantiate multiple haproxy instances using the corresponding enumerated fixtures. All [fixtures](#fixtures) listed above have _*_list_ (e.g. `haproxy_secure` -> `haproxy_secure_list`) versions that will return enumerated lists of corresponding data type.\n\nFor example:\n\n```python\nimport requests\nfrom typing import List  # Optional, for typing\nfrom pytest_docker_haproxy_fixtures import HAProxySecure  # Optional, for typing\n\ndef test_haproxy_secure_list(haproxy_secure_list: List[HAProxySecure]):\n    for haproxy_secure in haproxy_secure_list:\n        response = requests.head(\n            f\"https://{haproxy_secure.endpoint}/\",\n            headers=haproxy_secure.auth_header,\n            verify=str(haproxy_secure.cacerts),\n        )\n        assert response.status_code == 200\n```\n\nIt is possible to use both singular and enumerated fixtures within the same test context; however, the same values will be returned for the singular fixture as the first enumerated list value (i.e. haproxy_secure == haproxy_secure_list[0]). To avoid complications with lower layers, mainly docker-compose, and to allow for this interchangeability, caching is used internally.\n\nBy default, the scale factor of the enumerated instances is set to one (n=1). This value can be changed by overriding the `pdhf_scale_factor` fixture, as follows:\n\n```python\nimport pytest\n\n@pytest.fixture(scope=\"session\")\ndef pdhf_scale_factor() -> int:\n    return 4\n```\n\nThis fixture will be used to scale both the insecure and secure docker registries.\n\n## <a name=\"limitations\"></a>Limitations\n\n1. All the fixtures provided by this package are <tt>session</tt> scoped; and will only be executed once per test execution.\n2. At most 10 insecure and 10 secure haproxy instances are supported using the embedded docker compose.\n\n## Development\n\n[Source Control](https://github.com/crashvb/pytest-docker-haproxy-fixtures)\n\n\n",
    "bugtrack_url": null,
    "license": "Apache License 2.0",
    "summary": "Pytest fixtures for testing with haproxy.",
    "version": "1.0.0",
    "project_urls": {
        "Bug Reports": "https://github.com/crashvb/pytest-docker-haproxy-fixtures/issues",
        "Homepage": "https://github.com/crashvb/pytest-docker-haproxy-fixtures",
        "Source": "https://github.com/crashvb/pytest-docker-haproxy-fixtures"
    },
    "split_keywords": [
        "docker",
        "fixtures",
        "haproxy",
        "pytest"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "80d1bc34f831d002f130eb3154feb4eb786bdffd59f30d8cd17096436fbc1c21",
                "md5": "89ba7955cab75a199e5e93d2beeebc0d",
                "sha256": "7bbe12d6a028894a8b053d07e07ddf935f4a2520325dc0d0ef90ef8647513aa1"
            },
            "downloads": -1,
            "filename": "pytest_docker_haproxy_fixtures-1.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "89ba7955cab75a199e5e93d2beeebc0d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 23349,
            "upload_time": "2024-08-12T23:44:16",
            "upload_time_iso_8601": "2024-08-12T23:44:16.158145Z",
            "url": "https://files.pythonhosted.org/packages/80/d1/bc34f831d002f130eb3154feb4eb786bdffd59f30d8cd17096436fbc1c21/pytest_docker_haproxy_fixtures-1.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6e6428220257e95d98f7bb1ac19fcb35e8d18039723af77536f00b284b62bca3",
                "md5": "5cea18d1ee8cf1c63bd5a4f5de1f497b",
                "sha256": "79be8d49398165c19d37cb303669e075af0bfdc946876836f296833917f4d0b4"
            },
            "downloads": -1,
            "filename": "pytest_docker_haproxy_fixtures-1.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "5cea18d1ee8cf1c63bd5a4f5de1f497b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 21457,
            "upload_time": "2024-08-12T23:44:18",
            "upload_time_iso_8601": "2024-08-12T23:44:18.396132Z",
            "url": "https://files.pythonhosted.org/packages/6e/64/28220257e95d98f7bb1ac19fcb35e8d18039723af77536f00b284b62bca3/pytest_docker_haproxy_fixtures-1.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-08-12 23:44:18",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "crashvb",
    "github_project": "pytest-docker-haproxy-fixtures",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pytest-docker-haproxy-fixtures"
}
        
Elapsed time: 0.52224s