@@ -74,6 +74,30 @@ def simple_record_set(private_hosted_zone):
7474
7575 delete_route53_resource (ref )
7676
77+ @pytest .fixture (scope = "function" )
78+ def fqdn_record_set (private_hosted_zone ):
79+ zone_id , domain = private_hosted_zone
80+ parsed_zone_id = zone_id .split ("/" )[- 1 ]
81+ ip_address = socket .inet_ntoa (struct .pack ('>I' , random .randint (1 , 0xffffffff )))
82+ simple_record_name = random_suffix_name ("fqdn-record-name" , 32 )
83+
84+ replacements = REPLACEMENT_VALUES .copy ()
85+ replacements ["FQDN_RECORD_NAME" ] = simple_record_name
86+ replacements ["FQDN_RECORD_NAME_SPEC" ] = simple_record_name + "hello-world.example.com."
87+ replacements ["HOSTED_ZONE_ID" ] = parsed_zone_id
88+ replacements ["IP_ADDR" ] = ip_address
89+
90+ ref , cr = create_route53_resource (
91+ "recordsets" ,
92+ simple_record_name ,
93+ "record_set_fqdn" ,
94+ replacements
95+ )
96+
97+ yield ref , cr
98+
99+ delete_route53_resource (ref )
100+
77101def status_id_exists (ref ):
78102 for _ in range (STATUS_UPDATE_RETRY_COUNT ):
79103 record = get_route53_resource (ref )
@@ -131,3 +155,21 @@ def test_crud_simple_record(self, route53_client, private_hosted_zone, simple_re
131155
132156 # Check record set has been updated in AWS
133157 route53_validator .assert_record_set (updated , domain )
158+
159+
160+ def test_cd_fqdn_record (self , route53_client , private_hosted_zone , fqdn_record_set ):
161+ zone_id , domain = private_hosted_zone
162+ assert zone_id
163+
164+ # Check hosted zone exists in AWS
165+ route53_validator = Route53Validator (route53_client )
166+ route53_validator .assert_hosted_zone (zone_id )
167+
168+ ref , cr = fqdn_record_set
169+ assert status_id_exists (ref ) is True
170+
171+ # Check record set exists in AWS
172+ route53_validator .assert_record_set (cr , domain )
173+
174+ # Ensure that the status eventually switches from PENDING to INSYNC
175+ assert verify_status_insync (ref ) is True
0 commit comments