"""Generate test fixtures"""
from datetime import datetime
import hashlib


def generate_sha256():
    """Generate a unique sha256"""
    h = hashlib.sha256()
    h.update(str(datetime.now().timestamp()).encode())
    return h.hexdigest()


def containers(project="default", containers=[]):
    """
    Args:
        project (str): Name of the compose project
        containers (dict):
            {
                'containers: [
                    'id': 'something'
                    'service': 'service_name',
                    'mounts: [{
                        'Source': '/home/user/stuff',
                        'Destination': '/srv/stuff',
                        'Type': 'bind' / 'volume'
                    }],
                ]
            }
    """
    def wrapper(*args, **kwargs):
        return [
        {
            'HostConfig': {'NetworkMode': 'restic-volume-backup_default'},
            'Id': container.get('id', generate_sha256()),
            'Image': 'restic-volume-backup_backup',
            'ImageID': 'sha256:4d9a81206af7d65563b85d06be160dc90dc20ade94edcf544261f0e1db4472b3',
            'Labels': {
                'com.docker.compose.oneoff': 'False',
                'com.docker.compose.project': project,
                'com.docker.compose.service': container['service'],
                **container.get('labels', {}),
            },
            'Mounts': container.get('mounts', []),
            'Names': ['/restic-volume-backup_backup_run_58d1699be0d8'],
            'NetworkSettings': {
                'Networks': {
                    'restic-volume-backup_default': {
                        'Aliases': None,
                        'DriverOpts': None,
                        'EndpointID': '96ac233ec96ae2318a15419c4d211bbc0d130fc33baaaba6dcd8c13328ba4b8f',
                        'Gateway': '172.22.0.1',
                        'GlobalIPv6Address': '',
                        'GlobalIPv6PrefixLen': 0,
                        'IPAMConfig': None,
                        'IPAddress': '172.22.0.2',
                        'IPPrefixLen': 16,
                        'IPv6Gateway': '',
                        'Links': None,
                        'MacAddress': '02:42:ac:16:00:02',
                        'NetworkID': '98886e14fddc2b3d31d15fbbfc3ea1b339626374ba2ff6c2dad406b1617ee09c',
                    }
                }
            },
            'State': 'running',
        }
        for container in containers]

    return wrapper