diff --git a/docs/gl_objects/environments.rst b/docs/gl_objects/environments.rst index a05a6fcc4..6edde12a7 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 c2b372a36..ee1daa323 100644 --- a/gitlab/tests/test_gitlab.py +++ b/gitlab/tests/test_gitlab.py @@ -556,6 +556,36 @@ def resp_get_project(url, request): 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 0f709fe54..fbee2b107 100644 --- a/gitlab/v4/objects.py +++ b/gitlab/v4/objects.py @@ -1944,7 +1944,7 @@ def stop(self, **kwargs): class ProjectEnvironmentManager( - ListMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager + RetrieveMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager ): _path = "/projects/%(project_id)s/environments" _obj_cls = ProjectEnvironment