From b8afeb637182aad93929a1b4d707c9f7f7a0ae9e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 8 Aug 2026 09:21:18 +0000 Subject: [PATCH 1/2] Initial plan From 06e874cf979cfca0cf8d9da26b88463ad4739725 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 8 Aug 2026 09:25:54 +0000 Subject: [PATCH 2/2] Fix MySQL firewall rule create payload Co-authored-by: a0x1ab <59631311+a0x1ab@users.noreply.github.com> --- .../azure/cli/command_modules/mysql/custom.py | 9 ++-- .../mysql/tests/latest/test_mysql_custom.py | 48 +++++++++++++++++++ 2 files changed, 52 insertions(+), 5 deletions(-) create mode 100644 src/azure-cli/azure/cli/command_modules/mysql/tests/latest/test_mysql_custom.py diff --git a/src/azure-cli/azure/cli/command_modules/mysql/custom.py b/src/azure-cli/azure/cli/command_modules/mysql/custom.py index de1c74feb5b..96e958bb402 100644 --- a/src/azure-cli/azure/cli/command_modules/mysql/custom.py +++ b/src/azure-cli/azure/cli/command_modules/mysql/custom.py @@ -123,11 +123,10 @@ def firewall_rule_create_func(cmd, client, resource_group_name, server_name, fir logger.warning('Configuring server firewall rule to accept connections from \'%s\' to \'%s\'...', start_ip_address, end_ip_address) - parameters = { - 'name': firewall_rule_name, - 'start_ip_address': start_ip_address, - 'end_ip_address': end_ip_address - } + parameters = models.FirewallRule( + start_ip_address=start_ip_address, + end_ip_address=end_ip_address + ) return client.begin_create_or_update( resource_group_name, diff --git a/src/azure-cli/azure/cli/command_modules/mysql/tests/latest/test_mysql_custom.py b/src/azure-cli/azure/cli/command_modules/mysql/tests/latest/test_mysql_custom.py new file mode 100644 index 00000000000..fee7b2f69c4 --- /dev/null +++ b/src/azure-cli/azure/cli/command_modules/mysql/tests/latest/test_mysql_custom.py @@ -0,0 +1,48 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- +import unittest +from unittest.mock import patch + +from ... import custom + + +class MysqlFlexibleServerFirewallRuleCustomTest(unittest.TestCase): + + def test_firewall_rule_create_uses_properties_payload(self): + client = _FakeFirewallRulesClient() + + with patch.object(custom, 'validate_public_access_server'): + custom.firewall_rule_create_func( + cmd=None, + client=client, + resource_group_name='rg', + server_name='server', + firewall_rule_name='allow-myip', + start_ip_address='203.0.113.10', + end_ip_address='203.0.113.10') + + self.assertEqual('rg', client.resource_group_name) + self.assertEqual('server', client.server_name) + self.assertEqual('allow-myip', client.firewall_rule_name) + self.assertEqual({ + 'properties': { + 'startIpAddress': '203.0.113.10', + 'endIpAddress': '203.0.113.10' + } + }, client.parameters.as_dict()) + + +class _FakeFirewallRulesClient: + + def begin_create_or_update(self, resource_group_name, server_name, firewall_rule_name, parameters): + self.resource_group_name = resource_group_name + self.server_name = server_name + self.firewall_rule_name = firewall_rule_name + self.parameters = parameters + return parameters + + +if __name__ == '__main__': + unittest.main()