import ssl

import docker.client
from docker.constants import DEFAULT_TIMEOUT_SECONDS

import deck_chores.config


cfg, generate_config = deck_chores.config.cfg, deck_chores.config.generate_config


def test_default_config(monkeypatch):
    def docker_api_version(self):
        return '1.37'

    def every_file_exists(*args, **kwargs):
        return True

    monkeypatch.setenv('DEBUG', '0')
    monkeypatch.setattr(deck_chores.config, 'exists', every_file_exists)
    monkeypatch.setattr(
        docker.client.APIClient, '_retrieve_server_version', docker_api_version
    )

    generate_config()
    result = cfg.__dict__.copy()
    assert isinstance(result.pop('client'), docker.client.DockerClient)
    assert result == {
        'assert_hostname': False,
        'client_timeout': DEFAULT_TIMEOUT_SECONDS,
        'docker_host': 'unix://var/run/docker.sock',
        'debug': False,
        'default_max': 1,
        'default_flags': ('image', 'service'),
        'job_executor_pool_size': 10,
        'label_ns': 'deck-chores.',
        'logformat': '{asctime}|{levelname:8}|{message}',
        'service_identifiers': (
            'com.docker.compose.project',
            'com.docker.compose.service',
        ),
        'ssl_version': ssl.PROTOCOL_TLS,
        'timezone': 'UTC',
    }