summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ick2/controllerapi_tests.py166
-rw-r--r--ick2/projectapi_tests.py188
-rw-r--r--without-tests1
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