1""" 2 :codeauthor: Jayesh Kariya <jayeshk@saltstack.com> 3""" 4import pytest 5import salt.states.boto_route53 as boto_route53 6from tests.support.mock import MagicMock, patch 7 8 9@pytest.fixture 10def configure_loader_modules(): 11 return {boto_route53: {}} 12 13 14def test_present(): 15 """ 16 Test to ensure the Route53 record is present. 17 """ 18 name = "test.example.com." 19 value = "1.1.1.1" 20 zone = "example.com." 21 record_type = "A" 22 23 ret = {"name": name, "result": False, "changes": {}, "comment": ""} 24 25 mock = MagicMock(side_effect=[{}, {}, {"value": ""}, False]) 26 mock_bool = MagicMock(return_value=False) 27 with patch.dict( 28 boto_route53.__salt__, 29 {"boto_route53.get_record": mock, "boto_route53.add_record": mock_bool}, 30 ): 31 with patch.dict(boto_route53.__opts__, {"test": False}): 32 comt = "Failed to add {} Route53 record.".format(name) 33 ret.update({"comment": comt}) 34 assert boto_route53.present(name, value, zone, record_type) == ret 35 36 with patch.dict(boto_route53.__opts__, {"test": True}): 37 comt = "Route53 record {} set to be added.".format(name) 38 ret.update({"comment": comt, "result": None}) 39 assert boto_route53.present(name, value, zone, record_type) == ret 40 41 comt = "Route53 record {} set to be updated.".format(name) 42 ret.update({"comment": comt}) 43 assert boto_route53.present(name, value, zone, record_type) == ret 44 45 ret.update({"comment": "", "result": True}) 46 assert boto_route53.present(name, value, zone, record_type) == ret 47 48 49def test_absent(): 50 """ 51 Test to ensure the Route53 record is deleted. 52 """ 53 name = "test.example.com." 54 zone = "example.com." 55 record_type = "A" 56 57 ret = {"name": name, "result": True, "changes": {}, "comment": ""} 58 59 mock = MagicMock(side_effect=[False, True]) 60 with patch.dict(boto_route53.__salt__, {"boto_route53.get_record": mock}): 61 comt = "{} does not exist.".format(name) 62 ret.update({"comment": comt}) 63 assert boto_route53.absent(name, zone, record_type) == ret 64 65 with patch.dict(boto_route53.__opts__, {"test": True}): 66 comt = "Route53 record {} set to be deleted.".format(name) 67 ret.update({"comment": comt, "result": None}) 68 assert boto_route53.absent(name, zone, record_type) == ret 69