Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/constants/shared_constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ class MessageKeysEnum(str, Enum):
class DutPairingModeEnum(str, Enum):
ON_NETWORK = "onnetwork"
BLE_WIFI = "ble-wifi"
NFC_WIFI = "nfc-wifi"
BLE_THREAD = "ble-thread"
WIFIPAF_WIFI = "wifipaf-wifi"
NFC_THREAD = "nfc-thread"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ async def setup(self) -> None:
self.matter_config = TestEnvironmentConfigMatter(**self.config)
if self.matter_config.dut_config.pairing_mode in (
DutPairingModeEnum.NFC_THREAD,
DutPairingModeEnum.NFC_WIFI,
DutPairingModeEnum.THREAD,
):
# When PCSC reader is used in a Docker container, pollkit should
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,13 +85,13 @@ async def generate_command_arguments(
else:
arguments.append(f"--commissioning-method {pairing_mode}")

if pairing_mode == DutPairingModeEnum.BLE_WIFI:
if pairing_mode in (DutPairingModeEnum.BLE_WIFI, DutPairingModeEnum.NFC_WIFI):
arguments.append(f"--wifi-ssid {config.network.wifi.ssid}")
arguments.append(f"--wifi-passphrase {config.network.wifi.password}")
elif (
pairing_mode == DutPairingModeEnum.BLE_THREAD
or pairing_mode == DutPairingModeEnum.NFC_THREAD
or pairing_mode == DutPairingModeEnum.THREAD
elif pairing_mode in (
DutPairingModeEnum.BLE_THREAD,
DutPairingModeEnum.NFC_THREAD,
DutPairingModeEnum.THREAD,
):
dataset_hex = await __thread_dataset_hex(config.network.thread)
arguments.append(f"--thread-dataset-hex {dataset_hex}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,18 @@ async def test_generate_command_arguments_on_network() -> None:
] == arguments


@pytest.mark.parametrize(
"pairing_mode, commissioning_method",
[
(DutPairingModeEnum.BLE_WIFI, "ble-wifi"),
(DutPairingModeEnum.NFC_WIFI, "nfc-wifi"),
],
)
@pytest.mark.asyncio
async def test_generate_command_arguments_ble_wifi() -> None:
async def test_generate_command_arguments_wifi_pairing_mode(
pairing_mode: DutPairingModeEnum,
commissioning_method: str,
) -> None:
# Mock config
mock_config = default_environment_config.copy(deep=True) # type: ignore

Expand All @@ -111,7 +121,7 @@ async def test_generate_command_arguments_ble_wifi() -> None:
mock_dut_config = DutConfig(
discriminator="147",
setup_code="357",
pairing_mode=DutPairingModeEnum.BLE_WIFI,
pairing_mode=pairing_mode,
)

mock_config.dut_config = mock_dut_config
Expand All @@ -122,7 +132,7 @@ async def test_generate_command_arguments_ble_wifi() -> None:

assert [
"--trace-to json:log",
"--commissioning-method ble-wifi",
f"--commissioning-method {commissioning_method}",
"--wifi-ssid testharness",
"--wifi-passphrase wifi-password",
"--discriminator 147",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -378,7 +378,16 @@ async def test_pairing_on_network_command_params() -> None:


@pytest.mark.asyncio
async def test_pairing_ble_wifi_command_params() -> None:
@pytest.mark.parametrize(
"pairing_fn_name, pairing_cmd",
[
("pairing_ble_wifi", "ble-wifi"),
("pairing_nfc_wifi", "nfc-wifi"),
],
)
async def test_pairing_wifi_command_params(
pairing_fn_name: str, pairing_cmd: str
) -> None:
original_trace_setting_value = matter_settings.CHIP_TOOL_TRACE
if original_trace_setting_value is True:
matter_settings.CHIP_TOOL_TRACE = False
Expand All @@ -396,7 +405,8 @@ async def test_pairing_ble_wifi_command_params() -> None:
attribute="send_websocket_command",
return_value='{"results": []}',
) as mock_send_websocket_command:
result = await runner.pairing_ble_wifi(
pairing_fn = getattr(runner, pairing_fn_name)
result = await pairing_fn(
ssid=ssid,
password=password,
setup_code=setup_code,
Expand All @@ -406,7 +416,7 @@ async def test_pairing_ble_wifi_command_params() -> None:
expected_params = (
f"{hex(chip_server.node_id)} {ssid} {password} {setup_code} {discriminator}"
)
expected_command = f"pairing ble-wifi {expected_params}"
expected_command = f"pairing {pairing_cmd} {expected_params}"

assert result is True
mock_send_websocket_command.assert_awaited_once_with(expected_command)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
PAIRING_CMD = "pairing"
PAIRING_MODE_ONNETWORK = "onnetwork-long"
PAIRING_MODE_BLE_WIFI = "ble-wifi"
PAIRING_MODE_NFC_WIFI = "nfc-wifi"
PAIRING_MODE_BLE_THREAD = "ble-thread"
PAIRING_MODE_WIFIPAF_WIFI = "wifipaf-wifi"
PAIRING_MODE_NFC_THREAD = "nfc-thread"
Expand Down Expand Up @@ -287,6 +288,22 @@ async def pairing_ble_wifi(
discriminator,
)

async def pairing_nfc_wifi(
self,
ssid: str,
password: str,
setup_code: str,
discriminator: str,
) -> bool:
return await self.pairing(
PAIRING_MODE_NFC_WIFI,
hex(self.chip_server.node_id),
ssid,
password,
setup_code,
discriminator,
)

async def pairing_wifipaf_wifi(
self,
ssid: str,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,10 @@ async def setup(self) -> None:
logger.info("Setting up SDK container")
await self.sdk_container.start()

if self.config_matter.dut_config.pairing_mode is DutPairingModeEnum.NFC_THREAD:
if self.config_matter.dut_config.pairing_mode in (
DutPairingModeEnum.NFC_THREAD,
DutPairingModeEnum.NFC_WIFI,
):
# When PCSC reader is used in a Docker container, pollkit should
# be disabled
self.sdk_container.send_command("--disable-polkit", prefix="pcscd")
Expand Down Expand Up @@ -121,7 +124,9 @@ async def __pair_with_dut(self) -> None:
if self.config_matter.dut_config.pairing_mode is DutPairingModeEnum.ON_NETWORK:
pair_result = await self.__pair_with_dut_onnetwork()
elif self.config_matter.dut_config.pairing_mode is DutPairingModeEnum.BLE_WIFI:
pair_result = await self.__pair_with_dut_ble_wifi()
pair_result = await self.__pair_wifi_dut_wifi_modes("ble")
elif self.config_matter.dut_config.pairing_mode is DutPairingModeEnum.NFC_WIFI:
pair_result = await self.__pair_wifi_dut_wifi_modes("nfc")
elif (
self.config_matter.dut_config.pairing_mode is DutPairingModeEnum.BLE_THREAD
):
Expand All @@ -134,7 +139,7 @@ async def __pair_with_dut(self) -> None:
self.config_matter.dut_config.pairing_mode
is DutPairingModeEnum.WIFIPAF_WIFI
):
pair_result = await self.__pair_with_dut_wifipaf_wifi()
pair_result = await self.__pair_wifi_dut_wifi_modes("wifipaf")
elif self.config_matter.dut_config.pairing_mode is DutPairingModeEnum.THREAD:
pair_result = await self.__pair_with_dut_thread()
else:
Expand All @@ -149,22 +154,12 @@ async def __pair_with_dut_onnetwork(self) -> bool:
discriminator=self.config_matter.dut_config.discriminator,
)

async def __pair_with_dut_ble_wifi(self) -> bool:
if self.config_matter.network.wifi is None:
raise DUTCommissioningError("Tool config is missing wifi config.")

return await self.runner.pairing_ble_wifi(
ssid=self.config_matter.network.wifi.ssid,
password=self.config_matter.network.wifi.password,
setup_code=self.config_matter.dut_config.setup_code,
discriminator=self.config_matter.dut_config.discriminator,
)

async def __pair_with_dut_wifipaf_wifi(self) -> bool:
async def __pair_wifi_dut_wifi_modes(self, mode: str) -> bool:
if self.config_matter.network.wifi is None:
raise DUTCommissioningError("Tool config is missing wifi config.")

return await self.runner.pairing_wifipaf_wifi(
pairing_function = getattr(self.runner, f"pairing_{mode}_wifi")
return await pairing_function(
ssid=self.config_matter.network.wifi.ssid,
password=self.config_matter.network.wifi.password,
setup_code=self.config_matter.dut_config.setup_code,
Expand Down
Loading