summaryrefslogtreecommitdiff
path: root/tests/unit/modules/test_vyos_facts.py
blob: 7eec8d40b75b15fdd73f3d7da44cdcddf8ed3a9a (plain)
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
# -*- coding: utf-8 -*-
from __future__ import absolute_import, division, print_function


__metaclass__ = type

import unittest

from unittest.mock import MagicMock

from ansible_collections.vyos.rest.plugins.modules.vyos_facts import (
    gather_bgp,
    gather_hostname,
    gather_interfaces,
    gather_logging,
    gather_users,
)

from .base import load_fixture


class TestVyOSFactsGather(unittest.TestCase):

    def setUp(self):
        self.mock_vyos = MagicMock()
        self.system_fixture = load_fixture("facts_system.json")
        self.interfaces_fixture = load_fixture("facts_interfaces.json")

    def test_gather_hostname(self):
        self.mock_vyos.get_config = MagicMock(return_value=self.system_fixture)
        result = gather_hostname(self.mock_vyos)
        self.assertEqual(result, "vyos-test")

    def test_gather_hostname_empty(self):
        self.mock_vyos.get_config = MagicMock(return_value={})
        result = gather_hostname(self.mock_vyos)
        self.assertEqual(result, "")

    def test_gather_interfaces(self):
        self.mock_vyos.get_config = MagicMock(return_value=self.interfaces_fixture)
        result = gather_interfaces(self.mock_vyos)
        self.assertIn("ethernet", result)
        self.assertIn("eth0", result["ethernet"])
        self.assertIn("eth1", result["ethernet"])
        self.assertEqual(result["ethernet"]["eth1"]["description"], "uplink")

    def test_gather_users(self):
        self.mock_vyos.get_config = MagicMock(
            return_value=self.system_fixture["login"],
        )
        result = gather_users(self.mock_vyos)
        names = [u["name"] for u in result]
        self.assertIn("vyos", names)
        self.assertIn("alice", names)
        alice = next(u for u in result if u["name"] == "alice")
        self.assertEqual(alice["full_name"], "Alice Smith")
        self.assertIn("alice-key", alice["public_keys"])

    def test_gather_users_empty(self):
        self.mock_vyos.get_config = MagicMock(return_value={})
        result = gather_users(self.mock_vyos)
        self.assertEqual(result, [])

    def test_gather_users_none(self):
        self.mock_vyos.get_config = MagicMock(return_value=None)
        result = gather_users(self.mock_vyos)
        self.assertEqual(result, [])

    def test_gather_bgp(self):
        data = {"system-as": "65000", "parameters": {"router-id": "192.0.1.1"}}
        self.mock_vyos.get_config = MagicMock(return_value=data)
        result = gather_bgp(self.mock_vyos)
        self.assertEqual(result["system-as"], "65000")
        self.assertEqual(result["parameters"]["router-id"], "192.0.1.1")

    def test_gather_bgp_empty(self):
        self.mock_vyos.get_config = MagicMock(return_value={})
        result = gather_bgp(self.mock_vyos)
        self.assertEqual(result, {})

    def test_gather_logging(self):
        self.mock_vyos.get_config = MagicMock(
            return_value=self.system_fixture["syslog"],
        )
        result = gather_logging(self.mock_vyos)
        self.assertIn("local", result)
        self.assertIn("console", result)


if __name__ == "__main__":
    unittest.main()