Skip to content

Commit fb10825

Browse files
committed
[Pushsafer] Improve test coverage
1 parent 6e7c623 commit fb10825

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

mqttwarn/services/pushsafer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ def encode(self):
101101
elif isinstance(addrs, t.Dict):
102102
self.encode_v2()
103103
else:
104-
raise ValueError(f"Unable to decode Pushsafer configuration layout. type={type(addrs)}")
104+
raise ValueError(f"Pushsafer configuration layout empty or invalid. type={type(addrs).__name__}")
105105

106106
def encode_v1(self):
107107
"""
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# -*- coding: utf-8 -*-
2+
# (c) 2023 The mqttwarn developers
3+
"""
4+
This file contains common cases for the Pushsafer plugin, independently
5+
of the used configuration layout variant (v1 vs. v2) within the `addrs` slot.
6+
"""
7+
import pytest
8+
9+
from mqttwarn.model import ProcessorItem as Item
10+
from mqttwarn.services.pushsafer import PushsaferParameters
11+
from mqttwarn.util import load_module_from_file
12+
13+
14+
def test_pushsafer_configuration_empty_failure(srv, caplog, mock_urlopen_success):
15+
"""
16+
Test Pushsafer service fails when providing an empty `addrs` configuration slot.
17+
"""
18+
19+
module = load_module_from_file("mqttwarn/services/pushsafer.py")
20+
item = Item(addrs=None, message="⚽ Notification message ⚽")
21+
with pytest.raises(ValueError) as ex:
22+
module.plugin(srv, item)
23+
assert ex.match("Pushsafer configuration layout empty or invalid. type=NoneType")
24+
25+
26+
def test_pushsafer_configuration_invalid_failure(srv, caplog, mock_urlopen_success):
27+
"""
28+
Test Pushsafer service fails when providing an invalid `addrs` configuration slot.
29+
"""
30+
31+
module = load_module_from_file("mqttwarn/services/pushsafer.py")
32+
item = Item(addrs=42, message="⚽ Notification message ⚽")
33+
with pytest.raises(ValueError) as ex:
34+
module.plugin(srv, item)
35+
assert ex.match("Pushsafer configuration layout empty or invalid. type=int")
36+
37+
38+
def test_pushsafer_parameters_to_dict():
39+
pp = PushsaferParameters(private_key="foo", device="bar")
40+
result = pp.to_dict()
41+
assert isinstance(result, dict)
42+
assert "private_key" in result
43+
assert "device" in result

0 commit comments

Comments
 (0)