Esempio n. 1
0
def test_config1():
    s = setup.Init(keep=True)
    prog = setup.create_state_obj(s, config=s.config1)
    cwd = Path.cwd()

    with prog.log:
        assert not prog.log.has_errors()

        retval = config.read(prog)
        assert retval == Prog.RetVal.ok

        api = setup.create_api_exec_obj(str(s.bin / 'dns'))

        t_a200 = setup.create_tlsa_obj('200', '12725', 'tcp', 'a.com')
        t_a201 = setup.create_tlsa_obj('201', '12725', 'tcp', 'a.com')
        t_a202 = setup.create_tlsa_obj('202', '12725', 'tcp', 'a.com')
        t_a210 = setup.create_tlsa_obj('210', '12725', 'tcp', 'a.com')
        t_a211 = setup.create_tlsa_obj('211', '12725', 'tcp', 'a.com')
        t_a212 = setup.create_tlsa_obj('212', '12725', 'tcp', 'a.com')
        t_a300 = setup.create_tlsa_obj('300', '12725', 'tcp', 'a.com')
        t_a301 = setup.create_tlsa_obj('301', '12725', 'tcp', 'a.com')
        t_a302 = setup.create_tlsa_obj('302', '12725', 'tcp', 'a.com')
        t_a310 = setup.create_tlsa_obj('310', '12725', 'tcp', 'a.com')
        t_a311 = setup.create_tlsa_obj('311', '12725', 'tcp', 'a.com')
        t_a312 = setup.create_tlsa_obj('312', '12725', 'tcp', 'a.com')
        ta = setup.create_target_obj('a.com', api, [], [
            t_a200, t_a201, t_a202, t_a210, t_a211, t_a212, t_a300, t_a301,
            t_a302, t_a310, t_a311, t_a312
        ])

        assert prog.target_list == [ta]
        assert prog.dane_directory == cwd / s.dane
        assert prog.letsencrypt_directory == cwd / s.le
Esempio n. 2
0
def test_config_default():
    s = setup.Init(keep=True)
    prog = setup.create_state_obj(s)
    cwd = Path.cwd()

    with prog.log:
        assert not prog.log.has_errors()

        retval = config.read(prog)
        assert retval == Prog.RetVal.ok

        api = setup.create_api_exec_obj(str(s.bin / 'dns'))

        t_a1 = setup.create_tlsa_obj('311', '12725', 'tcp', 'a.com')
        t_a2 = setup.create_tlsa_obj('201', '12725', 'tcp', 'a.com')
        ta = setup.create_target_obj('a.com', api, [], [t_a1, t_a2])

        t_b1 = setup.create_tlsa_obj('311', '12780', 'udp', 'b.com')
        t_b2 = setup.create_tlsa_obj('201', '12780', 'sctp', 'A.b.com')
        tb = setup.create_target_obj('b.com', api, [], [t_b1, t_b2])

        t_c1 = setup.create_tlsa_obj('311', '12722', 'tcp', 'A.c.com')
        t_c2 = setup.create_tlsa_obj('311', '12723', 'tcp', 'B.c.com')
        tc = setup.create_target_obj('c.com', api, [], [t_c1, t_c2])

        assert prog.target_list == [ta, tb, tc]
        assert prog.dane_directory == cwd / s.dane
        assert prog.letsencrypt_directory == cwd / s.le
Esempio n. 3
0
def test_fail_configX5():
    s = setup.Init(keep=True)
    prog = setup.create_state_obj(s, config=s.configX5)
    cwd = Path.cwd()

    with prog.log:
        assert not prog.log.has_errors()

        retval = config.read(prog)
        assert retval == Prog.RetVal.config_failure

        assert prog.target_list == []
        assert prog.dane_directory == Path('/tmp')
        assert prog.letsencrypt_directory == Path('/var/tmp')
Esempio n. 4
0
def test_fail_configX22():
    s = setup.Init(keep=True)
    prog = setup.create_state_obj(s, config=s.configX22)
    cwd = Path.cwd()

    with prog.log:
        assert not prog.log.has_errors()

        retval = config.read(prog)
        assert retval == Prog.RetVal.config_failure

        t_a1 = setup.create_tlsa_obj('202', '1', 'tcp', 'a.com')
        ta = setup.create_target_obj('a.com', None, [], [t_a1])

        assert prog.target_list == [ta]
        assert prog.dane_directory == cwd / s.dane
        assert prog.letsencrypt_directory == cwd / s.le
Esempio n. 5
0
def test_fail_configX19():
    s = setup.Init(keep=True)
    prog = setup.create_state_obj(s, config=s.configX19)
    cwd = Path.cwd()

    with prog.log:
        assert not prog.log.has_errors()

        retval = config.read(prog)
        assert retval == Prog.RetVal.config_failure

        api = setup.create_api_exec_obj(str(s.bin / 'dns'))
        ta = setup.create_target_obj('a.com', api, [], [])

        assert prog.target_list == [ta]
        assert prog.dane_directory == Path('/tmp')
        assert prog.letsencrypt_directory == Path('/var/tmp')
Esempio n. 6
0
def test_config6():
    s = setup.Init(keep=True)
    prog = setup.create_state_obj(s, config=s.config6)
    cwd = Path.cwd()

    with prog.log:
        assert not prog.log.has_errors()

        retval = config.read(prog)
        assert retval == Prog.RetVal.ok

        api0 = setup.create_api_exec_obj(str(s.bin / 'dns'))
        api1 = setup.create_api_exec_obj(
            ['bin', '--flag1', 'input', "input with\t whitespace"])
        api2 = setup.create_api_c4_obj(email='*****@*****.**', key='KEY')

        t_a1 = setup.create_tlsa_obj('201', '12725', 'tcp', 'a.com')
        t_a2 = setup.create_tlsa_obj('211', '12725', 'tcp', 'a.com')
        t_a3 = setup.create_tlsa_obj('301', '12725', 'tcp', 'a.com')
        t_a4 = setup.create_tlsa_obj('311', '12725', 'tcp', 'a.com')
        ta = setup.create_target_obj('a.com', api1, [],
                                     [t_a1, t_a2, t_a3, t_a4])

        t_b1 = setup.create_tlsa_obj('200', '1', 'sctp', 'b.com')
        t_b2 = setup.create_tlsa_obj('201', '1', 'sctp', 'W.com')
        t_b3 = setup.create_tlsa_obj('202', '1', 'tcp', 'X.com')
        t_b4 = setup.create_tlsa_obj('210', '1', 'sctp', 'Y.com')
        t_b5 = setup.create_tlsa_obj('211', '1', 'sctp', 'Z.com')
        t_b6 = setup.create_tlsa_obj('212', '1', 'sctp', 'A.com')
        t_b7 = setup.create_tlsa_obj('212', '1', 'udp', 'B.com')
        tb = setup.create_target_obj(
            'b.com', api2, [], [t_b1, t_b2, t_b3, t_b4, t_b5, t_b6, t_b7])

        t_c1 = setup.create_tlsa_obj('200', '2', 'tcp', 'c.com')
        tc = setup.create_target_obj('c.com', api0, [], [t_c1])

        assert prog.target_list == [ta, tb, tc]
        assert prog.dane_directory == Path('/tmp/Q')
        assert prog.letsencrypt_directory == cwd / '../relative_path'
Esempio n. 7
0
from alnitak.tests import setup
from alnitak import prog
from alnitak import parser as Parser
from alnitak import exceptions as Except

from pathlib import Path
from subprocess import Popen, PIPE

s = setup.Init(keep=True)
prog = setup.create_state_obj(s)

a_flag = Parser.Flag(Parser.FlagType.bare, '-a', '--aflag')
b_flag = Parser.Flag(Parser.FlagType.bare, '-b', '--bflag')
c_flag = Parser.Flag(Parser.FlagType.bare, '-c', '--cflag')

x_flag = Parser.Flag(Parser.FlagType.option, '-x', '--xflag')
y_flag = Parser.Flag(Parser.FlagType.option, '-y', '--yflag')
z_flag = Parser.Flag(Parser.FlagType.option, '-z', '--zflag')

m_flag = Parser.Flag(Parser.FlagType.mandatory, '-m', '--mflag')
n_flag = Parser.Flag(Parser.FlagType.mandatory, '-n', '--nflag')
o_flag = Parser.Flag(Parser.FlagType.mandatory, '-o', '--oflag')


def icheck(prog, pos, name, input):
    if input == 'A':
        return 1
    if input == 'B':
        return 2
    if input == '1100':
        raise Except.Error1100('pos1', 'arg1', 'ref1', 'max1')
Esempio n. 8
0
def test_cloudflare(cloudflare_api):
    if not api_file_exists(cloudflare_api):
        pytest.skip("no cloudflare.api file")

    # need the domain
    domain = get_domain(cloudflare_api)
    assert domain

    s = setup.Init(keep=True)
    s.create_cloudflare_config(cloudflare_api, domain)

    prog = setup.create_state_obj(s, config=s.configC1)

    # need this to log if create_state_obj set 'log=True', otherwise this will
    # do nothing.
    with prog.log:

        retval = config.read(prog)
        assert retval == Prog.RetVal.ok

        t_a2 = setup.create_tlsa_obj('211', '53527', 'tcp', domain)
        t_a1 = setup.create_tlsa_obj('311', '53527', 'tcp', domain)

        assert len(prog.target_list) == 1

        target = prog.target_list[0]

        assert len(target.tlsa) == 2
        assert t_a1 in target.tlsa
        assert t_a2 in target.tlsa
        tlsa1 = target.tlsa[0]
        tlsa2 = target.tlsa[1]

        api = target.api

        assert api.domain == domain
        assert len(api.email) > 0
        assert len(api.key) > 0

        hash211 = s.hash['a.com']['cert1'][211]
        hash311 = s.hash['a.com']['cert1'][311]

        cloudflare.api_publish(prog, api, tlsa1, hash211)
        cloudflare.api_publish(prog, api, tlsa2, hash311)
        # error encountered: Except.DNSProcessingError
        # record is already up: Except.DNSSkipProcessing

        sleep(3)

        records211 = cloudflare.api_read(prog, api, tlsa1)
        records311 = cloudflare.api_read(prog, api, tlsa2)
        # error encountered: Except.DNSProcessingError
        # record is not up: Except.DNSNotLive

        assert len(records211) == 1
        assert hash211 in records211

        assert len(records311) == 1
        assert hash311 in records311

        id211 = records211[hash211]
        id311 = records311[hash311]

        sleep(3)

        cloudflare.api_delete(prog, api, tlsa1, id211)
        cloudflare.api_delete(prog, api, tlsa2, id311)
        # error encountered: Except.DNSProcessingError

        sleep(3)

        with pytest.raises(Except.DNSNotLive) as ex:
            cloudflare.api_read(prog, api, tlsa1)

        with pytest.raises(Except.DNSNotLive) as ex:
            cloudflare.api_read(prog, api, tlsa2)