diff options
Diffstat (limited to 'vio/vio/tests/test_server_view.py')
-rw-r--r-- | vio/vio/tests/test_server_view.py | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/vio/vio/tests/test_server_view.py b/vio/vio/tests/test_server_view.py new file mode 100644 index 0000000..236272f --- /dev/null +++ b/vio/vio/tests/test_server_view.py @@ -0,0 +1,175 @@ +# Copyright (c) 2017 VMware, Inc. +# +# 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. + +import unittest +import json +import mock +from rest_framework import status +from vio.swagger.views.server.views import ListServersView, GetServerView + + +from vio.pub.msapi import extsys +from vio.swagger import nova_utils +from vio.pub.vim.vimapi.nova.OperateServers import OperateServers + +VIM_INFO = {'vimId': 1, 'name': 'name1', 'userName': 'user1', + 'password': '1234', 'url': 'abc', 'tenant': 't1'} + + +class ServerViewTest(unittest.TestCase): + + def setUp(self): + self.lsv = ListServersView() + self.gsv = GetServerView() + + def tearDown(self): + pass + + @mock.patch.object(nova_utils, 'server_formatter') + @mock.patch.object(OperateServers, 'list_server_interfaces') + @mock.patch.object(OperateServers, 'list_servers') + @mock.patch.object(extsys, 'get_vim_by_id') + def test_server_get(self, mock_vim_info, mock_servers, + mock_interfaces, mock_formatter): + mock_vim_info.return_value = VIM_INFO + + class Server: + def __init__(self, id, name): + self.id = id + self.name = name + s1 = Server(1, "s1") + s2 = Server(2, "s2") + servers = [s1, s2] + mock_servers.return_value = servers + mock_interfaces.return_value = servers + mock_formatter.return_value = servers + + class Request: + def __init__(self, query_params): + self.query_params = query_params + req = Request({'k': 'v'}) + self.assertEqual( + status.HTTP_200_OK, + self.lsv.get(req, "vimid", "tenantid").status_code) + + @mock.patch.object(nova_utils, 'server_formatter') + @mock.patch.object(OperateServers, 'list_server_interfaces') + @mock.patch.object(extsys, 'get_vim_by_id') + def test_server_get_fail(self, mock_vim_info, + mock_interfaces, mock_formatter): + mock_vim_info.return_value = VIM_INFO + + class Server: + def __init__(self, id, name): + self.id = id + self.name = name + s1 = Server(1, "s1") + s2 = Server(2, "s2") + servers = [s1, s2] + os = OperateServers() + os.list_servers = mock.Mock(return_value=[]) + mock_interfaces.return_value = servers + mock_formatter.return_value = servers + + class Request: + def __init__(self, query_params): + self.query_params = query_params + req = Request({'k': 'v'}) + self.assertEqual(status.HTTP_500_INTERNAL_SERVER_ERROR, + self.lsv.get(req, "vimid", "tenantid").status_code) + + @mock.patch.object(nova_utils, 'server_formatter') + @mock.patch.object(OperateServers, 'list_servers') + @mock.patch.object(extsys, 'get_vim_by_id') + def test_server_get_view_fail(self, mock_vim_info, + mock_servers, mock_formatter): + mock_vim_info.return_value = VIM_INFO + + class Server: + def __init__(self, id, project_id, name, availability_zone): + self.id = id + self.project_id = project_id + self.name = name + self.availability_zone = availability_zone + s1 = Server(1, "p1", "name1", "nova") + s2 = Server(2, "p2", "name2", "nova") + servers = [s1, s2] + mock_servers.return_value = servers + os = OperateServers() + os.list_server_interfaces = mock.Mock(return_value=[]) + mock_formatter.return_value = servers + + class Request: + def __init__(self, query_params): + self.query_params = query_params + req = Request({'k': 'v'}) + self.assertEqual( + status.HTTP_500_INTERNAL_SERVER_ERROR, + self.gsv.get(req, "vimid", "tenant", "serverid").status_code) + + @mock.patch.object(OperateServers, 'delete_server') + @mock.patch.object(extsys, 'get_vim_by_id') + def test_delete_server_view(self, mock_vim_info, mock_delete_server): + mock_vim_info.return_value = VIM_INFO + + class Project: + def __init__(self, id, name): + self.id = id + self.name = name + p1 = Project(1, "p1") + mock_delete_server.return_value = p1 + + class Request: + def __init__(self, query_params): + self.query_params = query_params + req = Request({'k': 'v'}) + self.assertEqual( + status.HTTP_204_NO_CONTENT, + self.gsv.delete(req, "vimid", "tenantid", "serverid").status_code) + + @mock.patch.object(extsys, 'get_vim_by_id') + def test_delete_server_view_fail(self, mock_vim_info): + mock_vim_info.return_value = VIM_INFO + os = OperateServers() + os.delete_server = mock.Mock(return_value=[]) + + class Request: + def __init__(self, query_params): + self.query_params = query_params + req = Request({'k': 'v'}) + self.assertEqual( + status.HTTP_500_INTERNAL_SERVER_ERROR, + self.gsv.delete(req, "vimid", "tenantid", "serverid").status_code) + + @mock.patch.object(nova_utils, 'server_formatter') + @mock.patch.object(OperateServers, 'find_server') + @mock.patch.object(OperateServers, 'get_server') + @mock.patch.object(extsys, 'get_vim_by_id') + def test_server_post_fail(self, mock_vim_info, mock_get_servers, + mock_find_servers, mock_formatter): + mock_vim_info.return_value = VIM_INFO + mock_find_servers.return_value = {"id": 1, "name": "name1"} + mock_get_servers.return_value = {"id": 1, "name": "name1"} + mock_formatter.return_value = {"id": 1, "name": "name1"} + + class Request: + def __init__(self, query_params, body, method): + self.query_params = query_params + self.body = body + self.method = method + req = Request({'k': 'v'}, + json.dumps({"name": "abc", "networkId": 3, + "cidr": 2, "ipVersion": 1}), + "POST") + self.assertEqual( + status.HTTP_500_INTERNAL_SERVER_ERROR, + self.lsv.post(req, "vimid", "tenantid").status_code) |