diff options
author | Lars Wirzenius <liw@liw.fi> | 2017-11-18 21:07:06 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2017-11-18 21:07:30 +0100 |
commit | 5c2496588b96b17309e27906c3a7e2c81b8e1fb3 (patch) | |
tree | f55c3ce16c1fc3d10129893cbe79e0b2452f417d | |
parent | d62b49e35b75bc7afbba98c6725fc45644009e71 (diff) | |
download | ick2-5c2496588b96b17309e27906c3a7e2c81b8e1fb3.tar.gz |
Refactor: move ProjectAPI tests to its own module
-rw-r--r-- | ick2/controllerapi_tests.py | 166 | ||||
-rw-r--r-- | ick2/projectapi_tests.py | 188 | ||||
-rw-r--r-- | without-tests | 1 |
3 files changed, 188 insertions, 167 deletions
diff --git a/ick2/controllerapi_tests.py b/ick2/controllerapi_tests.py index 8f9fdcb..bb24e4a 100644 --- a/ick2/controllerapi_tests.py +++ b/ick2/controllerapi_tests.py @@ -46,169 +46,3 @@ class ControllerAPITests(unittest.TestCase): statedir = api.get_state_directory() self.assertEqual(statedir, self.statedir) self.assertTrue(os.path.exists(statedir)) - - -class ProjectAPITests(unittest.TestCase): - - def setUp(self): - self.tempdir = tempfile.mkdtemp() - self.statedir = os.path.join(self.tempdir, 'state/dir') - self.state = ick2.ControllerState() - self.state.set_state_directory(self.statedir) - - def tearDown(self): - shutil.rmtree(self.tempdir) - - def create_api(self): - return ick2.ProjectAPI(self.state) - - def test_has_not_projects_initially(self): - api = self.create_api() - self.assertEqual(api.list(), {'projects': []}) - - def test_creates_project(self): - project = { - 'project': 'foo', - 'pipelines': [ - { - 'name': 'build', - 'actions': [ - { - 'shell': 'step-1', - }, - ], - }, - ], - } - api = self.create_api() - self.assertEqual(api.create(project), project) - self.assertEqual(api.list(), {'projects': [project]}) - self.assertEqual(api.get_pipeline('foo', 'build'), {'status': 'idle'}) - self.assertEqual( - api.get_builds('foo'), - {'project': 'foo', 'builds': []} - ) - - def test_raises_error_when_getting_missing_pipeline(self): - project = { - 'project': 'foo', - 'pipelines': [ - { - 'name': 'build', - 'actions': [ - { - 'shell': 'step-1', - }, - ], - }, - ], - } - api = self.create_api() - api.create(project) - with self.assertRaises(ick2.NotFound): - api.get_pipeline('foo', 'does-not-exist') - - def test_loads_projects_from_state_directory(self): - project = { - 'project': 'foo', - 'shell_steps': ['build'], - } - api = self.create_api() - api.create(project) - - api2 = self.create_api() - self.assertEqual(api2.list(), {'projects': [project]}) - - def test_gets_named_project(self): - project = { - 'project': 'foo', - 'shell_steps': ['build'], - } - api = self.create_api() - api.create(project) - self.assertEqual(api.show('foo'), project) - - def test_updates_named_project(self): - project_v1 = { - 'project': 'foo', - 'shell_steps': ['build'], - } - project_v2 = dict(project_v1) - project_v2['shell_steps'] = ['build it using magic'] - api = self.create_api() - api.create(project_v1) - updated = api.update(project_v2, 'foo') - self.assertEqual(updated, project_v2) - self.assertEqual(api.show('foo'), project_v2) - - def test_deletes_named_project(self): - project = { - 'project': 'foo', - 'shell_steps': ['build'], - } - api = self.create_api() - api.create(project) - api.delete('foo') - self.assertEqual(api.list(), {'projects': []}) - with self.assertRaises(ick2.NotFound): - api.show('foo') - - def test_raises_error_deleting_missing_project(self): - api = self.create_api() - with self.assertRaises(ick2.NotFound): - api.delete('foo') - - def test_updates_pipeline_status(self): - project = { - 'project': 'foo', - 'pipelines': [ - { - 'name': 'build', - 'actions': [ - { - 'shell': 'step-1', - }, - ], - }, - ], - } - api = self.create_api() - api.create(project) - self.assertEqual(api.get_pipeline('foo', 'build'), {'status': 'idle'}) - - with self.assertRaises(ick2.WrongPipelineStatus): - api.set_pipeline('building', 'foo', 'build') - - api.set_pipeline('triggered', 'foo', 'build') - self.assertEqual( - api.get_pipeline('foo', 'build'), - {'status': 'triggered'} - ) - - with self.assertRaises(ick2.WrongPipelineStatus): - api.set_pipeline('idle', 'foo', 'build') - - api.set_pipeline('building', 'foo', 'build') - self.assertEqual( - api.get_pipeline('foo', 'build'), - {'status': 'building'} - ) - - with self.assertRaises(ick2.WrongPipelineStatus): - api.set_pipeline('triggered', 'foo', 'build') - - api.set_pipeline('idle', 'foo', 'build') - self.assertEqual( - api.get_pipeline('foo', 'build'), - {'status': 'idle'} - ) - - def test_raises_error_updating_status_of_missing_pipeline(self): - project = { - 'project': 'foo', - 'pipelines': [], - } - api = self.create_api() - api.create(project) - with self.assertRaises(ick2.NotFound): - api.set_pipeline('idle', 'foo', 'build') diff --git a/ick2/projectapi_tests.py b/ick2/projectapi_tests.py new file mode 100644 index 0000000..2e6e14a --- /dev/null +++ b/ick2/projectapi_tests.py @@ -0,0 +1,188 @@ +# Copyright (C) 2017 Lars Wirzenius +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + + +import os +import shutil +import tempfile +import unittest + + +import ick2 + + +class ProjectAPITests(unittest.TestCase): + + def setUp(self): + self.tempdir = tempfile.mkdtemp() + self.statedir = os.path.join(self.tempdir, 'state/dir') + self.state = ick2.ControllerState() + self.state.set_state_directory(self.statedir) + + def tearDown(self): + shutil.rmtree(self.tempdir) + + def create_api(self): + return ick2.ProjectAPI(self.state) + + def test_has_not_projects_initially(self): + api = self.create_api() + self.assertEqual(api.list(), {'projects': []}) + + def test_creates_project(self): + project = { + 'project': 'foo', + 'pipelines': [ + { + 'name': 'build', + 'actions': [ + { + 'shell': 'step-1', + }, + ], + }, + ], + } + api = self.create_api() + self.assertEqual(api.create(project), project) + self.assertEqual(api.list(), {'projects': [project]}) + self.assertEqual(api.get_pipeline('foo', 'build'), {'status': 'idle'}) + self.assertEqual( + api.get_builds('foo'), + {'project': 'foo', 'builds': []} + ) + + def test_raises_error_when_getting_missing_pipeline(self): + project = { + 'project': 'foo', + 'pipelines': [ + { + 'name': 'build', + 'actions': [ + { + 'shell': 'step-1', + }, + ], + }, + ], + } + api = self.create_api() + api.create(project) + with self.assertRaises(ick2.NotFound): + api.get_pipeline('foo', 'does-not-exist') + + def test_loads_projects_from_state_directory(self): + project = { + 'project': 'foo', + 'shell_steps': ['build'], + } + api = self.create_api() + api.create(project) + + api2 = self.create_api() + self.assertEqual(api2.list(), {'projects': [project]}) + + def test_gets_named_project(self): + project = { + 'project': 'foo', + 'shell_steps': ['build'], + } + api = self.create_api() + api.create(project) + self.assertEqual(api.show('foo'), project) + + def test_updates_named_project(self): + project_v1 = { + 'project': 'foo', + 'shell_steps': ['build'], + } + project_v2 = dict(project_v1) + project_v2['shell_steps'] = ['build it using magic'] + api = self.create_api() + api.create(project_v1) + updated = api.update(project_v2, 'foo') + self.assertEqual(updated, project_v2) + self.assertEqual(api.show('foo'), project_v2) + + def test_deletes_named_project(self): + project = { + 'project': 'foo', + 'shell_steps': ['build'], + } + api = self.create_api() + api.create(project) + api.delete('foo') + self.assertEqual(api.list(), {'projects': []}) + with self.assertRaises(ick2.NotFound): + api.show('foo') + + def test_raises_error_deleting_missing_project(self): + api = self.create_api() + with self.assertRaises(ick2.NotFound): + api.delete('foo') + + def test_updates_pipeline_status(self): + project = { + 'project': 'foo', + 'pipelines': [ + { + 'name': 'build', + 'actions': [ + { + 'shell': 'step-1', + }, + ], + }, + ], + } + api = self.create_api() + api.create(project) + self.assertEqual(api.get_pipeline('foo', 'build'), {'status': 'idle'}) + + with self.assertRaises(ick2.WrongPipelineStatus): + api.set_pipeline('building', 'foo', 'build') + + api.set_pipeline('triggered', 'foo', 'build') + self.assertEqual( + api.get_pipeline('foo', 'build'), + {'status': 'triggered'} + ) + + with self.assertRaises(ick2.WrongPipelineStatus): + api.set_pipeline('idle', 'foo', 'build') + + api.set_pipeline('building', 'foo', 'build') + self.assertEqual( + api.get_pipeline('foo', 'build'), + {'status': 'building'} + ) + + with self.assertRaises(ick2.WrongPipelineStatus): + api.set_pipeline('triggered', 'foo', 'build') + + api.set_pipeline('idle', 'foo', 'build') + self.assertEqual( + api.get_pipeline('foo', 'build'), + {'status': 'idle'} + ) + + def test_raises_error_updating_status_of_missing_pipeline(self): + project = { + 'project': 'foo', + 'pipelines': [], + } + api = self.create_api() + api.create(project) + with self.assertRaises(ick2.NotFound): + api.set_pipeline('idle', 'foo', 'build') diff --git a/without-tests b/without-tests index cfe0b60..b587c70 100644 --- a/without-tests +++ b/without-tests @@ -4,7 +4,6 @@ ick2/buildsapi.py ick2/exceptions.py ick2/logapi.py ick2/logging.py -ick2/projectapi.py ick2/responses.py ick2/version.py ick2/workerapi.py |