"""Mock classes used in tests."""

GDM_SERVER_PAYLOAD = [
    {
        "data": {
            "Content-Type": "plex/media-server",
            "Name": "plextest",
            "Port": "32400",
            "Resource-Identifier": "1234567890123456789012345678901234567890",
            "Updated-At": "157762684800",
            "Version": "1.0",
        },
        "from": ("1.2.3.4", 32414),
    }
]

GDM_CLIENT_PAYLOAD = [
    {
        "data": {
            "Content-Type": "plex/media-player",
            "Device-Class": "stb",
            "Name": "plexamp",
            "Port": "36000",
            "Product": "Plexamp",
            "Protocol": "plex",
            "Protocol-Capabilities": "timeline,playback,playqueues,playqueues-creation",
            "Protocol-Version": "1",
            "Resource-Identifier": "client-2",
            "Version": "1.1.0",
        },
        "from": ("1.2.3.10", 32412),
    },
    {
        "data": {
            "Content-Type": "plex/media-player",
            "Device-Class": "pc",
            "Name": "Chrome",
            "Port": "32400",
            "Product": "Plex Web",
            "Protocol": "plex",
            "Protocol-Capabilities": "timeline,playback,navigation,mirror,playqueues",
            "Protocol-Version": "3",
            "Resource-Identifier": "client-1",
            "Version": "4.40.1",
        },
        "from": ("1.2.3.4", 32412),
    },
    {
        "data": {
            "Content-Type": "plex/media-player",
            "Device-Class": "mobile",
            "Name": "SHIELD Android TV",
            "Port": "32500",
            "Product": "Plex for Android (TV)",
            "Protocol": "plex",
            "Protocol-Capabilities": "timeline,playback,navigation,mirror,playqueues,provider-playback",
            "Protocol-Version": "1",
            "Resource-Identifier": "client-999",
            "Updated-At": "1597686153",
            "Version": "8.5.0.19697",
        },
        "from": ("1.2.3.11", 32412),
    },
]


class MockGDM:
    """Mock a GDM instance."""

    def __init__(self, disabled=False):
        """Initialize the object."""
        self.entries = []
        self.disabled = disabled

    def scan(self, scan_for_clients=False):
        """Mock the scan call."""
        if self.disabled:
            return

        if scan_for_clients:
            self.entries = GDM_CLIENT_PAYLOAD
        else:
            self.entries = GDM_SERVER_PAYLOAD