mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
91 lines
2.6 KiB
Python
91 lines
2.6 KiB
Python
import pytest
|
|
from django import forms
|
|
|
|
from sentry.exceptions import PluginError
|
|
from sentry.plugins.base.v2 import Plugin2
|
|
from sentry.testutils.cases import TestCase
|
|
|
|
|
|
class DummyForm(forms.Form):
|
|
text = forms.CharField(help_text="text field")
|
|
textarea = forms.CharField(widget=forms.Textarea, required=False)
|
|
password = forms.CharField(label="A Password", widget=forms.PasswordInput)
|
|
choice = forms.ChoiceField(choices=((1, "one"), (2, "two")))
|
|
url = forms.URLField(assume_scheme="https")
|
|
|
|
|
|
class DummyPlugin(Plugin2):
|
|
project_conf_form = DummyForm()
|
|
|
|
|
|
class ConfigTest(TestCase):
|
|
def test_get_config(self):
|
|
project = self.create_project()
|
|
plugin = DummyPlugin()
|
|
config = plugin.get_config(project=project)
|
|
assert len(config) == 5
|
|
assert config[0] == {
|
|
"default": None,
|
|
"help": "text field",
|
|
"label": "Text",
|
|
"name": "text",
|
|
"placeholder": None,
|
|
"required": True,
|
|
"type": "text",
|
|
}
|
|
assert config[1] == {
|
|
"default": None,
|
|
"help": "",
|
|
"label": "Textarea",
|
|
"name": "textarea",
|
|
"placeholder": None,
|
|
"required": False,
|
|
"type": "textarea",
|
|
}
|
|
assert config[2] == {
|
|
"default": None,
|
|
"help": "",
|
|
"label": "A Password",
|
|
"name": "password",
|
|
"placeholder": None,
|
|
"required": True,
|
|
"type": "secret",
|
|
}
|
|
assert config[3] == {
|
|
"default": None,
|
|
"help": "",
|
|
"label": "Choice",
|
|
"name": "choice",
|
|
"placeholder": None,
|
|
"required": True,
|
|
"type": "select",
|
|
"choices": [(1, "one"), (2, "two")],
|
|
}
|
|
assert config[4] == {
|
|
"default": None,
|
|
"help": "",
|
|
"label": "Url",
|
|
"name": "url",
|
|
"placeholder": None,
|
|
"required": True,
|
|
"type": "url",
|
|
}
|
|
|
|
def test_validate_url(self):
|
|
project = self.create_project()
|
|
plugin = DummyPlugin()
|
|
with pytest.raises(PluginError):
|
|
plugin.validate_config_field(project=project, name="url", value="foo")
|
|
|
|
value = plugin.validate_config_field(
|
|
project=project, name="url", value="https://example.com"
|
|
)
|
|
|
|
assert value == "https://example.com"
|
|
|
|
value = plugin.validate_config_field(
|
|
project=project, name="url", value="http://example.com"
|
|
)
|
|
|
|
assert value == "http://example.com"
|