Windfree poller application & jenkins pipeline
This commit is contained in:
80
tests/test_config.py
Normal file
80
tests/test_config.py
Normal file
@@ -0,0 +1,80 @@
|
||||
import os
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
from unittest.mock import patch
|
||||
|
||||
from windfree_poller.config import load_config
|
||||
|
||||
|
||||
class ConfigTests(unittest.TestCase):
|
||||
def test_environment_secrets_override_toml(self):
|
||||
text = '''
|
||||
[poller]
|
||||
collector_id="pi"
|
||||
device_id="id"
|
||||
[smartthings]
|
||||
access_token="file-token"
|
||||
[redpanda_connect]
|
||||
url="http://localhost/windfree"
|
||||
[[fields]]
|
||||
name="temperature"
|
||||
component="main"
|
||||
capability="temperatureMeasurement"
|
||||
attribute="temperature"
|
||||
'''
|
||||
with tempfile.TemporaryDirectory() as folder:
|
||||
path = Path(folder) / "config.toml"
|
||||
path.write_text(text, encoding="utf-8")
|
||||
with patch.dict(os.environ, {"SMARTTHINGS_ACCESS_TOKEN": "env-token"}):
|
||||
self.assertEqual(load_config(path).access_token, "env-token")
|
||||
|
||||
def test_access_token_can_be_read_from_file(self):
|
||||
with tempfile.TemporaryDirectory() as folder:
|
||||
token_path = Path(folder) / "token"
|
||||
token_path.write_text("file-token\n", encoding="utf-8")
|
||||
config_path = Path(folder) / "config.toml"
|
||||
config_path.write_text(f'''
|
||||
[poller]
|
||||
collector_id="pi"
|
||||
device_id="id"
|
||||
[smartthings]
|
||||
access_token_file="{token_path.as_posix()}"
|
||||
[redpanda_connect]
|
||||
url="http://localhost/windfree"
|
||||
[[fields]]
|
||||
name="temperature"
|
||||
component="main"
|
||||
capability="temperatureMeasurement"
|
||||
attribute="temperature"
|
||||
''', encoding="utf-8")
|
||||
self.assertEqual(load_config(config_path).access_token, "file-token")
|
||||
|
||||
def test_saved_oauth_token_state_is_accepted(self):
|
||||
with tempfile.TemporaryDirectory() as folder:
|
||||
token_path = Path(folder) / "token.json"
|
||||
token_path.write_text('{"access_token":"access","refresh_token":"refresh"}', encoding="utf-8")
|
||||
config_path = Path(folder) / "config.toml"
|
||||
config_path.write_text(f'''
|
||||
[poller]
|
||||
collector_id="pi"
|
||||
device_id="id"
|
||||
[smartthings]
|
||||
client_id="client"
|
||||
client_secret="secret"
|
||||
token_file="{token_path.as_posix()}"
|
||||
[redpanda_connect]
|
||||
url="http://localhost/windfree"
|
||||
[[fields]]
|
||||
name="temperature"
|
||||
component="main"
|
||||
capability="temperatureMeasurement"
|
||||
attribute="temperature"
|
||||
''', encoding="utf-8")
|
||||
loaded = load_config(config_path)
|
||||
self.assertEqual(loaded.client_id, "client")
|
||||
self.assertEqual(loaded.access_token, "")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user