diff --git a/src/main/java/org/gitlab4j/api/EnvironmentsApi.java b/src/main/java/org/gitlab4j/api/EnvironmentsApi.java index 8aa87b64c42930e996a08df10bf4f66e486a634a..607f05cde72c82a4f0c8882584b45659f2b27a8c 100644 --- a/src/main/java/org/gitlab4j/api/EnvironmentsApi.java +++ b/src/main/java/org/gitlab4j/api/EnvironmentsApi.java @@ -129,6 +129,22 @@ public class EnvironmentsApi extends AbstractApi { return (response.readEntity(Environment.class)); } + /** + * Stop an environment. + * + *
GitLab Endpoint: POST /projects/:id/environments/:environment_id/stop
+ * + * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path + * @param environmentId the ID of the environment to stop + * @return the stopped Environment instance + * @throws GitLabApiException if any exception occurs + */ + public Environment stopEnvironment(Object projectIdOrPath, Integer environmentId) throws GitLabApiException { + Response response = post(Response.Status.OK, (GitLabApiForm) null, + "projects", getProjectIdOrPath(projectIdOrPath), "environments", environmentId, "stop"); + return (response.readEntity(Environment.class)); + } + /** * Delete an environment. * diff --git a/src/test/java/org/gitlab4j/api/TestEnvironmentsApi.java b/src/test/java/org/gitlab4j/api/TestEnvironmentsApi.java index d256f4ea3a00f634487b232444e968a54592d676..6082a2bf46c5c54cb328b15aeb7a9d81a7b71d2f 100644 --- a/src/test/java/org/gitlab4j/api/TestEnvironmentsApi.java +++ b/src/test/java/org/gitlab4j/api/TestEnvironmentsApi.java @@ -67,11 +67,14 @@ public class TestEnvironmentsApi extends AbstractIntegrationTest { for (Environment env : envs) { if (env.getName().startsWith(ENVIRONMENT_NAME)) { + gitLabApi.getEnvironmentsApi().stopEnvironment(testProject, env.getId()); gitLabApi.getEnvironmentsApi().deleteEnvironment(testProject, env.getId()); } } } } catch (GitLabApiException ignore) { + System.out.println("ERROR"); + } } } @@ -91,23 +94,21 @@ public class TestEnvironmentsApi extends AbstractIntegrationTest { final Environment env = gitLabApi.getEnvironmentsApi().createEnvironment( testProject, getUniqueName(), EXTERNAL_URL); - try { - List envs = gitLabApi.getEnvironmentsApi().getEnvironments(testProject); - assertTrue(envs.size() > 0); - Environment foundEnv = envs.stream().filter( + List envs = gitLabApi.getEnvironmentsApi().getEnvironments(testProject); + assertTrue(envs.size() > 0); + Environment foundEnv = envs.stream().filter( e -> e.getName().equals(env.getName())).findFirst().orElse(null); - assertNotNull(foundEnv); - assertEquals(env.getName(), foundEnv.getName()); - } catch (Exception e) { - gitLabApi.getEnvironmentsApi().deleteEnvironment(testProject, env.getId()); - } + assertNotNull(foundEnv); + assertEquals(env.getName(), foundEnv.getName()); } @Test - public void testDeleteEnvironment() throws GitLabApiException { + public void testStopAndDeleteEnvironment() throws GitLabApiException { final Environment env = gitLabApi.getEnvironmentsApi().createEnvironment( testProject, getUniqueName(), EXTERNAL_URL); + + gitLabApi.getEnvironmentsApi().stopEnvironment(testProject, env.getId()); gitLabApi.getEnvironmentsApi().deleteEnvironment(testProject, env.getId()); Stream envs = gitLabApi.getEnvironmentsApi().getEnvironmentsStream(testProject); @@ -125,6 +126,7 @@ public class TestEnvironmentsApi extends AbstractIntegrationTest { assertTrue(optionalEnv.isPresent()); assertEquals(env.getName(), optionalEnv.get().getName()); + gitLabApi.getEnvironmentsApi().stopEnvironment(testProject, env.getId()); gitLabApi.getEnvironmentsApi().deleteEnvironment(testProject, env.getId()); } }