# 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 nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional.api import client
from nova.tests.functional import integrated_helpers


class TestCreateServerGroupWithEmptyPolicies(
    test.TestCase, integrated_helpers.InstanceHelperMixin,
):
    """Demonstrate bug #1894966.

    Attempt to create a server group with an invalid 'policies' field. It
    should fail cleanly.
    """
    def setUp(self):
        super().setUp()

        api_fixture = self.useFixture(nova_fixtures.OSAPIFixture(
            api_version='v2.1'))
        self.api = api_fixture.api
        self.api.microversion = '2.63'  # the last version with the bug

    def test_create_with_empty_policies(self):
        exc = self.assertRaises(
            client.OpenStackApiException,
            self.api.post_server_groups,
            {'name': 'test group', 'policies': []})
        self.assertEqual(400, exc.response.status_code)
