File: test_openapi.py

package info (click to toggle)
openapi-pydantic 0.5.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 744 kB
  • sloc: python: 4,392; makefile: 4
file content (81 lines) | stat: -rw-r--r-- 2,988 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
from typing import Callable

import pytest

from openapi_pydantic.compat import PYDANTIC_V2
from openapi_pydantic.v3 import v3_0, v3_1


@pytest.mark.parametrize("version", ["3.0.4", "3.1.1"])
def test_parse_with_callback(version: str) -> None:
    data = {
        "openapi": version,
        "info": {"title": "API with Callback", "version": ""},
        "paths": {
            "/create": {
                "post": {
                    "responses": {"200": {"description": "Success"}},
                    "callbacks": {
                        "event": {
                            "callback": {
                                "post": {
                                    "responses": {"200": {"description": "Success"}}
                                }
                            }
                        }
                    },
                }
            }
        },
    }

    if version == "3.0.4":
        model_validate_3_0: Callable[[dict], v3_0.OpenAPI] = getattr(
            v3_0.OpenAPI, "model_validate" if PYDANTIC_V2 else "parse_obj"
        )
        assert model_validate_3_0(data) == v3_0.OpenAPI(
            info=v3_0.Info(title="API with Callback", version=""),
            paths={
                "/create": v3_0.PathItem(
                    post=v3_0.Operation(
                        responses={"200": v3_0.Response(description="Success")},
                        callbacks={
                            "event": {
                                "callback": v3_0.PathItem(
                                    post=v3_0.Operation(
                                        responses={
                                            "200": v3_0.Response(description="Success")
                                        }
                                    )
                                )
                            }
                        },
                    )
                )
            },
        )
    else:
        model_validate_3_1: Callable[[dict], v3_1.OpenAPI] = getattr(
            v3_1.OpenAPI, "model_validate" if PYDANTIC_V2 else "parse_obj"
        )
        assert model_validate_3_1(data) == v3_1.OpenAPI(
            info=v3_1.Info(title="API with Callback", version=""),
            paths={
                "/create": v3_1.PathItem(
                    post=v3_1.Operation(
                        responses={"200": v3_1.Response(description="Success")},
                        callbacks={
                            "event": {
                                "callback": v3_1.PathItem(
                                    post=v3_1.Operation(
                                        responses={
                                            "200": v3_1.Response(description="Success")
                                        }
                                    )
                                )
                            }
                        },
                    )
                )
            },
        )