Files
2024-02-15 17:01:50 +00:00

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"