aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_custom_contentview.py
blob: 2ca184d0a3520238e68789eed05cabe78317ed1b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
from libmproxy import script, flow
import libmproxy.contentviews as cv
from netlib.http import Headers


def test_custom_views():
    plugins = flow.Plugins()

    # two types: view and action
    assert 'view_plugins' in dict(plugins).keys()

    view_plugins = plugins['view_plugins']
    assert len(view_plugins) == 0

    class ViewNoop(cv.View):
        name = "noop"
        prompt = ("noop", "n")
        content_types = ["text/none"]

        def __call__(self, data, **metadata):
            return "noop", cv.format_text(data)

    plugins.register_view('noop',
                          title='Noop View Plugin',
                          class_ref=ViewNoop)

    assert len(view_plugins) == 1
    assert view_plugins['noop']['title'] == 'Noop View Plugin'

    assert cv.get("noop")

    r = cv.get_content_view(
        cv.get("noop"),
        "[1, 2, 3]",
        headers=Headers(
            content_type="text/plain"
        )
    )
    assert "noop" in r[0]

    # now try content-type matching
    r = cv.get_content_view(
        cv.get("Auto"),
        "[1, 2, 3]",
        headers=Headers(
            content_type="text/none"
        )
    )
    assert "noop" in r[0]