File: test_types.py

package info (click to toggle)
zabbix-cli 3.5.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 2,860 kB
  • sloc: python: 18,557; makefile: 3
file content (115 lines) | stat: -rw-r--r-- 4,293 bytes parent folder | download | duplicates (2)
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
from __future__ import annotations

from datetime import datetime

import pytest
from zabbix_cli.pyzabbix.enums import ProxyGroupState
from zabbix_cli.pyzabbix.types import CreateHostInterfaceDetails
from zabbix_cli.pyzabbix.types import DictModel
from zabbix_cli.pyzabbix.types import Event
from zabbix_cli.pyzabbix.types import GlobalMacro
from zabbix_cli.pyzabbix.types import Host
from zabbix_cli.pyzabbix.types import HostGroup
from zabbix_cli.pyzabbix.types import HostInterface
from zabbix_cli.pyzabbix.types import Image
from zabbix_cli.pyzabbix.types import ImportRules
from zabbix_cli.pyzabbix.types import Item
from zabbix_cli.pyzabbix.types import Macro
from zabbix_cli.pyzabbix.types import MacroBase
from zabbix_cli.pyzabbix.types import Maintenance
from zabbix_cli.pyzabbix.types import Map
from zabbix_cli.pyzabbix.types import MediaType
from zabbix_cli.pyzabbix.types import ProblemTag
from zabbix_cli.pyzabbix.types import Proxy
from zabbix_cli.pyzabbix.types import ProxyGroup
from zabbix_cli.pyzabbix.types import Role
from zabbix_cli.pyzabbix.types import Template
from zabbix_cli.pyzabbix.types import TemplateGroup
from zabbix_cli.pyzabbix.types import TimePeriod
from zabbix_cli.pyzabbix.types import Trigger
from zabbix_cli.pyzabbix.types import UpdateHostInterfaceDetails
from zabbix_cli.pyzabbix.types import User
from zabbix_cli.pyzabbix.types import Usergroup
from zabbix_cli.pyzabbix.types import UserMedia
from zabbix_cli.pyzabbix.types import ZabbixAPIBaseModel
from zabbix_cli.pyzabbix.types import ZabbixRight


@pytest.mark.parametrize(
    "model",
    [
        # TODO: replace with hypothesis tests when Pydantic v2 support is available
        # Test in order of definition in types.py
        ZabbixRight(permission=2, id="str"),
        User(userid="123", username="test"),
        Usergroup(name="test", usrgrpid="123", gui_access=0, users_status=0),
        Template(templateid="123", host="test"),
        TemplateGroup(groupid="123", name="test", uuid="test123"),
        HostGroup(name="test", groupid="123"),
        DictModel(),
        Host(hostid="123"),
        HostInterface(
            type=1, main=1, ip="127.0.0.1", dns="", port="10050", useip=1, bulk=1
        ),
        CreateHostInterfaceDetails(version=2),
        UpdateHostInterfaceDetails(),
        Proxy(proxyid="123", name="test", address="127.0.0.1"),
        ProxyGroup(
            proxy_groupid="123",
            name="test",
            description="yeah",
            failover_delay="60",
            min_online=1,
            state=ProxyGroupState.ONLINE,
        ),
        MacroBase(macro="foo", value="bar", type=0, description="baz"),
        Macro(
            hostid="123",
            hostmacroid="1234",
            macro="foo",
            value="bar",
            type=0,
            description="baz",
        ),
        GlobalMacro(
            globalmacroid="123g", macro="foo", value="bar", type=0, description="baz"
        ),
        Item(itemid="123"),
        Role(roleid="123", name="test", type=1, readonly=0),
        MediaType(mediatypeid="123", name="test", type=0),
        UserMedia(mediatypeid="123", sendto="foo@example.com"),
        TimePeriod(period=123, timeperiod_type=2),
        ProblemTag(tag="foo", operator=2, value="bar"),
        Maintenance(maintenanceid="123", name="test"),
        Event(
            eventid="source",
            object=1,
            objectid="123",
            source=2,
            acknowledged=0,
            clock=datetime.now(),
            name="test",
            severity=2,
        ),
        Trigger(triggerid="123"),
        Image(imageid="123", name="test", imagetype=1),
        Map(sysmapid="123", name="test", width=100, height=100),
        ImportRules.get(),
    ],
)
def test_model_dump(model: ZabbixAPIBaseModel) -> None:
    """Test that the model can be dumped to JSON."""
    try:
        model.model_dump_json()
    except Exception as e:
        pytest.fail(f"Failed to dump model {model} to JSON: {e}")

    try:
        model.model_dump_api()
    except Exception as e:
        pytest.fail(f"Failed to dump model {model} to API-compatible dict: {e}")

    try:
        model.model_dump()
    except Exception as e:
        pytest.fail(f"Failed to dump model {model} to dict: {e}")