core/tests/components/apple_tv/common.py

86 lines
2.1 KiB
Python

"""Test code shared between test files."""
from typing import Any
from pyatv import conf, const, interface
from pyatv.const import Protocol
class MockPairingHandler(interface.PairingHandler):
"""Mock for PairingHandler in pyatv."""
def __init__(self, *args: Any) -> None:
"""Initialize a new MockPairingHandler."""
super().__init__(*args)
self.pin_code = None
self.paired = False
self.always_fail = False
def pin(self, pin):
"""Pin code used for pairing."""
self.pin_code = pin
self.paired = False
@property
def device_provides_pin(self):
"""Return True if remote device presents PIN code, else False."""
return self.service.protocol in [Protocol.MRP, Protocol.AirPlay]
@property
def has_paired(self):
"""If a successful pairing has been performed.
The value will be reset when stop() is called.
"""
return not self.always_fail and self.paired
async def begin(self):
"""Start pairing process."""
async def finish(self):
"""Stop pairing process."""
self.paired = True
self.service.credentials = self.service.protocol.name.lower() + "_creds"
def create_conf(name, address, *services):
"""Create an Apple TV configuration."""
atv = conf.AppleTV(name, address)
for service in services:
atv.add_service(service)
return atv
def mrp_service(enabled=True, unique_id="mrpid"):
"""Create example MRP service."""
return conf.ManualService(
unique_id,
Protocol.MRP,
5555,
{},
pairing_requirement=const.PairingRequirement.Mandatory,
enabled=enabled,
)
def airplay_service():
"""Create example AirPlay service."""
return conf.ManualService(
"airplayid",
Protocol.AirPlay,
7777,
{},
pairing_requirement=const.PairingRequirement.Mandatory,
)
def raop_service():
"""Create example RAOP service."""
return conf.ManualService(
"AABBCCDDEEFF",
Protocol.RAOP,
7000,
{},
pairing_requirement=const.PairingRequirement.Mandatory,
)