def test_modify(self): ''' Test if it modify an existing job in the schedule. ''' comm1 = ('Error: Unable to use "seconds", "minutes", "hours",' ' or "days" with "when" option.') comm2 = 'Unable to use "when" and "cron" options together. Ignoring.' comm3 = 'Job job2 does not exist in schedule.' chan = { 'diff': ('--- \n+++ \n@@ -0,0 +1,4 @@\n+function:test.ping\n+' 'jid_include:True\n+maxrunning:1\n+name:job3\n') } comm4 = 'Job: job3 would be modified in schedule.' with patch.dict(schedule.__opts__, {'schedule': { 'job1': JOB1, 'job3': {} }}): self.assertDictEqual( schedule.modify('job1', function='test.ping', seconds=3600, when='2400'), { 'changes': {}, 'comment': comm1, 'result': False }) self.assertDictEqual( schedule.modify('job1', function='test.ping', when='2400', cron='2'), { 'changes': {}, 'comment': comm2, 'result': False }) self.assertDictEqual(schedule.modify('job2'), { 'changes': {}, 'comment': comm3, 'result': False }) self.assertDictEqual( schedule.modify('job1', function='test.ping'), { 'changes': {}, 'comment': 'Job job1 in correct state', 'result': True }) self.assertDictEqual( schedule.modify('job3', function='test.ping', test=True), { 'changes': chan, 'comment': comm4, 'result': True })
def test_modify(self): ''' Test if it modify an existing job in the schedule. ''' comm1 = ('Error: Unable to use "seconds", "minutes", "hours",' ' or "days" with "when" option.') comm2 = 'Unable to use "when" and "cron" options together. Ignoring.' comm3 = 'Job job2 does not exist in schedule.' comm4 = 'Job: job3 would be modified in schedule.' with patch.dict(schedule.__opts__, {'schedule': { 'job1': JOB1, 'job3': {} }}): self.assertDictEqual( schedule.modify('job1', function='test.ping', seconds=3600, when='2400'), { 'changes': {}, 'comment': comm1, 'result': False }) self.assertDictEqual( schedule.modify('job1', function='test.ping', when='2400', cron='2'), { 'changes': {}, 'comment': comm2, 'result': False }) self.assertDictEqual(schedule.modify('job2'), { 'changes': {}, 'comment': comm3, 'result': False }) self.assertDictEqual( schedule.modify('job1', function='test.ping'), { 'changes': {}, 'comment': 'Job job1 in correct state', 'result': True }) ret = schedule.modify('job3', function='test.ping', test=True) del ret['changes'][ 'diff'] # difflib formatting changes between 2.6 and 2.7 self.assertDictEqual(ret, { 'changes': {}, 'comment': comm4, 'result': True })
def test_modify(self): ''' Test if it modify an existing job in the schedule. ''' comm1 = ('Error: Unable to use "seconds", "minutes", "hours",' ' or "days" with "when" option.') comm2 = 'Unable to use "when" and "cron" options together. Ignoring.' comm3 = 'Job job2 does not exist in schedule.' comm4 = 'Job: job3 would be modified in schedule.' with patch.dict(schedule.__opts__, {'schedule': {'job1': JOB1, 'job3': {}}, 'sock_dir': SOCK_DIR}): mock = MagicMock(return_value=True) with patch.dict(schedule.__salt__, {'event.fire': mock}): _ret_value = {'complete': True, 'schedule': {'job1': JOB1, 'job3': {}}} with patch.object(SaltEvent, 'get_event', return_value=_ret_value): self.assertDictEqual(schedule.modify('job1', function='test.ping', seconds=3600, when='2400'), {'changes': {}, 'comment': comm1, 'result': False}) self.assertDictEqual(schedule.modify('job1', function='test.ping', when='2400', cron='2'), {'changes': {}, 'comment': comm2, 'result': False}) self.assertDictEqual(schedule.modify('job2'), {'changes': {}, 'comment': comm3, 'result': False}) self.assertDictEqual(schedule.modify('job1', function='test.ping'), {'changes': {}, 'comment': 'Job job1 in correct state', 'result': True}) ret = schedule.modify('job3', function='test.ping', test=True) if 'diff' in ret['changes']: del ret['changes']['diff'] # difflib formatting changes between 2.6 and 2.7 self.assertDictEqual(ret, {'changes': {}, 'comment': comm4, 'result': True})
def test_modify(self): """ Test if modifying job to the schedule. """ job1 = {"function": "salt", "seconds": 3600} comm1 = "Modified job: job1 in schedule." diff1 = ( "--- \n+++ \n@@ -1,3 +1,6 @@\n " "enabled:True\n function:salt\n" "-seconds:3600\n+jid_include:True\n" "+maxrunning:1\n+name:job1\n" "+seconds:60\n" ) diff4 = ( "--- \n+++ \n@@ -1,3 +1,5 @@\n " "enabled:True\n-function:salt\n" "-seconds:3600\n+function:test.version\n" "+jid_include:True\n+maxrunning:1\n" "+name:job1\n" ) expected1 = {"comment": comm1, "changes": {"diff": diff1}, "result": True} comm2 = ( 'Error: Unable to use "seconds", "minutes", "hours", ' 'or "days" with "when" option.' ) expected2 = {"comment": comm2, "changes": {}, "result": False} comm3 = 'Unable to use "when" and "cron" options together. Ignoring.' expected3 = {"comment": comm3, "changes": {}, "result": False} comm4 = "Job: job1 would be modified in schedule." expected4 = {"comment": comm4, "changes": {"diff": diff4}, "result": True} comm5 = "Job job2 does not exist in schedule." expected5 = {"comment": comm5, "changes": {}, "result": False} with patch.dict( schedule.__opts__, {"schedule": {"job1": job1}, "sock_dir": self.sock_dir} ): mock = MagicMock(return_value=True) with patch.dict(schedule.__salt__, {"event.fire": mock}): _ret_value = {"complete": True, "schedule": {"job1": job1}} with patch.object(SaltEvent, "get_event", return_value=_ret_value): ret = schedule.modify("job1", seconds="60") self.assertDictEqual(ret, expected1) _ret_value = {"complete": True, "schedule": {"job1": job1}} with patch.object(SaltEvent, "get_event", return_value=_ret_value): ret = schedule.modify( "job1", function="test.ping", seconds=3600, when="2400" ) self.assertDictEqual(ret, expected2) _ret_value = {"complete": True, "schedule": {"job1": job1}} with patch.object(SaltEvent, "get_event", return_value=_ret_value): ret = schedule.modify( "job1", function="test.ping", when="2400", cron="2" ) self.assertDictEqual(ret, expected3) _ret_value = {"complete": True, "schedule": {"job1": job1}} with patch.object(SaltEvent, "get_event", return_value=_ret_value): ret = schedule.modify("job1", function="test.version", test=True) self.assertDictEqual(ret, expected4) _ret_value = {"complete": True, "schedule": {}} with patch.object(SaltEvent, "get_event", return_value=_ret_value): ret = schedule.modify("job2", function="test.version", test=True) self.assertDictEqual(ret, expected5)
def test_modify(self): ''' Test if modifying job to the schedule. ''' job1 = {'function': 'salt', 'seconds': 3600} comm1 = 'Modified job: job1 in schedule.' diff1 = ('--- \n+++ \n@@ -1,3 +1,6 @@\n ' 'enabled:True\n function:salt\n' '-seconds:3600\n+jid_include:True\n' '+maxrunning:1\n+name:job1\n' '+seconds:60\n') diff4 = ('--- \n+++ \n@@ -1,3 +1,5 @@\n ' 'enabled:True\n-function:salt\n' '-seconds:3600\n+function:test.version\n' '+jid_include:True\n+maxrunning:1\n' '+name:job1\n') expected1 = {'comment': comm1, 'changes': {'diff': diff1}, 'result': True} comm2 = 'Error: Unable to use "seconds", "minutes", "hours", ' \ 'or "days" with "when" option.' expected2 = {'comment': comm2, 'changes': {}, 'result': False} comm3 = 'Unable to use "when" and "cron" options together. Ignoring.' expected3 = {'comment': comm3, 'changes': {}, 'result': False} comm4 = 'Job: job1 would be modified in schedule.' expected4 = {'comment': comm4, 'changes': {'diff': diff4}, 'result': True} comm5 = 'Job job2 does not exist in schedule.' expected5 = {'comment': comm5, 'changes': {}, 'result': False} with patch.dict(schedule.__opts__, {'schedule': {'job1': job1}, 'sock_dir': self.sock_dir}): mock = MagicMock(return_value=True) with patch.dict(schedule.__salt__, {'event.fire': mock}): _ret_value = {'complete': True, 'schedule': {'job1': job1}} with patch.object(SaltEvent, 'get_event', return_value=_ret_value): ret = schedule.modify('job1', seconds='60') self.assertDictEqual(ret, expected1) _ret_value = {'complete': True, 'schedule': {'job1': job1}} with patch.object(SaltEvent, 'get_event', return_value=_ret_value): ret = schedule.modify('job1', function='test.ping', seconds=3600, when='2400') self.assertDictEqual(ret, expected2) _ret_value = {'complete': True, 'schedule': {'job1': job1}} with patch.object(SaltEvent, 'get_event', return_value=_ret_value): ret = schedule.modify('job1', function='test.ping', when='2400', cron='2') self.assertDictEqual(ret, expected3) _ret_value = {'complete': True, 'schedule': {'job1': job1}} with patch.object(SaltEvent, 'get_event', return_value=_ret_value): ret = schedule.modify('job1', function='test.version', test=True) self.assertDictEqual(ret, expected4) _ret_value = {'complete': True, 'schedule': {}} with patch.object(SaltEvent, 'get_event', return_value=_ret_value): ret = schedule.modify('job2', function='test.version', test=True) self.assertDictEqual(ret, expected5)
def test_modify(sock_dir): """ Test if modifying job to the schedule. """ current_job1 = { "function": "salt", "seconds": "3600", "maxrunning": 1, "name": "job1", "enabled": True, "jid_include": True, } new_job1 = { "function": "salt", "seconds": "60", "maxrunning": 1, "name": "job1", "enabled": True, "jid_include": True, } comm1 = "Modified job: job1 in schedule." changes1 = { "job1": { "new": salt.utils.odict.OrderedDict(new_job1), "old": salt.utils.odict.OrderedDict(current_job1), } } new_job4 = { "function": "test.version", "seconds": "3600", "maxrunning": 1, "name": "job1", "enabled": True, "jid_include": True, } changes4 = { "job1": { "new": salt.utils.odict.OrderedDict(new_job4), "old": salt.utils.odict.OrderedDict(current_job1), } } expected1 = {"comment": comm1, "changes": changes1, "result": True} comm2 = ('Error: Unable to use "seconds", "minutes", "hours", ' 'or "days" with "when" option.') expected2 = {"comment": comm2, "changes": {}, "result": False} comm3 = 'Unable to use "when" and "cron" options together. Ignoring.' expected3 = {"comment": comm3, "changes": {}, "result": False} comm4 = "Job: job1 would be modified in schedule." expected4 = {"comment": comm4, "changes": changes4, "result": True} comm5 = "Job job2 does not exist in schedule." expected5 = {"comment": comm5, "changes": {}, "result": False} with patch.dict(schedule.__opts__, { "schedule": { "job1": current_job1 }, "sock_dir": sock_dir }): mock = MagicMock(return_value=True) with patch.dict(schedule.__salt__, {"event.fire": mock}): _ret_value = {"complete": True, "schedule": {"job1": current_job1}} with patch.object(SaltEvent, "get_event", return_value=_ret_value): ret = schedule.modify("job1", seconds="60") assert "job1" in ret["changes"] assert "new" in ret["changes"]["job1"] assert "old" in ret["changes"]["job1"] for key in [ "maxrunning", "function", "seconds", "jid_include", "name", "enabled", ]: assert (ret["changes"]["job1"]["new"][key] == expected1["changes"]["job1"]["new"][key]) assert (ret["changes"]["job1"]["old"][key] == expected1["changes"]["job1"]["old"][key]) assert ret["comment"] == expected1["comment"] assert ret["result"] == expected1["result"] _ret_value = {"complete": True, "schedule": {"job1": current_job1}} with patch.object(SaltEvent, "get_event", return_value=_ret_value): ret = schedule.modify("job1", function="test.ping", seconds=3600, when="2400") assert ret == expected2 _ret_value = {"complete": True, "schedule": {"job1": current_job1}} with patch.object(SaltEvent, "get_event", return_value=_ret_value): ret = schedule.modify("job1", function="test.ping", when="2400", cron="2") assert ret == expected3 _ret_value = {"complete": True, "schedule": {"job1": current_job1}} with patch.object(SaltEvent, "get_event", return_value=_ret_value): ret = schedule.modify("job1", function="test.version", test=True) assert "job1" in ret["changes"] assert "new" in ret["changes"]["job1"] assert "old" in ret["changes"]["job1"] for key in [ "maxrunning", "function", "seconds", "jid_include", "name", "enabled", ]: assert (ret["changes"]["job1"]["new"][key] == expected4["changes"]["job1"]["new"][key]) assert (ret["changes"]["job1"]["old"][key] == expected4["changes"]["job1"]["old"][key]) assert ret["comment"] == expected4["comment"] assert ret["result"] == expected4["result"] _ret_value = {"complete": True, "schedule": {}} with patch.object(SaltEvent, "get_event", return_value=_ret_value): ret = schedule.modify("job2", function="test.version", test=True) assert ret == expected5
def test_modify(sock_dir, job1): """ Test if modifying job to the schedule. """ current_job1 = { "function": "salt", "seconds": "3600", "maxrunning": 1, "name": "job1", "enabled": True, "jid_include": True, } new_job1 = { "function": "salt", "seconds": "60", "maxrunning": 1, "name": "job1", "enabled": True, "jid_include": True, } comm1 = "Modified job: job1 in schedule." changes1 = { "job1": { "new": salt.utils.odict.OrderedDict(new_job1), "old": salt.utils.odict.OrderedDict(current_job1), } } new_job4 = { "function": "test.version", "seconds": "3600", "maxrunning": 1, "name": "job1", "enabled": True, "jid_include": True, } changes4 = { "job1": { "new": salt.utils.odict.OrderedDict(new_job4), "old": salt.utils.odict.OrderedDict(current_job1), } } expected1 = {"comment": comm1, "changes": changes1, "result": True} comm2 = ('Error: Unable to use "seconds", "minutes", "hours", ' 'or "days" with "when" option.') expected2 = {"comment": comm2, "changes": {}, "result": False} comm3 = 'Unable to use "when" and "cron" options together. Ignoring.' expected3 = {"comment": comm3, "changes": {}, "result": False} comm4 = "Job: job1 would be modified in schedule." expected4 = {"comment": comm4, "changes": changes4, "result": True} comm5 = "Job job2 does not exist in schedule." expected5 = {"comment": comm5, "changes": {}, "result": False} with patch.dict(schedule.__opts__, { "schedule": { "job1": current_job1 }, "sock_dir": sock_dir }): mock = MagicMock(return_value=True) with patch.dict(schedule.__salt__, {"event.fire": mock}): _ret_value = {"complete": True, "schedule": {"job1": current_job1}} with patch.object(SaltEvent, "get_event", return_value=_ret_value): ret = schedule.modify("job1", seconds="60") assert "job1" in ret["changes"] assert "new" in ret["changes"]["job1"] assert "old" in ret["changes"]["job1"] for key in [ "maxrunning", "function", "seconds", "jid_include", "name", "enabled", ]: assert (ret["changes"]["job1"]["new"][key] == expected1["changes"]["job1"]["new"][key]) assert (ret["changes"]["job1"]["old"][key] == expected1["changes"]["job1"]["old"][key]) assert ret["comment"] == expected1["comment"] assert ret["result"] == expected1["result"] _ret_value = {"complete": True, "schedule": {"job1": current_job1}} with patch.object(SaltEvent, "get_event", return_value=_ret_value): ret = schedule.modify("job1", function="test.ping", seconds=3600, when="2400") assert ret == expected2 _ret_value = {"complete": True, "schedule": {"job1": current_job1}} with patch.object(SaltEvent, "get_event", return_value=_ret_value): ret = schedule.modify("job1", function="test.ping", when="2400", cron="2") assert ret == expected3 _ret_value = {"complete": True, "schedule": {"job1": current_job1}} with patch.object(SaltEvent, "get_event", return_value=_ret_value): ret = schedule.modify("job1", function="test.version", test=True) assert "job1" in ret["changes"] assert "new" in ret["changes"]["job1"] assert "old" in ret["changes"]["job1"] for key in [ "maxrunning", "function", "jid_include", "name", "enabled", ]: assert (ret["changes"]["job1"]["new"][key] == expected4["changes"]["job1"]["new"][key]) assert (ret["changes"]["job1"]["old"][key] == expected4["changes"]["job1"]["old"][key]) assert ret["comment"] == expected4["comment"] assert ret["result"] == expected4["result"] _ret_value = {"complete": True, "schedule": {}} with patch.object(SaltEvent, "get_event", return_value=_ret_value): ret = schedule.modify("job2", function="test.version", test=True) assert ret == expected5 _schedule_data = {"job1": job1} comm = "Modified job: job1 in schedule." changes = {"job1": "removed"} changes = { "job1": { "new": OrderedDict([ ("function", "test.version"), ("maxrunning", 1), ("name", "job1"), ("enabled", True), ("jid_include", True), ]), "old": OrderedDict([ ("function", "test.ping"), ("maxrunning", 1), ("name", "job1"), ("jid_include", True), ("enabled", True), ]), } } schedule_config_file = schedule._get_schedule_config_file() with patch.dict(schedule.__opts__, { "schedule": { "job1": "salt" }, "sock_dir": sock_dir }): with patch("salt.utils.files.fopen", mock_open(read_data="")) as fopen_mock: with patch.object(schedule, "list_", MagicMock(return_value=_schedule_data)): ret = schedule.modify("job1", function="test.version", offline="True") assert ret["comment"] == comm assert ret["result"] assert all([ True for k, v in ret["changes"]["job1"]["old"].items() if v == changes["job1"]["old"][k] ]) assert all([ True for k, v in ret["changes"]["job1"]["new"].items() if v == changes["job1"]["new"][k] ]) _call = call( b"schedule:\n job1: {enabled: true, function: test.version, jid_include: true, maxrunning: 1,\n name: job1}\n" ) write_calls = fopen_mock.filehandles[schedule_config_file][ 0].write._mock_mock_calls assert _call in write_calls