From 6b9a6ce65bc204b1fe8d887eb5261445a588d8e5 Mon Sep 17 00:00:00 2001 From: David Cermak Date: Mon, 22 Jul 2024 13:46:37 +0200 Subject: [PATCH] feat(mdns): Console test for changing TXT records --- components/mdns/tests/host_test/dnsfixture.py | 8 +++++--- components/mdns/tests/host_test/pytest_mdns.py | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/components/mdns/tests/host_test/dnsfixture.py b/components/mdns/tests/host_test/dnsfixture.py index e3b405123..6dcf0c99f 100644 --- a/components/mdns/tests/host_test/dnsfixture.py +++ b/components/mdns/tests/host_test/dnsfixture.py @@ -85,14 +85,16 @@ class DnsPythonWrapper: answers.append(full_answer) return answers - def check_record(self, name, query_type, expected=True): + def check_record(self, name, query_type, expected=True, expect=None): output = self.run_query(name, query_type=query_type) answers = self.parse_answer_section(output, query_type) logger.info(f'answers: {answers}') + if expect is None: + expect = name if expected: - assert any(name in answer for answer in answers), f"Expected service '{name}' not found in answer section" + assert any(expect in answer for answer in answers), f"Expected record '{expect}' not found in answer section" else: - assert not any(name in answer for answer in answers), f"Unexpected service '{name}' found in answer section" + assert not any(expect in answer for answer in answers), f"Unexpected record '{expect}' found in answer section" if __name__ == '__main__': diff --git a/components/mdns/tests/host_test/pytest_mdns.py b/components/mdns/tests/host_test/pytest_mdns.py index b45a6f3e7..04ce9f230 100644 --- a/components/mdns/tests/host_test/pytest_mdns.py +++ b/components/mdns/tests/host_test/pytest_mdns.py @@ -104,5 +104,20 @@ def test_remove_delegated_service(mdns_console, dig_app): dig_app.check_record('_test2._tcp.local', query_type='PTR', expected=False) +def test_update_txt(mdns_console, dig_app): + mdns_console.send_input('mdns_service_txt_set _test _tcp key1 value1') + dig_app.check_record('local._test._tcp.local', query_type='SRV', expected=True) + dig_app.check_record('_test._tcp.local', query_type='TXT', expected=True, expect='key1=value1') + mdns_console.send_input('mdns_service_txt_set _test _tcp key2 value2') + dig_app.check_record('_test._tcp.local', query_type='TXT', expected=True, expect='key2=value2') + mdns_console.send_input('mdns_service_txt_remove _test _tcp key2') + dig_app.check_record('_test._tcp.local', query_type='TXT', expected=False, expect='key2=value2') + dig_app.check_record('_test._tcp.local', query_type='TXT', expected=True, expect='key1=value1') + mdns_console.send_input('mdns_service_txt_replace _test _tcp key3=value3 key4=value4') + dig_app.check_record('_test._tcp.local', query_type='TXT', expected=False, expect='key1=value1') + dig_app.check_record('_test._tcp.local', query_type='TXT', expected=True, expect='key3=value3') + dig_app.check_record('_test._tcp.local', query_type='TXT', expected=True, expect='key4=value4') + + if __name__ == '__main__': pytest.main(['-s', 'test_mdns.py'])