# -*- coding: utf-8 -*-
"""
    tests.unit.cloud
    ~~~~~~~~~~~~~~~~
"""
from __future__ import absolute_import, print_function, unicode_literals

import salt.cloud
from tests.support.helpers import slowTest
from tests.support.unit import TestCase


class CloudTest(TestCase):
    @slowTest
    def test_vm_config_merger(self):
        """
        Validate the vm's config is generated correctly.

        https://github.com/saltstack/salt/issues/49226
        """
        main = {
            "minion": {"master": "172.31.39.213"},
            "log_file": "var/log/salt/cloud.log",
            "pool_size": 10,
        }
        provider = {
            "private_key": "dwoz.pem",
            "grains": {"foo1": "bar", "foo2": "bang"},
            "availability_zone": "us-west-2b",
            "driver": "ec2",
            "ssh_interface": "private_ips",
            "ssh_username": "admin",
            "location": "us-west-2",
        }
        profile = {
            "profile": "default",
            "grains": {"meh2": "bar", "meh1": "foo"},
            "provider": "ec2-default:ec2",
            "ssh_username": "admin",
            "image": "ami-0a1fbca0e5b419fd1",
            "size": "t2.micro",
        }
        vm = salt.cloud.Cloud.vm_config("test_vm", main, provider, profile, {})
        self.assertEqual(
            {
                "minion": {"master": "172.31.39.213"},
                "log_file": "var/log/salt/cloud.log",
                "pool_size": 10,
                "private_key": "dwoz.pem",
                "grains": {
                    "foo1": "bar",
                    "foo2": "bang",
                    "meh2": "bar",
                    "meh1": "foo",
                },
                "availability_zone": "us-west-2b",
                "driver": "ec2",
                "ssh_interface": "private_ips",
                "ssh_username": "admin",
                "location": "us-west-2",
                "profile": "default",
                "provider": "ec2-default:ec2",
                "image": "ami-0a1fbca0e5b419fd1",
                "size": "t2.micro",
                "name": "test_vm",
            },
            vm,
        )
