/
/
/
1"""Unit tests for AirPlay player."""
2
3from unittest.mock import MagicMock
4
5import pytest
6
7from music_assistant.providers.airplay.player import AirPlayPlayer
8
9
10@pytest.mark.parametrize(
11 ("aiplay_properties", "raop_properties", "expected"),
12 [
13 ({b"flags": b"0x200"}, None, True),
14 ({b"sf": b"0x201"}, None, True),
15 ({b"flags": b"0x4"}, None, False),
16 ({b"sf": b"0x8"}, None, True),
17 ({b"flags": b"0x9"}, None, True),
18 (None, {b"flags": "0x200"}, True),
19 (None, {b"sf": b"0x201"}, True),
20 (None, {b"flags": b"0x4"}, False),
21 (None, {b"sf": b"0x8"}, True),
22 (None, {b"flags": b"0x9"}, True),
23 ({}, {}, False),
24 ],
25)
26def test_requires_pairing(
27 aiplay_properties: dict[bytes, bytes] | None,
28 raop_properties: dict[bytes, bytes] | None,
29 expected: bool,
30) -> None:
31 """Test the _requires_pairing method of AirPlayPlayer."""
32 if aiplay_properties is not None:
33 aiplay_discovery_info = MagicMock()
34 aiplay_discovery_info.properties = aiplay_properties
35 else:
36 aiplay_discovery_info = None
37 if raop_properties is not None:
38 raop_discovery_info = MagicMock()
39 raop_discovery_info.properties = raop_properties
40 else:
41 raop_discovery_info = None
42 player = AirPlayPlayer(
43 provider=MagicMock(),
44 player_id="test_player",
45 display_name="Test Player",
46 address="127.0.0.1",
47 manufacturer="Test Manufacturer",
48 model="Test Model",
49 raop_discovery_info=raop_discovery_info,
50 airplay_discovery_info=aiplay_discovery_info,
51 )
52 assert player._requires_pairing() == expected
53