bumblebee-status/tests/modules/contrib/test_publicip.py
tobi-wan-kenobi 3aadab5628 [modules/publicip] handle missing public ip more gracefully
If location does not throw, but reports an empty public IP, return
"n/a".

Since this caused a bug, also add a test for it.

fixes #853
2022-02-14 14:58:01 +01:00

50 lines
1.3 KiB
Python

import pytest
from unittest import TestCase, mock
import core.config
import core.widget
import modules.contrib.publicip
def build_module():
config = core.config.Config([])
return modules.contrib.publicip.Module(config=config, theme=None)
def widget(module):
return module.widgets()[0]
class PublicIPTest(TestCase):
def test_load_module(self):
__import__("modules.contrib.publicip")
@mock.patch('util.location.public_ip')
def test_public_ip(self, public_ip_mock):
public_ip_mock.return_value = '5.12.220.2'
module = build_module()
module.update()
assert widget(module).full_text() == '5.12.220.2'
@mock.patch('util.location.public_ip')
def test_public_ip(self, public_ip_mock):
public_ip_mock.return_value = None
module = build_module()
module.update()
assert widget(module).full_text() == 'n/a'
@mock.patch('util.location.public_ip')
def test_public_ip_with_exception(self, public_ip_mock):
public_ip_mock.side_effect = Exception
module = build_module()
module.update()
assert widget(module).full_text() == 'n/a'
def test_interval_seconds(self):
module = build_module()
assert module.parameter('interval') == 3600