From e8672e025b4f68b3acc0e7f7f64fd73983ef25c0 Mon Sep 17 00:00:00 2001 From: Greg Schueler Date: Fri, 7 Mar 2014 12:35:52 -0800 Subject: [PATCH] Add deleteProject for apiv11 --- .../java/org/rundeck/api/RundeckClient.java | 17 +++++++++ .../org/rundeck/api/RundeckClientTest.java | 14 ++++++++ .../betamax/tapes/delete_projectv11.yaml | 36 +++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 src/test/resources/betamax/tapes/delete_projectv11.yaml diff --git a/src/main/java/org/rundeck/api/RundeckClient.java b/src/main/java/org/rundeck/api/RundeckClient.java index f32f457..1888684 100644 --- a/src/main/java/org/rundeck/api/RundeckClient.java +++ b/src/main/java/org/rundeck/api/RundeckClient.java @@ -361,6 +361,23 @@ public class RundeckClient implements Serializable { : "/project" ))); } + /** + * Delete a project + * + * @param projectName name of the project - mandatory + * + * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) + * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) + * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) + * @throws IllegalArgumentException if the projectName is blank (null, empty or whitespace) + */ + public void deleteProject(String projectName) throws + RundeckApiException, RundeckApiLoginException, + RundeckApiTokenException, IllegalArgumentException { + + AssertUtil.notBlank(projectName, "projectName is mandatory to create a project !"); + new ApiCall(this).delete(new ApiPathBuilder("/project/", projectName)); + } /** * Return the configuration of a project * diff --git a/src/test/java/org/rundeck/api/RundeckClientTest.java b/src/test/java/org/rundeck/api/RundeckClientTest.java index ad475fd..4396061 100644 --- a/src/test/java/org/rundeck/api/RundeckClientTest.java +++ b/src/test/java/org/rundeck/api/RundeckClientTest.java @@ -90,6 +90,20 @@ public class RundeckClientTest { Assert.assertEquals(null, project.getDescription()); Assert.assertNotNull(project.getProjectConfig()); + } + @Test + @Betamax(tape = "delete_projectv11") + public void deleteProject() throws Exception { + RundeckClient client1 = createClient(TEST_TOKEN_6, 11); + client1.deleteProject("delete_me"); + RundeckProject delete_me = null; + try { + delete_me = client1.getProject("delete_me"); + Assert.fail(); + } catch (RundeckApiException.RundeckApiHttpStatusException e) { + Assert.assertEquals(404,e.getStatusCode()); + } + } @Test diff --git a/src/test/resources/betamax/tapes/delete_projectv11.yaml b/src/test/resources/betamax/tapes/delete_projectv11.yaml new file mode 100644 index 0000000..4025402 --- /dev/null +++ b/src/test/resources/betamax/tapes/delete_projectv11.yaml @@ -0,0 +1,36 @@ +!tape +name: delete_projectv11 +interactions: +- recorded: 2014-03-07T20:34:06.758Z + request: + method: DELETE + uri: http://rundeck.local:4440/api/11/project/delete_me + headers: + Host: rundeck.local:4440 + Proxy-Connection: Keep-Alive + User-Agent: RunDeck API Java Client 11 + X-RunDeck-Auth-Token: Do4d3NUD5DKk21DR4sNK755RcPk618vn + response: + status: 204 + headers: + Content-Type: text/html;charset=UTF-8 + Expires: Thu, 01 Jan 1970 00:00:00 GMT + Server: Jetty(7.6.0.v20120127) + Set-Cookie: JSESSIONID=17vo5m2nghd0e1dcg0hqsuxklu;Path=/ +- recorded: 2014-03-07T20:34:06.903Z + request: + method: GET + uri: http://rundeck.local:4440/api/11/project/delete_me + headers: + Accept: text/xml + Host: rundeck.local:4440 + Proxy-Connection: Keep-Alive + User-Agent: RunDeck API Java Client 11 + X-RunDeck-Auth-Token: Do4d3NUD5DKk21DR4sNK755RcPk618vn + response: + status: 404 + headers: + Content-Type: text/xml;charset=UTF-8 + Server: Jetty(7.6.0.v20120127) + X-Rundeck-API-Version: '11' + body: "\n \n project does not exist: delete_me\n \n"