salt/tests/integration/states/file.py

360 lines
11 KiB
Python
Raw Normal View History

'''
Tests for the file state
'''
# Import python libs
import os
#
# Import salt libs
import integration
2012-05-29 16:40:20 +00:00
class FileTest(integration.ModuleCase):
'''
Validate the file state
'''
def test_symlink(self):
'''
file.symlink
'''
name = os.path.join(integration.TMP, 'symlink')
tgt = os.path.join(integration.TMP, 'target')
ret = self.run_state('file.symlink', name=name, target=tgt)
result = ret[next(iter(ret))]['result']
self.assertTrue(result)
def test_test_symlink(self):
'''
file.symlink test interface
'''
name = os.path.join(integration.TMP, 'symlink')
tgt = os.path.join(integration.TMP, 'target')
ret = self.run_state('file.symlink', test=True, name=name, target=tgt)
result = ret[next(iter(ret))]['result']
self.assertIsNone(result)
2012-05-13 04:55:28 +00:00
def test_absent_file(self):
'''
file.absent
'''
name = os.path.join(integration.TMP, 'file_to_kill')
with open(name, 'w+') as fp_:
fp_.write('killme')
ret = self.run_state('file.absent', name=name)
result = ret[next(iter(ret))]['result']
2012-05-13 04:55:28 +00:00
self.assertTrue(result)
self.assertFalse(os.path.isfile(name))
def test_absent_dir(self):
'''
file.absent
'''
name = os.path.join(integration.TMP, 'dir_to_kill')
os.makedirs(name)
ret = self.run_state('file.absent', name=name)
result = ret[next(iter(ret))]['result']
2012-05-13 04:55:28 +00:00
self.assertTrue(result)
self.assertFalse(os.path.isdir(name))
2012-05-13 14:18:05 +00:00
2012-05-13 04:55:28 +00:00
def test_absent_link(self):
'''
file.absent
'''
name = os.path.join(integration.TMP, 'link_to_kill')
os.symlink(name, '{0}.tgt'.format(name))
ret = self.run_state('file.absent', name=name)
result = ret[next(iter(ret))]['result']
2012-05-13 04:55:28 +00:00
self.assertTrue(result)
self.assertFalse(os.path.islink(name))
2012-05-13 04:58:26 +00:00
2012-05-13 05:19:39 +00:00
def test_test_absent(self):
2012-05-13 04:58:26 +00:00
'''
file.absent test interface
'''
name = os.path.join(integration.TMP, 'file_to_kill')
with open(name, 'w+') as fp_:
fp_.write('killme')
ret = self.run_state('file.absent', test=True, name=name)
result = ret[next(iter(ret))]['result']
2012-05-13 04:58:26 +00:00
self.assertIsNone(result)
self.assertTrue(os.path.isfile(name))
2012-05-13 05:19:39 +00:00
def test_managed(self):
'''
file.managed
'''
name = os.path.join(integration.TMP, 'grail_scene33')
ret = self.run_state(
'file.managed',
name=name,
source='salt://grail/scene33')
src = os.path.join(
integration.FILES,
'file',
'base',
'grail',
'scene33'
)
with open(src, 'r') as fp_:
master_data = fp_.read()
with open(name, 'r') as fp_:
minion_data = fp_.read()
self.assertEqual(master_data, minion_data)
result = ret[next(iter(ret))]['result']
2012-05-13 05:19:39 +00:00
self.assertTrue(result)
def test_test_managed(self):
'''
file.managed test interface
'''
name = os.path.join(integration.TMP, 'grail_not_scene33')
ret = self.run_state(
'file.managed',
test=True,
name=name,
source='salt://grail/scene33')
self.assertFalse(os.path.isfile(name))
result = ret[next(iter(ret))]['result']
self.assertIsNone(result)
2012-05-13 05:38:24 +00:00
def test_directory(self):
'''
file.directory
'''
name = os.path.join(integration.TMP, 'a_new_dir')
ret = self.run_state(
'file.directory',
name=name,
)
self.assertTrue(os.path.isdir(name))
result = ret[next(iter(ret))]['result']
2012-05-13 05:38:24 +00:00
self.assertTrue(result)
def test_test_directory(self):
'''
file.directory
'''
name = os.path.join(integration.TMP, 'a_not_dir')
ret = self.run_state(
'file.directory',
test=True,
name=name,
)
self.assertFalse(os.path.isdir(name))
result = ret[next(iter(ret))]['result']
self.assertIsNone(result)
2012-05-13 06:54:28 +00:00
def test_recurse(self):
'''
file.recurse
'''
name = os.path.join(integration.TMP, 'recurse_dir')
ret = self.run_state(
'file.recurse',
name=name,
source='salt://grail',
)
self.assertTrue(os.path.isfile(os.path.join(name, '36', 'scene')))
result = ret[next(iter(ret))]['result']
2012-05-13 06:54:28 +00:00
self.assertTrue(result)
2012-05-13 07:02:05 +00:00
def test_test_recurse(self):
'''
file.recurse test interface
'''
name = os.path.join(integration.TMP, 'recurse_test_dir')
ret = self.run_state(
'file.recurse',
test=True,
name=name,
source='salt://grail',
)
self.assertFalse(os.path.isfile(os.path.join(name, '36', 'scene')))
result = ret[next(iter(ret))]['result']
2012-05-13 07:02:05 +00:00
self.assertIsNone(result)
2012-05-13 07:20:28 +00:00
def test_sed(self):
'''
file.sed
'''
name = os.path.join(integration.TMP, 'sed_test')
with open(name, 'w+') as fp_:
fp_.write('change_me')
ret = self.run_state(
'file.sed',
name=name,
before='change',
after='salt'
)
with open(name, 'r') as fp_:
self.assertIn('salt', fp_.read())
result = ret[next(iter(ret))]['result']
2012-05-13 07:20:28 +00:00
self.assertTrue(result)
2012-05-13 07:24:26 +00:00
def test_test_sed(self):
'''
file.sed test integration
'''
2012-05-13 07:35:01 +00:00
name = os.path.join(integration.TMP, 'sed_test_test')
2012-05-13 07:24:26 +00:00
with open(name, 'w+') as fp_:
fp_.write('change_me')
ret = self.run_state(
'file.sed',
test=True,
name=name,
before='change',
after='salt'
)
with open(name, 'r') as fp_:
self.assertIn('change', fp_.read())
result = ret[next(iter(ret))]['result']
2012-05-13 07:24:26 +00:00
self.assertIsNone(result)
2012-05-13 07:35:01 +00:00
def test_comment(self):
'''
file.comment
'''
name = os.path.join(integration.TMP, 'comment_test')
# write a line to file
2012-05-13 07:35:01 +00:00
with open(name, 'w+') as fp_:
fp_.write('comment_me')
# comment once
_ret = self.run_state('file.comment', name=name, regex='^comment')
# line is commented
2012-05-13 07:35:01 +00:00
with open(name, 'r') as fp_:
self.assertTrue(fp_.read().startswith('#comment'))
# result is positive
2012-06-04 22:40:34 +00:00
ret = list(_ret.values())[0]
self.assertTrue(ret['result'], ret)
# comment twice
_ret = self.run_state('file.comment', name=name, regex='^comment')
# line is still commented
with open(name, 'r') as fp_:
self.assertTrue(fp_.read().startswith('#comment'))
# result is still positive
2012-06-04 22:40:34 +00:00
ret = list(_ret.values())[0]
self.assertTrue(ret['result'], ret)
2012-05-13 07:38:31 +00:00
def test_test_comment(self):
'''
file.comment test interface
'''
name = os.path.join(integration.TMP, 'comment_test_test')
with open(name, 'w+') as fp_:
fp_.write('comment_me')
ret = self.run_state(
'file.comment',
test=True,
name=name,
regex='.*comment.*',
)
with open(name, 'r') as fp_:
self.assertNotIn('#comment', fp_.read())
result = ret[next(iter(ret))]['result']
2012-05-13 07:38:31 +00:00
self.assertIsNone(result)
2012-05-13 07:54:20 +00:00
def test_uncomment(self):
'''
file.uncomment
'''
name = os.path.join(integration.TMP, 'uncomment_test')
with open(name, 'w+') as fp_:
fp_.write('#comment_me')
ret = self.run_state('file.uncomment', name=name, regex='^comment')
2012-05-13 07:54:20 +00:00
with open(name, 'r') as fp_:
self.assertNotIn('#comment', fp_.read())
result = ret[next(iter(ret))]['result']
2012-05-13 07:54:20 +00:00
self.assertTrue(result)
def test_test_uncomment(self):
'''
file.comment test interface
'''
name = os.path.join(integration.TMP, 'uncomment_test_test')
with open(name, 'w+') as fp_:
fp_.write('#comment_me')
ret = self.run_state(
'file.uncomment',
test=True,
name=name,
regex='^comment.*',
)
with open(name, 'r') as fp_:
self.assertIn('#comment', fp_.read())
result = ret[next(iter(ret))]['result']
2012-05-13 07:54:20 +00:00
self.assertIsNone(result)
2012-05-13 08:00:01 +00:00
def test_append(self):
'''
file.append
'''
name = os.path.join(integration.TMP, 'append_test')
with open(name, 'w+') as fp_:
fp_.write('#salty!')
ret = self.run_state(
'file.append',
name=name,
text='cheese',
)
with open(name, 'r') as fp_:
self.assertIn('cheese', fp_.read())
result = ret[next(iter(ret))]['result']
2012-05-13 08:00:01 +00:00
self.assertTrue(result)
2012-05-13 08:02:20 +00:00
def test_test_append(self):
'''
file.append test interface
'''
2012-05-13 08:06:46 +00:00
name = os.path.join(integration.TMP, 'append_test_test')
2012-05-13 08:02:20 +00:00
with open(name, 'w+') as fp_:
fp_.write('#salty!')
ret = self.run_state(
'file.append',
test=True,
name=name,
text='cheese',
)
with open(name, 'r') as fp_:
self.assertNotIn('cheese', fp_.read())
result = ret[next(iter(ret))]['result']
2012-05-13 08:02:20 +00:00
self.assertIsNone(result)
2012-05-13 08:06:46 +00:00
def test_touch(self):
'''
file.touch
'''
name = os.path.join(integration.TMP, 'touch_test')
ret = self.run_state(
'file.touch',
name=name,
)
self.assertTrue(os.path.isfile(name))
result = ret[next(iter(ret))]['result']
2012-05-13 08:06:46 +00:00
self.assertTrue(result)
def test_test_touch(self):
'''
file.touch test interface
'''
name = os.path.join(integration.TMP, 'touch_test')
ret = self.run_state(
'file.touch',
test=True,
name=name,
)
self.assertFalse(os.path.isfile(name))
result = ret[next(iter(ret))]['result']
self.assertIsNone(result)
if __name__ == "__main__":
import sys
from saltunittest import TestLoader, TextTestRunner
from integration import TestDaemon
loader = TestLoader()
tests = loader.loadTestsFromTestCase(FileTest)
print('Setting up Salt daemons to execute tests')
with TestDaemon():
runner = TextTestRunner(verbosity=1).run(tests)
sys.exit(runner.wasSuccessful())