summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTiago Freire <tcfonnet@gmail.com>2016-08-18 17:11:46 -0300
committerGitHub <noreply@github.com>2016-08-18 17:11:46 -0300
commitde125dd67da8cee7efea4a99ee49c5a0ac791f60 (patch)
treeae1e3b4205691fc683e53bb532e3b2ce844a9e46
parentWIP (diff)
parentMerge branch 'WIP' into delete_zone (diff)
Merge pull request #1 from akaKuruma/delete_zone
Delete zone
-rw-r--r--lib/powerdnsex/managers/zones_manager.ex8
-rw-r--r--test/lib/powerdnsex/managers/zones_manager_test.exs20
-rw-r--r--test/support/cassettes/zones_manager/delete/not_found.json31
-rw-r--r--test/support/cassettes/zones_manager/delete/success.json30
4 files changed, 89 insertions, 0 deletions
diff --git a/lib/powerdnsex/managers/zones_manager.ex b/lib/powerdnsex/managers/zones_manager.ex
index e511ac1..9561be6 100644
--- a/lib/powerdnsex/managers/zones_manager.ex
+++ b/lib/powerdnsex/managers/zones_manager.ex
@@ -20,6 +20,14 @@ defmodule PowerDNSex.ZonesManager do
|> process_request_response
end
+ def delete(zone_name, server_name \\ @default_server)
+ when is_bitstring(zone_name) do
+
+ server_name
+ |> zone_path(zone_name)
+ |> HttpClient.delete!
+ end
+
###
# Private
###
diff --git a/test/lib/powerdnsex/managers/zones_manager_test.exs b/test/lib/powerdnsex/managers/zones_manager_test.exs
index 42bace0..9f1c324 100644
--- a/test/lib/powerdnsex/managers/zones_manager_test.exs
+++ b/test/lib/powerdnsex/managers/zones_manager_test.exs
@@ -99,4 +99,24 @@ defmodule PowerDNSex.ZonesManagerTest do
end
end
end
+
+ describe "ZonesManager.delete/2" do
+ @tag :zones_manager_delete
+ test "return given correct params" do
+ use_cassette "zones_manager/delete/success" do
+ req_status = ZonesManager.delete("success-delete.com").status_code
+ assert req_status == 204
+ end
+ end
+
+ @tag :zones_manager_delete
+ test "return error when zone don't exists" do
+ use_cassette "zones_manager/delete/not_found" do
+ req = ZonesManager.delete("not_found.com")
+ assert req.status_code == 422
+ assert req.body ==
+ "{\"error\": \"Could not find domain 'not_found.com.'\"}"
+ end
+ end
+ end
end
diff --git a/test/support/cassettes/zones_manager/delete/not_found.json b/test/support/cassettes/zones_manager/delete/not_found.json
new file mode 100644
index 0000000..ab1540c
--- /dev/null
+++ b/test/support/cassettes/zones_manager/delete/not_found.json
@@ -0,0 +1,31 @@
+[
+ {
+ "request": {
+ "body": "",
+ "headers": {
+ "X-API-Key": "Locaweb2016"
+ },
+ "method": "delete",
+ "options": [],
+ "request_body": "",
+ "url": "http://cpro36999.systemintegration.locaweb.com.br/api/v1/servers/localhost/zones/not_found.com"
+ },
+ "response": {
+ "body": "{\"error\": \"Could not find domain 'not_found.com.'\"}",
+ "headers": {
+ "Access-Control-Allow-Origin": "*",
+ "Connection": "close",
+ "Content-Length": "51",
+ "Content-Security-Policy": "default-src 'self'; style-src 'self' 'unsafe-inline'",
+ "Content-Type": "application/json",
+ "Server": "PowerDNS/4.0.1",
+ "X-Content-Type-Options": "nosniff",
+ "X-Frame-Options": "deny",
+ "X-Permitted-Cross-Domain-Policies": "none",
+ "X-Xss-Protection": "1; mode=block"
+ },
+ "status_code": 422,
+ "type": "ok"
+ }
+ }
+]
diff --git a/test/support/cassettes/zones_manager/delete/success.json b/test/support/cassettes/zones_manager/delete/success.json
new file mode 100644
index 0000000..655ebe7
--- /dev/null
+++ b/test/support/cassettes/zones_manager/delete/success.json
@@ -0,0 +1,30 @@
+[
+ {
+ "request": {
+ "body": "",
+ "headers": {
+ "X-API-Key": "Locaweb2016"
+ },
+ "method": "delete",
+ "options": [],
+ "request_body": "",
+ "url": "http://cpro36999.systemintegration.locaweb.com.br/api/v1/servers/localhost/zones/success-delete.com"
+ },
+ "response": {
+ "body": "",
+ "headers": {
+ "Access-Control-Allow-Origin": "*",
+ "Connection": "close",
+ "Content-Length": "0",
+ "Content-Security-Policy": "default-src 'self'; style-src 'self' 'unsafe-inline'",
+ "Server": "PowerDNS/4.0.1",
+ "X-Content-Type-Options": "nosniff",
+ "X-Frame-Options": "deny",
+ "X-Permitted-Cross-Domain-Policies": "none",
+ "X-Xss-Protection": "1; mode=block"
+ },
+ "status_code": 204,
+ "type": "ok"
+ }
+ }
+]