solum-tempest-plugin/solum_tempest_plugin/v1/test_service.py

133 lines
5.2 KiB
Python

#
# Copyright 2013 - Noorul Islam K M
#
# 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.
import json
from tempest.lib import exceptions as tempest_exceptions
from solum_tempest_plugin import base
sample_data = {"name": "test_service",
"description": "A test to create service",
"project_id": "project_id",
"user_id": "user_id",
"service_type": "mysql",
"read_only": True,
"type": "service"}
class TestServiceController(base.TestCase):
def setUp(self):
super(TestServiceController, self).setUp()
self.addCleanup(self._delete_all)
def _delete_all(self):
resp, body = self.client.get('v1/services')
data = json.loads(body)
self.assertEqual(resp.status, 200)
[self._delete_service(ser['uuid']) for ser in data]
def _assert_output_expected(self, body_data, data):
self.assertEqual(body_data['description'], data['description'])
self.assertEqual(body_data['name'], data['name'])
self.assertEqual(body_data['service_type'], data['service_type'])
self.assertEqual(body_data['read_only'], data['read_only'])
self.assertEqual(body_data['type'], 'service')
self.assertIsNotNone(body_data['uuid'])
def _delete_service(self, uuid):
resp, _ = self.client.delete('v1/services/%s' % uuid)
self.assertEqual(resp.status, 204)
def _create_service(self):
jsondata = json.dumps(sample_data)
resp, body = self.client.post('v1/services', jsondata)
self.assertEqual(resp.status, 201)
out_data = json.loads(body)
uuid = out_data['uuid']
self.assertIsNotNone(uuid)
return uuid
def test_services_get_all(self):
uuid = self._create_service()
resp, body = self.client.get('v1/services')
data = json.loads(body)
self.assertEqual(resp.status, 200)
filtered = [ser for ser in data if ser['uuid'] == uuid]
self.assertEqual(filtered[0]['uuid'], uuid)
def test_services_create(self):
sample_json = json.dumps(sample_data)
resp, body = self.client.post('v1/services', sample_json)
self.assertEqual(resp.status, 201)
json_data = json.loads(body)
self._assert_output_expected(json_data, sample_data)
self._delete_service(json_data['uuid'])
def test_services_create_none(self):
self.assertRaises(tempest_exceptions.BadRequest,
self.client.post, 'v1/services', "{}")
def test_services_get(self):
uuid = self._create_service()
resp, body = self.client.get('v1/services/%s' % uuid)
self.assertEqual(resp.status, 200)
json_data = json.loads(body)
self._assert_output_expected(json_data, sample_data)
self._delete_service(uuid)
def test_services_get_not_found(self):
self.assertRaises(tempest_exceptions.NotFound,
self.client.get, 'v1/services/not_found')
def test_services_put(self):
uuid = self._create_service()
updated_data = {"name": "test_service_updated",
"description": "A test to create service updated",
"user_id": "user_id updated",
"service_type": "mysql updated",
"read_only": False}
updated_json = json.dumps(updated_data)
resp, body = self.client.put('v1/services/%s' % uuid, updated_json)
self.assertEqual(resp.status, 200)
json_data = json.loads(body)
self._assert_output_expected(json_data, updated_data)
self._delete_service(uuid)
def test_services_put_not_found(self):
updated_data = {"name": "test_service_updated",
"description": "A test to create service updated",
"user_id": "user_id updated",
"service_type": "mysql updated",
"read_only": False}
updated_json = json.dumps(updated_data)
self.assertRaises(tempest_exceptions.NotFound,
self.client.put, 'v1/services/not_found',
updated_json)
def test_services_put_none(self):
self.assertRaises(tempest_exceptions.BadRequest,
self.client.put, 'v1/services/any', "{}")
def test_services_delete(self):
uuid = self._create_service()
resp, body = self.client.delete('v1/services/%s' % uuid)
self.assertEqual(resp.status, 204)
self.assertEqual(body, '')
def test_services_delete_not_found(self):
self.assertRaises(tempest_exceptions.NotFound,
self.client.delete, 'v1/services/not_found')