# Copyright 2018 FiberHome Telecommunication Technologies CO.,LTD
# 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 tempest.api.volume import base
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc


class VolumeServicesNegativeTest(base.BaseVolumeAdminTest):
    """Negative tests of volume services"""

    @classmethod
    def resource_setup(cls):
        super(VolumeServicesNegativeTest, cls).resource_setup()
        services = cls.admin_volume_services_client.list_services()['services']
        cls.host = services[0]['host']
        cls.binary = services[0]['binary']

    @decorators.attr(type='negative')
    @decorators.idempotent_id('3246ce65-ba70-4159-aa3b-082c28e4b484')
    def test_enable_service_with_invalid_host(self):
        """Test enabling volume service with invalid host should fail"""
        self.assertRaises(lib_exc.NotFound,
                          self.admin_volume_services_client.enable_service,
                          host='invalid_host', binary=self.binary)

    @decorators.attr(type='negative')
    @decorators.idempotent_id('c571f179-c6e6-4c50-a0ab-368b628a8ac1')
    def test_disable_service_with_invalid_binary(self):
        """Test disabling volume service with invalid binary should fail"""
        self.assertRaises(lib_exc.NotFound,
                          self.admin_volume_services_client.disable_service,
                          host=self.host, binary='invalid_binary')

    @decorators.attr(type='negative')
    @decorators.idempotent_id('77767b36-5e8f-4c68-a0b5-2308cc21ec64')
    def test_disable_log_reason_with_no_reason(self):
        """Test disabling volume service with none reason should fail"""
        self.assertRaises(lib_exc.BadRequest,
                          self.admin_volume_services_client.disable_log_reason,
                          host=self.host, binary=self.binary,
                          disabled_reason=None)

    @decorators.attr(type='negative')
    @decorators.idempotent_id('712bfab8-1f44-4eb5-a632-fa70bf78f05e')
    def test_freeze_host_with_invalid_host(self):
        """Test freezing volume service with invalid host should fail"""
        self.assertRaises(lib_exc.BadRequest,
                          self.admin_volume_services_client.freeze_host,
                          host='invalid_host')

    @decorators.attr(type='negative')
    @decorators.idempotent_id('7c6287c9-d655-47e1-9a11-76f6657a6dce')
    def test_thaw_host_with_invalid_host(self):
        """Test thawing volume service with invalid host should fail"""
        self.assertRaises(lib_exc.BadRequest,
                          self.admin_volume_services_client.thaw_host,
                          host='invalid_host')

# Copyright 2018 FiberHome Telecommunication Technologies CO.,LTD
# 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 tempest.api.volume import base
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc


class VolumeServicesNegativeTest(base.BaseVolumeAdminTest):
    """Negative tests of volume services"""

    @classmethod
    def resource_setup(cls):
        super(VolumeServicesNegativeTest, cls).resource_setup()
        services = cls.admin_volume_services_client.list_services()['services']
        cls.host = services[0]['host']
        cls.binary = services[0]['binary']

    @decorators.attr(type='negative')
    @decorators.idempotent_id('3246ce65-ba70-4159-aa3b-082c28e4b484')
    def test_enable_service_with_invalid_host(self):
        """Test enabling volume service with invalid host should fail"""
        self.assertRaises(lib_exc.NotFound,
                          self.admin_volume_services_client.enable_service,
                          host='invalid_host', binary=self.binary)

    @decorators.attr(type='negative')
    @decorators.idempotent_id('c571f179-c6e6-4c50-a0ab-368b628a8ac1')
    def test_disable_service_with_invalid_binary(self):
        """Test disabling volume service with invalid binary should fail"""
        self.assertRaises(lib_exc.NotFound,
                          self.admin_volume_services_client.disable_service,
                          host=self.host, binary='invalid_binary')

    @decorators.attr(type='negative')
    @decorators.idempotent_id('77767b36-5e8f-4c68-a0b5-2308cc21ec64')
    def test_disable_log_reason_with_no_reason(self):
        """Test disabling volume service with none reason should fail"""
        self.assertRaises(lib_exc.BadRequest,
                          self.admin_volume_services_client.disable_log_reason,
                          host=self.host, binary=self.binary,
                          disabled_reason=None)

    @decorators.attr(type='negative')
    @decorators.idempotent_id('712bfab8-1f44-4eb5-a632-fa70bf78f05e')
    def test_freeze_host_with_invalid_host(self):
        """Test freezing volume service with invalid host should fail"""
        self.assertRaises(lib_exc.BadRequest,
                          self.admin_volume_services_client.freeze_host,
                          host='invalid_host')

    @decorators.attr(type='negative')
    @decorators.idempotent_id('7c6287c9-d655-47e1-9a11-76f6657a6dce')
    def test_thaw_host_with_invalid_host(self):
        """Test thawing volume service with invalid host should fail"""
        self.assertRaises(lib_exc.BadRequest,
                          self.admin_volume_services_client.thaw_host,
                          host='invalid_host')

# Copyright 2018 FiberHome Telecommunication Technologies CO.,LTD # 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. Negative tests of volume services Test enabling volume service with invalid host should fail Test disabling volume service with invalid binary should fail Test disabling volume service with none reason should fail Test freezing volume service with invalid host should fail Test thawing volume service with invalid host should fail