Beispiel #1
0
    def create(self, request, *args, **kwargs):
        user = request.user
        confs = plugins.get_confs(user=user)

        user_plugin = [
            p for p in plugins._plugins.values()
            if p["user"] is True and p["name"] == kwargs["pk"]
        ]
        if kwargs["pk"] not in confs:
            return response.Response(status=404)
        plugins.set_conf(kwargs["pk"], request.data, user)
        return response.Response(
            plugins.serialize_plugin(user_plugin[0],
                                     confs=plugins.get_confs(user=user)))
Beispiel #2
0
def test_serialize_plugin_user(factories):
    user = factories["users.User"]()
    plugin = plugins.get_plugin_config(
        name="test_plugin",
        description="Hello world",
        conf=[{
            "name": "foo",
            "type": "boolean"
        }],
        user=True,
    )

    expected = {
        "name": "test_plugin",
        "enabled": False,
        "description": "Hello world",
        "conf": [{
            "name": "foo",
            "type": "boolean"
        }],
        "user": True,
        "source": False,
        "label": "test_plugin",
        "values": None,
        "homepage": None,
    }

    assert plugins.serialize_plugin(plugin,
                                    plugins.get_confs(user)) == expected
Beispiel #3
0
def test_filter_is_called_with_plugin_conf(mocker, factories):
    plugins.get_plugin_config("test1", )
    plugins.get_plugin_config("test2", )
    factories["common.PluginConfiguration"](code="test1", enabled=True)
    factories["common.PluginConfiguration"](code="test2",
                                            conf={
                                                "foo": "baz"
                                            },
                                            enabled=True)
    confs = plugins.get_confs()
    filters = {}
    plugin_config1 = plugins.get_plugin_config("test1", {})
    plugin_config2 = plugins.get_plugin_config("test2", {})

    handler1 = mocker.Mock()
    handler2 = mocker.Mock()

    plugins.register_filter("test_filter", plugin_config1, filters)(handler1)
    plugins.register_filter("test_filter", plugin_config2, filters)(handler2)

    plugins.trigger_filter("test_filter", 1, confs=confs, registry=filters)

    handler1.assert_called_once_with(1, conf=confs["test1"])
    handler2.assert_called_once_with(handler1.return_value,
                                     conf=confs["test2"])
Beispiel #4
0
    def delete(self, request, *args, **kwargs):
        user = request.user
        confs = plugins.get_confs(user=user)
        if kwargs["pk"] not in confs:
            return response.Response(status=404)

        user.plugins.filter(code=kwargs["pk"]).delete()
        return response.Response(status=204)
Beispiel #5
0
 def perform_create(self, serializer):
     r = super().perform_create(serializer)
     plugins.trigger_hook(
         plugins.LISTENING_CREATED,
         listening=serializer.instance,
         confs=plugins.get_confs(self.request.user),
     )
     record.send(serializer.instance)
     return r
Beispiel #6
0
    def list(self, request, *args, **kwargs):
        user = request.user
        user_plugins = [
            p for p in plugins._plugins.values() if p["user"] is True
        ]

        return response.Response([
            plugins.serialize_plugin(p, confs=plugins.get_confs(user=user))
            for p in user_plugins
        ])
Beispiel #7
0
    def retrieve(self, request, *args, **kwargs):
        user = request.user
        user_plugin = [
            p for p in plugins._plugins.values()
            if p["user"] is True and p["name"] == kwargs["pk"]
        ]
        if not user_plugin:
            return response.Response(status=404)

        return response.Response(
            plugins.serialize_plugin(user_plugin[0],
                                     confs=plugins.get_confs(user=user)))
Beispiel #8
0
def test_can_update_user_plugin(logged_in_api_client):
    plugin = plugins.get_plugin_config(
        name="test_plugin",
        description="Hello world",
        conf=[{
            "name": "foo",
            "type": "boolean"
        }],
        user=True,
    )
    plugins.get_plugin_config(name="test_plugin2", user=False)
    url = reverse("api:v1:plugins-detail", kwargs={"pk": "test_plugin"})
    response = logged_in_api_client.post(url, {"foo": True})
    assert response.status_code == 200
    assert logged_in_api_client.user.plugins.latest("id").conf == {"foo": True}
    assert response.data == plugins.serialize_plugin(
        plugin, plugins.get_confs(logged_in_api_client.user))
Beispiel #9
0
def test_can_list_user_plugins(logged_in_api_client):
    plugin = plugins.get_plugin_config(
        name="test_plugin",
        description="Hello world",
        conf=[{
            "name": "foo",
            "type": "boolean"
        }],
        user=True,
    )
    plugins.get_plugin_config(name="test_plugin2", user=False)
    url = reverse("api:v1:plugins-list")
    response = logged_in_api_client.get(url)

    assert response.status_code == 200
    assert response.data == [
        plugins.serialize_plugin(plugin,
                                 plugins.get_confs(logged_in_api_client.user))
    ]
Beispiel #10
0
def test_get_confs_user(factories):
    plugins.get_plugin_config("test1")
    plugins.get_plugin_config("test2")
    plugins.get_plugin_config("test3")
    user1 = factories["users.User"]()
    user2 = factories["users.User"]()
    factories["common.PluginConfiguration"](code="test1",
                                            conf={
                                                "hello": "world"
                                            })
    factories["common.PluginConfiguration"](code="test2", conf={"foo": "bar"})
    factories["common.PluginConfiguration"](code="test3",
                                            conf={
                                                "user": True
                                            },
                                            user=user1)
    factories["common.PluginConfiguration"](code="test4",
                                            conf={
                                                "user": False
                                            },
                                            user=user2)

    assert plugins.get_confs(user=user1) == {
        "test1": {
            "conf": {
                "hello": "world"
            },
            "enabled": False
        },
        "test2": {
            "conf": {
                "foo": "bar"
            },
            "enabled": False
        },
        "test3": {
            "conf": {
                "user": True
            },
            "enabled": False
        },
    }
Beispiel #11
0
def test_serialize_plugin_user_enabled(factories):
    user = factories["users.User"]()
    plugin = plugins.get_plugin_config(
        name="test_plugin",
        description="Hello world",
        conf=[{
            "name": "foo",
            "type": "boolean"
        }],
        user=True,
        homepage="https://example.com",
    )

    factories["common.PluginConfiguration"](code="test_plugin",
                                            user=user,
                                            enabled=True,
                                            conf={
                                                "foo": "bar"
                                            })
    expected = {
        "name": "test_plugin",
        "enabled": True,
        "description": "Hello world",
        "conf": [{
            "name": "foo",
            "type": "boolean"
        }],
        "user": True,
        "source": False,
        "label": "test_plugin",
        "values": {
            "foo": "bar"
        },
        "homepage": "https://example.com",
    }

    assert plugins.serialize_plugin(plugin,
                                    plugins.get_confs(user)) == expected
Beispiel #12
0
def test_get_confs(factories):
    plugins.get_plugin_config("test1")
    plugins.get_plugin_config("test2")
    factories["common.PluginConfiguration"](code="test1",
                                            conf={
                                                "hello": "world"
                                            })
    factories["common.PluginConfiguration"](code="test2", conf={"foo": "bar"})

    assert plugins.get_confs() == {
        "test1": {
            "conf": {
                "hello": "world"
            },
            "enabled": False
        },
        "test2": {
            "conf": {
                "foo": "bar"
            },
            "enabled": False
        },
    }