def test_make_IOError(): exception = make_IOError(errno.ENOENT) assert isinstance(exception, IOError) assert exception.errno == errno.ENOENT exception = make_IOError(errno.ENOTDIR) assert isinstance(exception, IOError) assert exception.errno == errno.ENOTDIR
def test_migrate_spamd_config_write_failure(): # OSError (e.g. os.open) facts = SpamassassinFacts(service_overriden=False, spamd_ssl_version='tlsv1') fileops = MockFileOperations(write_error=make_OSError(errno.EACCES)) content = ('# foo\n' + SYSCONFIG_VARIABLE + '="-c --ssl-version tlsv1 -hdx"\n' + '# bar \n') fileops.files[SYSCONFIG_SPAMASSASSIN] = content backup_func = MockBackup() lib_spamd.migrate_spamd_config(facts, fileops, backup_func) # The main purpose of this test is to check that exceptions are handled # properly. The following assertions are supplementary. assert fileops.read_called == 1 assert fileops.write_called == 1 # IOError (e.g. builtin open) facts = SpamassassinFacts(service_overriden=False, spamd_ssl_version='tlsv1') fileops = MockFileOperations(write_error=make_IOError(errno.EACCES)) content = ('# foo\n' + SYSCONFIG_VARIABLE + '="-c --ssl-version tlsv1 -hdx"\n' + '# bar \n') fileops.files[SYSCONFIG_SPAMASSASSIN] = content backup_func = MockBackup() lib_spamd.migrate_spamd_config(facts, fileops, backup_func) assert fileops.read_called == 1 assert fileops.write_called == 1
def test_migrate_spamd_config_no_write_if_backup_fails(): # OSError (e.g. os.open) facts = SpamassassinFacts(service_overriden=False, spamd_ssl_version='tlsv1') fileops = MockFileOperations() content = ('# foo\n' + SYSCONFIG_VARIABLE + '="-c --ssl-version tlsv1 -hdx"\n' + '# bar \n') fileops.files[SYSCONFIG_SPAMASSASSIN] = content backup_func = MockBackup(to_raise=make_OSError(errno.EACCES)) lib_spamd.migrate_spamd_config(facts, fileops, backup_func) assert backup_func.called == 1 assert fileops.write_called == 0 # IOError (e.g. file.read) facts = SpamassassinFacts(service_overriden=False, spamd_ssl_version='tlsv1') fileops = MockFileOperations() content = ('# foo\n' + SYSCONFIG_VARIABLE + '="-c --ssl-version tlsv1 -hdx"\n' + '# bar \n') fileops.files[SYSCONFIG_SPAMASSASSIN] = content backup_func = MockBackup(to_raise=make_IOError(errno.EACCES)) lib_spamd.migrate_spamd_config(facts, fileops, backup_func) assert backup_func.called == 1 assert fileops.write_called == 0
def test_migrate_spamc_config_write_failure(): # OSError (e.g. os.open) facts = SpamassassinFacts(spamc_ssl_argument='sslv3', service_overriden=False) fileops = MockFileOperations(write_error=make_OSError(errno.EACCES)) fileops.files[SPAMC_CONFIG_FILE] = '--ssl sslv3\n# foo\n-B\n' backup_func = MockBackup() lib_spamc.migrate_spamc_config(facts, fileops, backup_func) # The main purpose of this test is to check that exceptions are handled # properly. The following assertions are supplementary. assert fileops.read_called == 1 assert fileops.write_called == 1 # IOError (e.g. builtin open) facts = SpamassassinFacts(spamc_ssl_argument='sslv3', service_overriden=False) fileops = MockFileOperations(write_error=make_IOError(errno.EACCES)) fileops.files[SPAMC_CONFIG_FILE] = '--ssl sslv3\n# foo\n-B\n' backup_func = MockBackup() lib_spamc.migrate_spamc_config(facts, fileops, backup_func) assert fileops.read_called == 1 assert fileops.write_called == 1
def read(self, path): self._increment_read_counters(path) if self.to_raise is not None: raise self.to_raise try: return self.files[path] except KeyError: raise make_IOError(errno.ENOENT)
def test_get_spamc_ssl_argument_inaccessible(): path = '/etc/mail/spamassassin/spamc.conf' fileops = MockFileOperations(to_raise=make_IOError(errno.EACCES)) value = lib_spamc.get_spamc_ssl_argument(fileops.read) assert fileops.files_read == {path: 1} assert value is None
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
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_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_migrate_spamc_config_no_write_if_backup_fails(): # OSError (e.g. os.open) facts = SpamassassinFacts(spamc_ssl_argument='sslv3', service_overriden=False) fileops = MockFileOperations() backup_func = MockBackup(to_raise=make_OSError(errno.EACCES)) spamassassinconfigupdate_spamc.migrate_spamc_config(facts, fileops, backup_func) assert fileops.write_called == 0 # IOError (e.g. file.read) facts = SpamassassinFacts(spamc_ssl_argument='sslv3', service_overriden=False) fileops = MockFileOperations() backup_func = MockBackup(to_raise=make_IOError(errno.EACCES)) spamassassinconfigupdate_spamc.migrate_spamc_config(facts, fileops, backup_func) assert fileops.write_called == 0
def test_get_spamd_ssl_version_inaccessible(): fileops = MockFileOperations(to_raise=make_IOError(errno.EACCES)) value = lib_spamd.get_spamd_ssl_version(fileops.read) assert value is None