From c761a572ae14368ad002a911d07d14c5c5c1b703 Mon Sep 17 00:00:00 2001 From: SerenaFeng Date: Wed, 14 Mar 2018 16:17:34 +0800 Subject: bugfix: TestAPI Cookie cannot be found Change-Id: Ibab60aba26e30669dddab74ce61ed00197dc86a8 Signed-off-by: SerenaFeng --- .../testapiclient/tests/unit/test_projects.py | 156 +++++---------------- 1 file changed, 33 insertions(+), 123 deletions(-) (limited to 'testapi/testapi-client/testapiclient/tests/unit/test_projects.py') diff --git a/testapi/testapi-client/testapiclient/tests/unit/test_projects.py b/testapi/testapi-client/testapiclient/tests/unit/test_projects.py index 6e11329..86486ce 100644 --- a/testapi/testapi-client/testapiclient/tests/unit/test_projects.py +++ b/testapi/testapi-client/testapiclient/tests/unit/test_projects.py @@ -1,22 +1,18 @@ -import StringIO -import httplib import json from mock import mock -import requests from six.moves.urllib import parse import testtools from testapiclient.cli import projects +from testapiclient.tests.unit import fakes from testapiclient.tests.unit import utils -from testapiclient.utils import http_client -from testapiclient.utils import user +from testapiclient.utils import clientmanager class ProjectTest(utils.TestCommand): def setUp(self): super(ProjectTest, self).setUp() - user.User.session = requests.session() self.base_url = parse.urljoin(self.api_url, 'projects') self.project_json = { 'name': 'test_project', @@ -29,47 +25,54 @@ class ProjectGetTest(ProjectTest): def setUp(self): super(ProjectGetTest, self).setUp() - self.get_mock = mock.patch('requests.get').start() - self.get_mock.return_value.status_code = httplib.OK + self.projects_rsp = {'projects': [self.project_json]} def test_get(self): - project_get = projects.ProjectGet(mock.Mock(), mock.Mock()) + self.get_mock.return_value = fakes.FakeResponse(data=self.projects_rsp) + project_get = projects.ProjectGet(self.app, mock.Mock()) args = ['-name', 'dfs'] verifies = [('name', 'dfs')] parsed_args = self.check_parser(project_get, args, verifies) project_get.take_action(parsed_args) self.get_mock.assert_called_once_with( - self.base_url + '?name=dfs') + self.base_url + '?name=dfs', + headers=clientmanager.ClientManager.headers) def test_get_all(self): - project_get = projects.ProjectGet(mock.Mock(), mock.Mock()) + self.get_mock.return_value = fakes.FakeResponse(data=self.projects_rsp) + project_get = projects.ProjectGet(self.app, mock.Mock()) args = [] verifies = [] parsed_args = self.check_parser(project_get, args, verifies) project_get.take_action(parsed_args) self.get_mock.assert_called_once_with( - self.base_url) + self.base_url, + headers=clientmanager.ClientManager.headers) def test_get_one(self): - project_get_one = projects.ProjectGetOne(mock.Mock(), mock.Mock()) + self.get_mock.return_value = fakes.FakeResponse(data=self.project_json) + project_get_one = projects.ProjectGetOne(self.app, mock.Mock()) args = ['def'] verifies = [('name', 'def')] parsed_args = self.check_parser(project_get_one, args, verifies) project_get_one.take_action(parsed_args) self.get_mock.assert_called_once_with( - self.base_url + '/def') + self.base_url + '/def', + headers=clientmanager.ClientManager.headers) class ProjectCreateTest(ProjectTest): def setUp(self): super(ProjectCreateTest, self).setUp() - self.post_mock = mock.patch( - 'testapiclient.utils.user.User.session.post').start() - self.post_mock.return_value.status_code = httplib.OK def test_create_success(self): - project_create = projects.ProjectCreate(mock.Mock(), mock.Mock()) + succ_rsp = { + 'href': '{}/{}'.format(self.base_url, + self.project_json.get('name')) + } + self.post_mock.return_value = fakes.FakeResponse(data=succ_rsp) + project_create = projects.ProjectCreate(self.app, mock.Mock()) args = [self.project_string] verifies = [('project', self.project_json)] parsed_args = self.check_parser(project_create, args, verifies) @@ -78,110 +81,49 @@ class ProjectCreateTest(ProjectTest): def test_create_failure(self): with testtools.ExpectedException(Exception, 'Create failed: Error'): - project_create = projects.ProjectCreate(mock.Mock(), mock.Mock()) - self.post_mock.return_value.status_code = httplib.BAD_REQUEST - self.post_mock.return_value.reason = "Error" + self.post_mock.return_value = utils.FAKE_FAILURE + project_create = projects.ProjectCreate(self.app, mock.Mock()) args = [self.project_string] verifies = [('project', self.project_json)] parsed_args = self.check_parser(project_create, args, verifies) project_create.take_action(parsed_args) - def test_create_unauthorized(self): - self.mock_unautherized() - with mock.patch('sys.stdout', new=StringIO.StringIO()) as mock_stdout: - with mock.patch('requests.Session') as mock_sessions: - mock_sessions().post.return_value.text = "login" - project_create = projects.ProjectCreate( - mock.Mock(), mock.Mock()) - args = ['-u', 'user', '-p', 'password', self.project_string] - verifies = [ - ('u', 'user'), - ('p', 'password'), - ('project', self.project_json)] - parsed_args = self.check_parser(project_create, args, verifies) - project_create.take_action(parsed_args) - self.assertEqual(mock_stdout.getvalue(), - "Authentication has failed.\n") - - def test_create_authorized(self): - project_create = projects.ProjectCreate(mock.Mock(), mock.Mock()) - args = ['-u', 'user', '-p', 'password', self.project_string] - verifies = [ - ('u', 'user'), - ('p', 'password'), - ('project', self.project_json) - ] - parsed_args = self.check_parser(project_create, args, verifies) - project_create.take_action(parsed_args) - self.post_mock.assert_called_once() - class ProjectDeleteTest(ProjectTest): def setUp(self): super(ProjectDeleteTest, self).setUp() - self.delete_mock = mock.patch( - 'testapiclient.utils.user.User.session.delete').start() - self.delete_mock.return_value.status_code = httplib.OK def test_delete_success(self): - project_delete = projects.ProjectDelete(mock.Mock(), mock.Mock()) + self.delete_mock.return_value = fakes.FakeResponse() + project_delete = projects.ProjectDelete(self.app, mock.Mock()) args = ['def'] verifies = [('name', 'def')] parsed_args = self.check_parser(project_delete, args, verifies) project_delete.take_action(parsed_args) self.delete_mock.assert_called_once_with( self.base_url + '/def', - data='null', - headers=http_client.HTTPClient.headers) + data=None, + headers=clientmanager.ClientManager.headers) def test_delete_failure(self): with testtools.ExpectedException(Exception, 'Delete failed: Error'): - project_delete = projects.ProjectDelete(mock.Mock(), mock.Mock()) - self.delete_mock.return_value.status_code = httplib.FORBIDDEN - self.delete_mock.return_value.reason = "Error" + self.delete_mock.return_value = utils.FAKE_FAILURE + project_delete = projects.ProjectDelete(self.app, mock.Mock()) args = ['def'] verifies = [('name', 'def')] parsed_args = self.check_parser(project_delete, args, verifies) project_delete.take_action(parsed_args) - def test_delete_authorized(self): - project_delete = projects.ProjectDelete(mock.Mock(), mock.Mock()) - args = ['-u', 'user', '-p', 'password', 'def'] - verifies = [('u', 'user'), ('p', 'password'), ('name', 'def')] - - parsed_args = self.check_parser(project_delete, args, verifies) - project_delete.take_action(parsed_args) - self.delete_mock.assert_called_once_with( - self.base_url + '/def', - data='null', - headers=http_client.HTTPClient.headers) - - def test_delete_unauthorized(self): - self.mock_unautherized() - with mock.patch('sys.stdout', new=StringIO.StringIO()) as mock_stdout: - with mock.patch('requests.Session') as mock_sessions: - mock_sessions().post.return_value.text = "login" - project_delete = projects.ProjectDelete( - mock.Mock(), mock.Mock()) - args = ['-u', 'user', '-p', 'password', 'def'] - verifies = [('u', 'user'), ('p', 'password'), ('name', 'def')] - parsed_args = self.check_parser(project_delete, args, verifies) - project_delete.take_action(parsed_args) - self.assertEqual(mock_stdout.getvalue(), - "Authentication has failed.\n") - class ProjectPutTest(ProjectTest): def setUp(self): super(ProjectPutTest, self).setUp() - self.put_mock = mock.patch( - 'testapiclient.utils.user.User.session.put').start() - self.put_mock.return_value.status_code = httplib.OK def test_put_success(self): - project_put = projects.ProjectPut(mock.Mock(), mock.Mock()) + self.put_mock.return_value = fakes.FakeResponse(data=self.project_json) + project_put = projects.ProjectPut(self.app, mock.Mock()) args = ['def', self.project_string] verifies = [('name', 'def'), ('project', self.project_json)] parsed_args = self.check_parser(project_put, args, verifies) @@ -190,41 +132,9 @@ class ProjectPutTest(ProjectTest): def test_put_failure(self): with testtools.ExpectedException(Exception, 'Update failed: Error'): - project_put = projects.ProjectPut(mock.Mock(), mock.Mock()) - self.put_mock.return_value.status_code = httplib.BAD_REQUEST - self.put_mock.return_value.reason = "Error" + self.put_mock.return_value = utils.FAKE_FAILURE + project_put = projects.ProjectPut(self.app, mock.Mock()) args = ['def', self.project_string] verifies = [('name', 'def'), ('project', self.project_json)] parsed_args = self.check_parser(project_put, args, verifies) project_put.take_action(parsed_args) - - def test_put_unauthorized(self): - self.mock_unautherized() - with mock.patch('sys.stdout', new=StringIO.StringIO()) as mock_stdout: - with mock.patch('requests.Session') as mock_sessions: - mock_sessions().post.return_value.text = "login" - project_put = projects.ProjectPut(mock.Mock(), mock.Mock()) - args = ['-u', 'user', '-p', 'password', 'def', - self.project_string] - verifies = [ - ('u', 'user'), - ('p', 'password'), - ('name', 'def'), - ('project', self.project_json)] - parsed_args = self.check_parser(project_put, args, verifies) - project_put.take_action(parsed_args) - self.assertEqual(mock_stdout.getvalue(), - "Authentication has failed.\n") - - def test_create_authorized(self): - project_put = projects.ProjectPut(mock.Mock(), mock.Mock()) - args = ['-u', 'user', '-p', 'password', 'def', self.project_string] - verifies = [ - ('u', 'user'), - ('p', 'password'), - ('name', 'def'), - ('project', self.project_json) - ] - parsed_args = self.check_parser(project_put, args, verifies) - project_put.take_action(parsed_args) - self.put_mock.assert_called_once() -- cgit 1.2.3-korg