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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
|
# -*- coding: UTF-8 -*-
import pytest
from unittest.mock import MagicMock, patch
from librouteros.query import (
Query,
Key,
And,
Or,
AsyncQuery,
)
class Test_Query:
def setup_method(self):
self.query = Query(
path=MagicMock(),
api=MagicMock(),
keys=MagicMock(),
)
self.async_query = AsyncQuery(
path=MagicMock(),
api=MagicMock(),
keys=MagicMock(),
)
def test_after_init_query_is_empty_tuple(self):
assert self.query.query == tuple()
assert self.async_query.query == tuple()
def test_where_returns_self(self):
assert self.query.where() == self.query
assert self.async_query.where() == self.async_query
def test_where_chains_from_args(self):
self.query.where((1, 2, 3), (4, 5))
assert self.query.query == (1, 2, 3, 4, 5)
self.async_query.where((1, 2, 3), (4, 5))
assert self.async_query.query == (1, 2, 3, 4, 5)
@patch("librouteros.query.iter")
def test_iter_with_proplist(self, iter_mock):
self.query.keys = ("name", "disabled")
self.query.query = ("key1", "key2")
iter(self.query)
self.query.api.rawCmd.assert_called_once_with(
str(self.query.path.join.return_value),
"=.proplist=name,disabled",
"key1",
"key2",
)
def test_iter_with_proplist_async(self):
self.async_query.keys = ("name", "disabled")
self.async_query.query = ("key1", "key2")
self.async_query.__aiter__()
self.async_query.api.rawCmd.assert_called_once_with(
str(self.async_query.path.join.return_value),
"=.proplist=name,disabled",
"key1",
"key2",
)
@patch("librouteros.query.iter")
def test_iter_no_proplist(self, iter_mock):
self.query.keys = ()
self.query.query = ("key1", "key2")
iter(self.query)
self.query.api.rawCmd.assert_called_once_with(
str(self.query.path.join.return_value),
"key1",
"key2",
)
def test_iter_no_proplist_async(self):
self.async_query.keys = ()
self.async_query.query = ("key1", "key2")
self.async_query.__aiter__()
self.async_query.api.rawCmd.assert_called_once_with(
str(self.async_query.path.join.return_value),
"key1",
"key2",
)
class Test_Key:
def setup_method(self):
self.key = Key(
name="key_name",
)
@pytest.mark.parametrize(
"param, expected",
(
(True, "yes"),
(False, "no"),
("yes", "yes"),
(1, "1"),
),
)
def test_eq(self, param, expected):
result = tuple(self.key == param)[0]
assert result == "?=key_name={}".format(expected)
def test_ne(self):
assert tuple(self.key != 1) == ("?=key_name=1", "?#!")
@pytest.mark.parametrize(
"param, expected",
(
(True, "yes"),
(False, "no"),
("yes", "yes"),
(1, "1"),
),
)
def test_lt(self, param, expected):
result = tuple(self.key < param)[0]
assert result == "?<key_name={}".format(expected)
@pytest.mark.parametrize(
"param, expected",
(
(True, "yes"),
(False, "no"),
("yes", "yes"),
(1, "1"),
),
)
def test_gt(self, param, expected):
result = tuple(self.key > param)[0]
assert result == "?>key_name={}".format(expected)
def test_And():
assert tuple(
And(
(1,),
(2,),
(3,),
(4,),
)
) == (1, 2, 3, 4, "?#&", "?#&", "?#&")
def test_Or():
assert tuple(
Or(
(1,),
(2,),
(3,),
(4,),
)
) == (1, 2, 3, 4, "?#|", "?#|", "?#|")
|