コード例 #1
0
def test_parse_options_star_host_invariant():
    no_star_host = """\
Compression yes
CompressionLevel 6
    """.strip()

    star_host = """\
Compression yes

Host *
    CompressionLevel 6
    """.strip()

    star_host_only = """\
Host *
    Compression yes
    CompressionLevel 6
    """.strip()

    no_star_host = parser.parse(lexer.lex(no_star_host.split("\n")))
    star_host = parser.parse(lexer.lex(star_host.split("\n")))
    star_host_only = parser.parse(lexer.lex(star_host_only.split("\n")))

    assert no_star_host.struct == star_host.struct
    assert no_star_host.struct == star_host_only.struct
コード例 #2
0
ファイル: test_parser.py プロジェクト: 9seconds/concierge
def test_parse_options_star_host_invariant():
    no_star_host = """\
Compression yes
CompressionLevel 6
    """.strip()

    star_host = """\
Compression yes

Host *
    CompressionLevel 6
    """.strip()

    star_host_only = """\
Host *
    Compression yes
    CompressionLevel 6
    """.strip()

    no_star_host = parser.parse(lexer.lex(no_star_host.split("\n")))
    star_host = parser.parse(lexer.lex(star_host.split("\n")))
    star_host_only = parser.parse(lexer.lex(star_host_only.split("\n")))

    assert no_star_host.struct == star_host.struct
    assert no_star_host.struct == star_host_only.struct
コード例 #3
0
ファイル: test_parser.py プロジェクト: 9seconds/concierge
def test_nothing_to_parse(empty_lines):
    root = parser.parse(lexer.lex([""] * empty_lines))

    assert len(root.hosts) == 1
    assert root.hosts[0].fullname == "*"
    assert root.hosts[0].options == {}
    assert root.hosts[0].hosts == []
コード例 #4
0
def test_nothing_to_parse(empty_lines):
    root = parser.parse(lexer.lex([""] * empty_lines))

    assert len(root.hosts) == 1
    assert root.hosts[0].fullname == "*"
    assert root.hosts[0].options == {}
    assert root.hosts[0].hosts == []
コード例 #5
0
def test_generate():
    tokens = lexer.lex(CONTENT.split("\n"))
    tree = parser.parse(tokens)
    new_config = list(process.generate(tree))

    assert new_config == [
        "Host qeh", "    HostName hew", "    Port 22", "    Protocol 2", "",
        "Host qq", "    HostName qqq", "    Port 22", "", "Host q",
        "    Port 22", "", "Host *", "    Compression yes", ""
    ]
コード例 #6
0
def test_parse_multiple_options():
    config = """\

Host q
    User root

Host name
    User rooter

    LocalForward 80 brumm:80
    LocalForward 443 brumm:443
    LocalForward 22 brumm:23
""".strip()

    parsed = parser.parse(lexer.lex(config.split("\n")))
    assert sorted(parsed.hosts[1].options["LocalForward"]) == [
        "22 brumm:23", "443 brumm:443", "80 brumm:80"
    ]
コード例 #7
0
ファイル: test_parser.py プロジェクト: 9seconds/concierge
def test_parse_multiple_options():
    config = """\

Host q
    User root

Host name
    User rooter

    LocalForward 80 brumm:80
    LocalForward 443 brumm:443
    LocalForward 22 brumm:23
""".strip()

    parsed = parser.parse(lexer.lex(config.split("\n")))
    assert sorted(parsed.hosts[1].options["LocalForward"]) == [
        "22 brumm:23",
        "443 brumm:443",
        "80 brumm:80"]
コード例 #8
0
def test_generate():
    tokens = lexer.lex(CONTENT.split("\n"))
    tree = parser.parse(tokens)
    new_config = list(process.generate(tree))

    assert new_config == [
        "Host qeh",
        "    HostName hew",
        "    Port 22",
        "    Protocol 2",
        "",
        "Host qq",
        "    HostName qqq",
        "    Port 22",
        "",
        "Host q",
        "    Port 22",
        "",
        "Host *",
        "    Compression yes",
        ""]
コード例 #9
0
ファイル: test_parser.py プロジェクト: 9seconds/concierge
def test_parse_options_big_config_with_star_host():
    text = """\
# Okay, rather big config but let's try to cover all cases here.
# Basically, I've been trying to split it to different test cases but it
# was really hard to maintain those tests. So there.

Compression yes
CompressionLevel 5

Host m
    Port 22

    Host e v
        User root
        HostName env10

        Host WWW
            TCPKeepAlive 5

    Host q
        Protocol 2

    -Host x
        SendEnv 12

        Host qex
            Port 35
            ViaJumpHost env312

Host *
    CompressionLevel 6

    """.strip()

    tokens = lexer.lex(text.split("\n"))
    tree = parser.parse(tokens)

    assert tree.name == ""
    assert tree.parent is None
    assert len(tree.hosts) == 2

    star_host = tree.hosts[0]
    assert star_host.trackable
    assert star_host.fullname == "*"
    assert star_host.options == {"Compression": ["yes"],
                                 "CompressionLevel": ["6"]}

    m_host = tree.hosts[1]
    assert m_host.trackable
    assert m_host.fullname == "m"
    assert m_host.options == {"Port": ["22"]}
    assert len(m_host.hosts) == 4

    me_host = m_host.hosts[0]
    assert me_host.trackable
    assert me_host.fullname == "me"
    assert me_host.options == {"Port": ["22"], "HostName": ["env10"],
                               "User": ["root"]}
    assert len(me_host.hosts) == 1

    mewww_host = me_host.hosts[0]
    assert mewww_host.trackable
    assert mewww_host.fullname == "meWWW"
    assert mewww_host.options == {"Port": ["22"], "TCPKeepAlive": ["5"],
                                  "HostName": ["env10"], "User": ["root"]}
    assert mewww_host.hosts == []

    mq_host = m_host.hosts[1]
    assert mq_host.trackable
    assert mq_host.fullname == "mq"
    assert mq_host.options == {"Protocol": ["2"], "Port": ["22"]}
    assert mq_host.hosts == []

    mv_host = m_host.hosts[2]
    assert mv_host.trackable
    assert mv_host.fullname == "mv"
    assert mv_host.options == {"Port": ["22"], "HostName": ["env10"],
                               "User": ["root"]}
    assert len(mv_host.hosts) == 1

    mvwww_host = mv_host.hosts[0]
    assert mvwww_host.trackable
    assert mvwww_host.fullname == "mvWWW"
    assert mvwww_host.options == {"Port": ["22"], "TCPKeepAlive": ["5"],
                                  "HostName": ["env10"], "User": ["root"]}
    assert mvwww_host.hosts == []

    mx_host = m_host.hosts[3]
    assert not mx_host.trackable
    assert mx_host.fullname == "mx"
    assert mx_host.options == {"SendEnv": ["12"], "Port": ["22"]}
    assert len(mx_host.hosts) == 1

    mxqex_host = mx_host.hosts[0]
    assert mxqex_host.trackable
    assert mxqex_host.fullname == "mxqex"
    assert mxqex_host.options == {"SendEnv": ["12"], "Port": ["35"],
                                  "ProxyCommand": ["ssh -W %h:%p env312"]}
    assert mxqex_host.hosts == []
コード例 #10
0
ファイル: test_parser.py プロジェクト: 9seconds/concierge
def test_unknown_option():
    tokens = lexer.lex(["ASDF 1"])

    with pytest.raises(exceptions.ParserUnknownOption):
        parser.parse(tokens)
コード例 #11
0
def test_parse_options_big_config_with_star_host():
    text = """\
# Okay, rather big config but let's try to cover all cases here.
# Basically, I've been trying to split it to different test cases but it
# was really hard to maintain those tests. So there.

Compression yes
CompressionLevel 5

Host m
    Port 22

    Host e v
        User root
        HostName env10

        Host WWW
            TCPKeepAlive 5

    Host q
        Protocol 2

    -Host x
        SendEnv 12

        Host qex
            Port 35
            ViaJumpHost env312

Host *
    CompressionLevel 6

    """.strip()

    tokens = lexer.lex(text.split("\n"))
    tree = parser.parse(tokens)

    assert tree.name == ""
    assert tree.parent is None
    assert len(tree.hosts) == 2

    star_host = tree.hosts[0]
    assert star_host.trackable
    assert star_host.fullname == "*"
    assert star_host.options == {"Compression": "yes", "CompressionLevel": "6"}

    m_host = tree.hosts[1]
    assert m_host.trackable
    assert m_host.fullname == "m"
    assert m_host.options == {"Port": "22"}
    assert len(m_host.hosts) == 4

    me_host = m_host.hosts[0]
    assert me_host.trackable
    assert me_host.fullname == "me"
    assert me_host.options == {
        "Port": "22",
        "HostName": "env10",
        "User": "******"
    }
    assert len(me_host.hosts) == 1

    mewww_host = me_host.hosts[0]
    assert mewww_host.trackable
    assert mewww_host.fullname == "meWWW"
    assert mewww_host.options == {
        "Port": "22",
        "TCPKeepAlive": "5",
        "HostName": "env10",
        "User": "******"
    }
    assert mewww_host.hosts == []

    mq_host = m_host.hosts[1]
    assert mq_host.trackable
    assert mq_host.fullname == "mq"
    assert mq_host.options == {"Protocol": "2", "Port": "22"}
    assert mq_host.hosts == []

    mv_host = m_host.hosts[2]
    assert mv_host.trackable
    assert mv_host.fullname == "mv"
    assert mv_host.options == {
        "Port": "22",
        "HostName": "env10",
        "User": "******"
    }
    assert len(mv_host.hosts) == 1

    mvwww_host = mv_host.hosts[0]
    assert mvwww_host.trackable
    assert mvwww_host.fullname == "mvWWW"
    assert mvwww_host.options == {
        "Port": "22",
        "TCPKeepAlive": "5",
        "HostName": "env10",
        "User": "******"
    }
    assert mvwww_host.hosts == []

    mx_host = m_host.hosts[3]
    assert not mx_host.trackable
    assert mx_host.fullname == "mx"
    assert mx_host.options == {"SendEnv": "12", "Port": "22"}
    assert len(mx_host.hosts) == 1

    mxqex_host = mx_host.hosts[0]
    assert mxqex_host.trackable
    assert mxqex_host.fullname == "mxqex"
    assert mxqex_host.options == {
        "SendEnv": "12",
        "Port": "35",
        "ProxyCommand": "ssh -W %h:%p env312"
    }
    assert mxqex_host.hosts == []
コード例 #12
0
def test_unknown_option():
    tokens = lexer.lex(["ASDF 1"])

    with pytest.raises(exceptions.ParserUnknownOption):
        parser.parse(tokens)