File: test_statemgr.py

package info (click to toggle)
comitup 1.43-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,252 kB
  • sloc: python: 3,093; javascript: 1,261; sh: 95; makefile: 34
file content (84 lines) | stat: -rw-r--r-- 1,898 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
82
83
84
# Copyright (c) 2017-2019 David Steele <dsteele@gmail.com>
#
# SPDX-License-Identifier: GPL-2.0-or-later
# License-Filename: LICENSE

import importlib
from collections import namedtuple
from unittest.mock import Mock

import dbus.service
import pytest


def nullwrapper(*args, **kwargs):
    def _nullwrapper(fn):
        def wrapper(*wargs, **wkwargs):
            return fn(*wargs, **wkwargs)

        return wrapper

    return _nullwrapper


dbus.service.method = nullwrapper

sm = importlib.import_module("comitup.statemgr")


@pytest.fixture()
def statemgr_fxt(monkeypatch, request):
    monkeypatch.setattr("dbus.service.BusName", Mock())
    monkeypatch.setattr("dbus.service.Object", Mock())
    monkeypatch.setattr("dbus.service.Object", Mock())

    save_state = sm.states.com_state
    save_conn = sm.states.connection

    def fin():
        sm.states.com_state = save_state
        sm.states.connection = save_conn

    request.addfinalizer(fin)

    sm.states.com_state = "CONNECTED"
    sm.states.connection = "connection"


def test_sm_none(statemgr_fxt):
    pass


def test_sm_state(statemgr_fxt):
    obj = sm.Comitup()
    assert obj.state() == ["CONNECTED", "connection"]


@pytest.fixture()
def ap_name_fxt(monkeypatch):
    monkeypatch.setattr("socket.gethostname", Mock(return_value="host"))

    return None


Case = namedtuple("Case", ["input", "out"])


@pytest.mark.parametrize(
    "case",
    [
        Case("comitup-<nnn>", "comitup-123"),
        Case("<n>", "1"),
        Case("<nn>", "12"),
        Case("<nnn>", "123"),
        Case("<nnnn>", "1234"),
        Case("<nnnnn>", "<nnnnn>"),
        Case("A<n>", "A1"),
        Case("<n>A", "1A"),
        Case("<hostname>", "host"),
        Case("<hostname>-<n>", "host-1"),
        Case("<bogus>", "<bogus>"),
    ],
)
def test_expand_ap(ap_name_fxt, case):
    assert sm.expand_ap(case.input, "1234") == case.out