You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
2.0 KiB

import errno
from leapp.libraries.common.testutils import make_IOError
from leapp.libraries.common.vsftpdutils import get_config_contents, get_default_config_hash
class MockFile(object):
def __init__(self, path, content=None, to_raise=None):
self.path = path
self.content = content
self.to_raise = to_raise
self.error = False
def read_file(self, path):
if path != self.path:
self.error = True
raise ValueError
if not self.to_raise:
return self.content
raise self.to_raise
def test_getting_nonexistent_config_gives_None():
path = 'my_file'
f = MockFile(path, to_raise=make_IOError(errno.ENOENT))
res = get_config_contents(path, read_func=f.read_file)
assert not f.error
assert res is None
def test_getting_inaccessible_config_gives_None():
path = 'my_file'
f = MockFile(path, to_raise=make_IOError(errno.EACCES))
res = get_config_contents(path, read_func=f.read_file)
assert not f.error
assert res is None
def test_getting_empty_config_gives_empty_string():
path = 'my_file'
f = MockFile(path, content='')
res = get_config_contents(path, read_func=f.read_file)
assert not f.error
assert res == ''
def test_getting_nonempty_config_gives_the_content():
path = 'my_file'
content = 'foo\nbar\n'
f = MockFile(path, content=content)
res = get_config_contents(path, read_func=f.read_file)
assert not f.error
assert res == content
def test_hash_of_default_config_is_correct():
path = '/etc/vsftpd/vsftpd.conf'
content = 'foo\n'
f = MockFile(path, content=content)
h = get_default_config_hash(read_func=f.read_file)
assert h == 'f1d2d2f924e986ac86fdf7b36c94bcdf32beec15'
assert not f.error
def test_hash_of_nonexistent_default_config_is_None():
path = '/etc/vsftpd/vsftpd.conf'
f = MockFile(path, to_raise=make_IOError(errno.ENOENT))
h = get_default_config_hash(read_func=f.read_file)
assert h is None
assert not f.error