def test_get_modified_attributes_for_empty_lists_diff(self): ''' validate modified attributes for empty lists with diff ''' current = {'snapmirror_label': [], 'state': 'present'} desired = {'snapmirror_label': [], 'state': 'present'} my_obj = na_helper() result = my_obj.get_modified_attributes(current, desired, True) assert result == {}
def test_get_modified_attributes_for_no_change(self): ''' validate modified attributes for same data in current and desired ''' current = {'name': 'test'} desired = {'name': 'test'} my_obj = na_helper() result = my_obj.get_modified_attributes(current, desired) assert result == {}
def test_get_modified_attributes_for_list_diff(self): ''' validate modified attributes for list diff ''' current = {'name': ['test', 'abcd'], 'state': 'present'} desired = {'name': ['abcd', 'abc'], 'state': 'present'} my_obj = na_helper() result = my_obj.get_modified_attributes(current, desired, True) assert result == {'name': ['abc']}
def test_get_modified_attributes_for_intersecting_list_of_dicts(self): ''' validate modified attributes for list diff ''' current = { 'address_blocks': [{ 'start': '10.10.10.23', 'size': 5 }, { 'start': '10.10.10.30', 'size': 5 }] } desired = { 'address_blocks': [{ 'start': '10.10.10.23', 'size': 5 }, { 'start': '10.10.10.30', 'size': 5 }, { 'start': '10.20.10.40', 'size': 5 }] } my_obj = na_helper() result = my_obj.get_modified_attributes(current, desired, True) assert result == { 'address_blocks': [{ 'start': '10.20.10.40', 'size': 5 }] }
def test_filter_list_dict_list(self): ''' simple list return simple list ''' my_obj = na_helper() arg = [ None, [1, None, 3], dict(a=None, b=[7, None, 9], c=None, d=dict(u=None, v=10)), None, 5 ] expected = [[1, 3], dict(b=[7, 9], d=dict(v=10)), 5] result = my_obj.filter_out_none_entries(arg) assert expected == result
def test_get_modified_attributes_for_an_empty_current_list_diff(self): ''' validate modified attributes for an empty current list with diff''' current = {'snapmirror_label': [], 'state': 'present'} desired = { 'snapmirror_label': ['daily', 'weekly', 'monthly'], 'state': 'present' } my_obj = na_helper() result = my_obj.get_modified_attributes(current, desired, True) assert result == {'snapmirror_label': ['daily', 'weekly', 'monthly']}
def test_filter_typeerror_on_str(self): ''' empty list return empty list ''' my_obj = na_helper() arg = "" with pytest.raises(TypeError) as exc: my_obj.filter_out_none_entries(arg) msg = "unexpected type <class 'str'>" if sys.version_info < (3, 0): # the assert fails on 2.x return assert exc.value.args[0] == msg
def test_filter_dict_list_dict(self): ''' simple dict return simple dict ''' my_obj = na_helper() arg = dict(a=None, b=[dict(u=1, v=None, w=2), 5, None, dict(x=6, y=None)], c=dict(), d=2, e=3) expected = dict(b=[dict(u=1, w=2), 5, dict(x=6)], d=2, e=3) result = my_obj.filter_out_none_entries(arg) assert expected == result
def test_get_modified_attributes_for_current_list_with_duplicates(self): ''' validate modified attributes for current list with duplicates ''' current = { 'schedule': ['hourly', 'daily', 'daily', 'weekly', 'monthly', 'daily'], 'state': 'present' } desired = { 'schedule': ['daily', 'daily', 'weekly', 'monthly'], 'state': 'present' } my_obj = na_helper() result = my_obj.get_modified_attributes(current, desired, False) assert result == {'schedule': ['daily', 'daily', 'weekly', 'monthly']}
def test_required_is_not_set_to_none(self): ''' if a key is present, without a value, Ansible sets it to None ''' my_obj = na_helper() my_module = MockModule() print(my_module.argument_spec) with pytest.raises(AnsibleFailJson) as exc: my_obj.check_and_set_parameters(my_module) msg = 'required_param requires a value, got: None' assert exc.value.args[0]['msg'] == msg # force a value different than None my_module.params['required_param'] = 1 my_params = my_obj.check_and_set_parameters(my_module) assert set(my_params.keys()) == set( ['required_param', 'feature_flags'])
def test_get_modified_attributes_equal_lists_with_duplicates_diff(self): ''' validate modified attributes for equal lists with duplicates with diff ''' current = { 'schedule': ['hourly', 'daily', 'daily', 'weekly', 'monthly', 'daily'], 'state': 'present' } desired = { 'schedule': ['hourly', 'daily', 'daily', 'weekly', 'monthly', 'daily'], 'state': 'present' } my_obj = na_helper() result = my_obj.get_modified_attributes(current, desired, True) assert result == {}
def test_get_caller(self): my_obj = na_helper() fname = my_obj.get_caller(1) assert fname == 'test_get_caller' def one(depth): return my_obj.get_caller(depth) assert one(1) == 'one' def two(): return one(2) assert two() == 'two' def three(): return two(), one(3) assert three() == ('two', 'test_get_caller')
def test_filter_empty_list(self): ''' empty list return empty list ''' my_obj = na_helper() arg = list() result = my_obj.filter_out_none_entries(arg) assert arg == result