# Copyright 2012 OpenStack Foundation
# All Rights Reserved.
#
#    Licensed under the Apache License, Version 2.0 (the "License"); you may
#    not use this file except in compliance with the License. You may obtain
#    a copy of the License at
#
#         http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
#    License for the specific language governing permissions and limitations
#    under the License.

from novaclient.tests.v1_1 import test_hypervisors
from novaclient.tests.v3 import fakes


class HypervisorsTest(test_hypervisors.HypervisorsTest):
    def setUp(self):
        super(HypervisorsTest, self).setUp()
        self.cs = self._get_fake_client()

    def _get_fake_client(self):
        return fakes.FakeClient()

    def test_hypervisor_search(self):
        expected = [
            dict(id=1234, hypervisor_hostname='hyper1'),
            dict(id=5678, hypervisor_hostname='hyper2'),
            ]

        result = self.cs.hypervisors.search('hyper')
        self.cs.assert_called('GET', '/os-hypervisors/search?query=hyper')

        for idx, hyper in enumerate(result):
            self.compare_to_expected(expected[idx], hyper)

    def test_hypervisor_servers(self):
        expected = dict(id=1234,
                        hypervisor_hostname='hyper1',
                        servers=[
                            dict(name='inst1', uuid='uuid1'),
                            dict(name='inst2', uuid='uuid2')])

        result = self.cs.hypervisors.servers('1234')
        self.cs.assert_called('GET', '/os-hypervisors/1234/servers')

        self.compare_to_expected(expected, result)
