summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/gl_objects/environments.rst4
-rw-r--r--gitlab/tests/test_gitlab.py30
-rw-r--r--gitlab/v4/objects.py2
3 files changed, 35 insertions, 1 deletions
diff --git a/docs/gl_objects/environments.rst b/docs/gl_objects/environments.rst
index a05a6fc..6edde12 100644
--- a/docs/gl_objects/environments.rst
+++ b/docs/gl_objects/environments.rst
@@ -24,6 +24,10 @@ Create an environment for a project::
environment = project.environments.create({'name': 'production'})
+Retrieve a specific environment for a project::
+
+ environment = project.environments.get(112)
+
Update an environment for a project::
environment.external_url = 'http://foo.bar.com'
diff --git a/gitlab/tests/test_gitlab.py b/gitlab/tests/test_gitlab.py
index c2b372a..ee1daa3 100644
--- a/gitlab/tests/test_gitlab.py
+++ b/gitlab/tests/test_gitlab.py
@@ -556,6 +556,36 @@ class TestGitlab(unittest.TestCase):
self.assertEqual(data.name, "name")
self.assertEqual(data.id, 1)
+ def test_project_environments(self):
+ @urlmatch(
+ scheme="http", netloc="localhost", path="/api/v4/projects/1$", method="get"
+ )
+ def resp_get_project(url, request):
+ headers = {"content-type": "application/json"}
+ content = '{"name": "name", "id": 1}'.encode("utf-8")
+ return response(200, content, headers, None, 5, request)
+
+ @urlmatch(
+ scheme="http",
+ netloc="localhost",
+ path="/api/v4/projects/1/environments/1",
+ method="get",
+ )
+ def resp_get_environment(url, request):
+ headers = {"content-type": "application/json"}
+ content = '{"name": "environment_name", "id": 1, "last_deployment": "sometime"}'.encode(
+ "utf-8"
+ )
+ return response(200, content, headers, None, 5, request)
+
+ with HTTMock(resp_get_project, resp_get_environment):
+ project = self.gl.projects.get(1)
+ environment = project.environments.get(1)
+ self.assertIsInstance(environment, ProjectEnvironment)
+ self.assertEqual(environment.id, 1)
+ self.assertEqual(environment.last_deployment, "sometime")
+ self.assertEqual(environment.name, "environment_name")
+
def test_groups(self):
@urlmatch(
scheme="http", netloc="localhost", path="/api/v4/groups/1", method="get"
diff --git a/gitlab/v4/objects.py b/gitlab/v4/objects.py
index 5637859..dd73be2 100644
--- a/gitlab/v4/objects.py
+++ b/gitlab/v4/objects.py
@@ -1944,7 +1944,7 @@ class ProjectEnvironment(SaveMixin, ObjectDeleteMixin, RESTObject):
class ProjectEnvironmentManager(
- ListMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager
+ RetrieveMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager
):
_path = "/projects/%(project_id)s/environments"
_obj_cls = ProjectEnvironment