"""The tests for the Vultr component."""
from copy import deepcopy
import json
import unittest
from unittest.mock import patch

import requests_mock

from homeassistant import setup
import homeassistant.components.vultr as vultr

from tests.common import (
    get_test_home_assistant, load_fixture)

VALID_CONFIG = {
    'vultr': {
        'api_key': 'ABCDEFG1234567'
    }
}


class TestVultr(unittest.TestCase):
    """Tests the Vultr component."""

    def setUp(self):
        """Initialize values for this test case class."""
        self.hass = get_test_home_assistant()
        self.config = VALID_CONFIG

    def tearDown(self):  # pylint: disable=invalid-name
        """Stop everything that we started."""
        self.hass.stop()

    @requests_mock.Mocker()
    def test_setup(self, mock):
        """Test successful setup."""
        with patch(
            'vultr.Vultr.server_list',
            return_value=json.loads(
                load_fixture('vultr_server_list.json'))):
            response = vultr.setup(self.hass, self.config)
        assert response

    def test_setup_no_api_key(self):
        """Test failed setup with missing API Key."""
        conf = deepcopy(self.config)
        del conf['vultr']['api_key']
        assert not setup.setup_component(self.hass, vultr.DOMAIN, conf)