Co-authored-by: Eve832 <eve.meelan@grafana.com>
Co-authored-by: Francisco Montes de Oca <nevermind89x@gmail.com>
Co-authored-by: Ildar Iskhakov <ildar.iskhakov@grafana.com>
Co-authored-by: Innokentii Konstantinov <innokenty.konstantinov@grafana.com>
Co-authored-by: Julia <ferril.darkdiver@gmail.com>
Co-authored-by: maskin25 <kengurek@gmail.com>
Co-authored-by: Matias Bordese <mbordese@gmail.com>
Co-authored-by: Matvey Kukuy <motakuk@gmail.com>
Co-authored-by: Michael Derynck <michael.derynck@grafana.com>
Co-authored-by: Richard Hartmann <richih@richih.org>
Co-authored-by: Robby Milo <robbymilo@fastmail.com>
Co-authored-by: Timur Olzhabayev <timur.olzhabayev@grafana.com>
Co-authored-by: Vadim Stepanov <vadimkerr@gmail.com>
Co-authored-by: Yulia Shanyrova <yulia.shanyrova@grafana.com>
72 lines
2.6 KiB
Python
72 lines
2.6 KiB
Python
from unittest.mock import patch
|
|
|
|
import pytest
|
|
|
|
from apps.base.models import LiveSetting
|
|
from apps.base.utils import live_settings
|
|
from apps.twilioapp.twilio_client import TwilioClient
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_fallback_to_settings(settings):
|
|
settings.SOME_NEW_FEATURE_ENABLED = True
|
|
|
|
with patch.object(LiveSetting, "AVAILABLE_NAMES", ("SOME_NEW_FEATURE_ENABLED",)):
|
|
assert LiveSetting.get_setting("SOME_NEW_FEATURE_ENABLED") is True
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_take_from_db(settings):
|
|
settings.SOME_NEW_FEATURE_ENABLED = True
|
|
|
|
with patch.object(LiveSetting, "AVAILABLE_NAMES", ("SOME_NEW_FEATURE_ENABLED",)):
|
|
LiveSetting.objects.create(name="SOME_NEW_FEATURE_ENABLED", value=False)
|
|
assert LiveSetting.get_setting("SOME_NEW_FEATURE_ENABLED") is False
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_restrict_foreign_names():
|
|
with pytest.raises(ValueError):
|
|
LiveSetting.objects.create(name="SOME_NONEXISTENT_FANCY_FEATURE_ENABLED", value=42)
|
|
|
|
with pytest.raises(ValueError):
|
|
LiveSetting.get_setting("SOME_NONEXISTENT_FANCY_FEATURE_ENABLED")
|
|
|
|
|
|
@pytest.mark.parametrize("value", (True, None, 12, "test string", ["hey", "there", 1]))
|
|
@pytest.mark.django_db
|
|
def test_multi_type_support(value):
|
|
with patch.object(LiveSetting, "AVAILABLE_NAMES", ("SOME_NEW_FEATURE_ENABLED",)):
|
|
LiveSetting.objects.create(name="SOME_NEW_FEATURE_ENABLED", value=value)
|
|
setting_value = LiveSetting.get_setting("SOME_NEW_FEATURE_ENABLED")
|
|
|
|
assert type(setting_value) == type(value)
|
|
assert setting_value == value
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_live_settings_proxy(settings, monkeypatch):
|
|
settings.SOME_SETTING = 12
|
|
monkeypatch.setattr(LiveSetting, "AVAILABLE_NAMES", ("SOME_SETTING",))
|
|
assert live_settings.SOME_SETTING == 12
|
|
|
|
live_settings.SOME_SETTING = 42
|
|
assert LiveSetting.objects.get(name="SOME_SETTING").value == 42
|
|
assert live_settings.SOME_SETTING == 42
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_twilio_respects_changed_credentials(settings):
|
|
settings.TWILIO_ACCOUNT_SID = "twilio_account_sid"
|
|
settings.TWILIO_AUTH_TOKEN = "twilio_auth_token"
|
|
settings.TWILIO_NUMBER = "twilio_number"
|
|
|
|
twilio_client = TwilioClient()
|
|
|
|
live_settings.TWILIO_ACCOUNT_SID = "new_twilio_account_sid"
|
|
live_settings.TWILIO_AUTH_TOKEN = "new_twilio_auth_token"
|
|
live_settings.TWILIO_NUMBER = "new_twilio_number"
|
|
|
|
assert twilio_client.twilio_api_client.username == "new_twilio_account_sid"
|
|
assert twilio_client.twilio_api_client.password == "new_twilio_auth_token"
|
|
assert twilio_client.twilio_number == "new_twilio_number"
|