Beispiel #1
0
def test_with_bad_urls():
    """Must produce an error is bad urls were given"""
    # ipv4
    program = ipcheck.IpCheck()
    program.configure(urls_v4=['http://lmdaz'])
    assert program.main() == 3

    program = ipcheck.IpCheck()
    program.configure(urls_v4=['ftp://lmdaz'])
    assert program.main() == 3

    # ipv6
    program = ipcheck.IpCheck()
    program.configure(urls_v6=['http://lmdaz'])
    assert program.main() == 3
Beispiel #2
0
def test_with_bad_tmp_directory_path_in_stdout(capsys):
    """Must produce an error in stdout if the temporary directory cannot be created"""
    program = ipcheck.IpCheck()
    program.configure(urls_v4=['http://0.0.0.0/'],
                      tmp_directory='/impossible/path')
    assert program.main() == 1
    out, err = capsys.readouterr()
    assert 'Unable to create the required directory' in out
Beispiel #3
0
def test_with_good_url_and_port():
    """Must produce an error is bad urls were given"""
    shutil.rmtree('tmp', ignore_errors=True)

    # http
    program = ipcheck.IpCheck()
    program.configure(urls_v4='localhost:81/query', tmp_directory='tmp/1')
    assert program.main() == 0
Beispiel #4
0
def test_invalid_address_from_url(capsys):
    """Fetch an invalid IP address from urls, must generate an error"""
    shutil.rmtree('tmp', ignore_errors=True)

    # http
    program = ipcheck.IpCheck()
    program.configure(verbose=1,
                      urls_v4=['http://0.0.0.0/'],
                      tmp_directory='tmp/1')
    assert program.main() == 1

    # https
    program = ipcheck.IpCheck()
    program.configure(verbose=1,
                      urls_v4=['https://0.0.0.0/'],
                      tmp_directory='tmp/2')
    assert program.main() == 1
Beispiel #5
0
def test_with_good_url():
    """Must produce an error is bad urls were given"""
    shutil.rmtree('tmp', ignore_errors=True)

    # string
    program = ipcheck.IpCheck()
    program.configure(urls_v4='localhost/', tmp_directory='tmp')
    assert program.main() == 0
Beispiel #6
0
def test_run_command_with_failure(capsys):
    """Run a command with success"""
    shutil.rmtree('tmp', ignore_errors=True)

    # http
    program = ipcheck.IpCheck()
    program.configure(verbose=1,
                      urls_v4=['http://0.0.0.0/'],
                      tmp_directory='tmp/1',
                      command='/bin/false')
    assert program.main() == 1

    program = ipcheck.IpCheck()
    program.configure(verbose=1,
                      urls_v4=['http://0.0.0.0/'],
                      tmp_directory='tmp/2',
                      command='/bin/nonexistent')
    assert program.main() == 1
Beispiel #7
0
def test_run_ip_checking_with_good_value(capsys):
    """Run a command with success"""
    shutil.rmtree('tmp', ignore_errors=True)

    with patch('http.client.HTTPConnection',
               createHTTPConnectionMock('0.0.0.0')) as http_mock:
        program = ipcheck.IpCheck()
        program.configure(verbose=1,
                          urls_v4=['http://0.0.0.0/'],
                          tmp_directory='tmp')
        assert program.main() == 0

    with patch('http.client.HTTPConnection',
               createHTTPConnectionMock('0.0.0.0')) as http_mock:
        program = ipcheck.IpCheck()
        program.configure(verbose=1,
                          urls_v4=['http://0.0.0.0/'],
                          tmp_directory='tmp')
        assert program.main() == 0
Beispiel #8
0
def test_unautorized_http_url(capsys):
    """Unable to fetch from urls because of missing credentials"""
    shutil.rmtree('tmp', ignore_errors=True)

    # https
    program = ipcheck.IpCheck()
    program.configure(verbose=1,
                      urls_v4=['http://0.0.0.0/'],
                      tmp_directory='tmp/1/')
    assert program.main() == 1

    out, err = capsys.readouterr()
    assert 'may require an authentification' in out

    program = ipcheck.IpCheck()
    program.configure(verbose=1,
                      urls_v4=['https://*****:*****@0.0.0.0/'],
                      tmp_directory='tmp/2/')
    assert program.main() == 0
Beispiel #9
0
def test_with_duplicate_url(capsys):
    """The url must be fetched only once"""
    shutil.rmtree('tmp', ignore_errors=True)

    program = ipcheck.IpCheck()
    program.configure(verbose=1,
                      urls_v4=['http://0.0.0.0/', 'http://0.0.0.0/'],
                      tmp_directory='tmp/')
    assert program.main() == 0
    out, err = capsys.readouterr()
    assert 'url already exists' in out
    assert out.count('query url http://0.0.0.0/') == 1
Beispiel #10
0
def test_insecure_https_address_from_url(ssl_context_mock, capsys):
    """Fetch a valid IP address from urls"""
    shutil.rmtree('tmp', ignore_errors=True)

    # https
    program = ipcheck.IpCheck()
    program.configure(verbose=1,
                      urls_v4=['https://0.0.0.0/'],
                      tls_insecure=True,
                      tmp_directory='tmp/1/')
    assert program.main() == 0

    ssl._create_unverified_context.assert_called_once_with()
def test_invalid_config_file(capsys):
    """Fetch a valid IP address from urls"""
    shutil.rmtree('tmp', ignore_errors=True)
    os.mkdir('tmp')

    with open('tmp/config.ini', 'w') as configfile:
        configfile.write('[core\nurl_v4 = 1/')

    # http
    program = ipcheck.IpCheck()
    program.configure(verbose=1,
                      tmp_directory='tmp',
                      config_file='tmp/config.ini')
    assert program.main() == 3
Beispiel #12
0
def test_http_error_from_url(capsys):
    """Catch an HttpError from urls"""
    shutil.rmtree('tmp', ignore_errors=True)

    with patch(
            'http.client.HTTPConnection',
            createHTTPConnectionMock(
                '0.0.0.0', raise_=http.client.HTTPException)) as http_mock:
        # http
        program = ipcheck.IpCheck()
        program.configure(verbose=1,
                          urls_v4=['http://0.0.0.0/'],
                          tmp_directory='tmp/1/')
        assert program.main() == 1

    with patch('http.client.HTTPSConnection',
               createHTTPSConnectionMock('0.0.0.0',
                                         raise_=socket.gaierror)) as http_mock:
        # https
        program = ipcheck.IpCheck()
        program.configure(verbose=1,
                          urls_v4=['https://0.0.0.0/'],
                          tmp_directory='tmp/2/')
        assert program.main() == 1

    with patch('http.client.HTTPSConnection',
               createHTTPSConnectionMock('0.0.0.0',
                                         raise_=ssl.SSLError)) as http_mock:
        # https
        program = ipcheck.IpCheck()
        program.configure(verbose=1,
                          urls_v4=['https://0.0.0.0/'],
                          tmp_directory='tmp/3/')
        assert program.main() == 1
        out, err = capsys.readouterr()
        assert 'You can override this by using --insecure' in out
def test_valid_url_from_config(capsys):
    """Fetch a valid IP address from urls"""
    shutil.rmtree('tmp', ignore_errors=True)
    os.mkdir('tmp')

    config = configparser.ConfigParser()
    config['core'] = {}
    config['core']['url_v4'] = '0.0.0.0/'

    with open('tmp/config.ini', 'w') as configfile:
        config.write(configfile)

    # http
    program = ipcheck.IpCheck()
    program.configure(verbose=1,
                      tmp_directory='tmp',
                      config_file='tmp/config.ini')
    assert program.main() == 0
Beispiel #14
0
def test_command_loading(capsys):
    """Just load the command extension"""
    shutil.rmtree('tmp', ignore_errors=True)
    os.mkdir('tmp')

    config = configparser.ConfigParser()
    config['core'] = {}
    config['core']['url_v4'] = '0.0.0.0/'
    config['extension.command'] = {}

    with open('tmp/config.ini', 'w') as configfile:
        config.write(configfile)

    # http
    program = ipcheck.IpCheck()
    program.configure(verbose=1,
                      tmp_directory='tmp',
                      config_file='tmp/config.ini')
    assert program.main() == 0
Beispiel #15
0
def test_skeleton_loading(capsys):
    """Just load the skeleton extension template"""
    shutil.rmtree('tmp', ignore_errors=True)
    os.mkdir('tmp')

    config = configparser.ConfigParser()
    config['core'] = {}
    config['core']['url_v4'] = '0.0.0.0/'
    config['extension.skeleton'] = {}

    with open('tmp/config.ini', 'w') as configfile:
        config.write(configfile)

    # http
    program = ipcheck.IpCheck()
    program.configure(verbose=1,
                      tmp_directory='tmp',
                      config_file='tmp/config.ini')
    assert program.main() == 0

    out, err = capsys.readouterr()
    assert 'must implement the method "load()"' in out
Beispiel #16
0
def test_without_url():
    """Must produce an error is no url was given"""
    program = ipcheck.IpCheck()
    assert program.main() == 3