diff options
author | Tiago Freire <code.tiago.frire@locaweb.com.br> | 2016-08-22 21:26:56 -0300 |
---|---|---|
committer | Tiago Freire <code.tiago.frire@locaweb.com.br> | 2016-08-26 14:19:28 -0300 |
commit | 416539a6acb4391b52f80d91b96fdab07658953d (patch) | |
tree | 6ea82b452f3acfe8f64ef703ed0386b6fca561a4 | |
parent | Add Delete Record feature (diff) |
WIP - Add elixir GenServer
23 files changed, 242 insertions, 65 deletions
diff --git a/lib/powerdnsex.ex b/lib/powerdnsex.ex index c82aa59..7152417 100644 --- a/lib/powerdnsex.ex +++ b/lib/powerdnsex.ex @@ -1,2 +1,70 @@ defmodule PowerDNSex do + @default_server "localhost" + use PowerDNSex.ServerSetup + + alias PowerDNSex.Managers.{ZonesManager, RecordsManager} + alias PowerDNSex.Models.Zone + + ### + # Zones + ### + + @spec create_zone(Zone.t, String.t) :: :ok | {:error, String.t} + @doc """ + Create a new Zone on PowerDNS + """ + def create_zone(%Zone{} = zone, server_name \\ @default_server) do + ZonesManager.create(zone, server_name) + end + + @spec show_zone(Zone.t, String.t) :: :ok | {:error, String.t} + @doc """ + Show / Retrive info of the specific Zone + """ + def show_zone(%Zone{} = zone, server_name \\ @default_server) do + ZonesManager.show(zone, server_name) + end + + @spec delete_zone(Zone.t, String.t) :: :ok | {:error, String.t} + @doc """ + Delete specific Zone on PowerDNS + """ + def delete_zone(%Zone{} = zone, server_name \\ @default_server) do + ZonesManager.delete(zone, server_name) + end + + ### + # Records + ### + @spec create_record(Zone.t, struct) :: :ok | {:error, String.t} + @doc """ + Create a new Record for the given Zone + """ + def create_record(%Zone{} = zone, %{} = rrset_attrs) do + RecordsManager.create(zone, rrset_attrs) + end + + @spec show_record(Zone.t, struct) :: :ok | {:error, String.t} + @doc """ + Show / Retrive info of the specific Record of the given Zone + """ + def show_record(%Zone{} = zone, %{} = rrset_attrs) do + RecordsManager.show(zone, rrset_attrs) + end + + @spec update_record(Zone.t, struct) :: :ok | {:error, String.t} + @doc """ + Update Record of the given Zone + """ + def update_record(%Zone{} = zone, %{} = rrset_attrs) do + RecordsManager.update(zone, rrset_attrs) + end + + @spec delete_record(Zone.t, struct) :: :ok | {:error, String.t} + @doc """ + Delete specific Record of given Zone + """ + def delete_record(%Zone{} = zone, %{} = rrset_attrs) do + RecordsManager.delete(zone, rrset_attrs) + end end diff --git a/lib/powerdnsex/config.ex b/lib/powerdnsex/config.ex index 50589d4..486ccb6 100644 --- a/lib/powerdnsex/config.ex +++ b/lib/powerdnsex/config.ex @@ -14,12 +14,11 @@ defmodule PowerDNSex.Config do end def powerdns_url do - data.url + url = data.url + if String.ends_with?(url, "/"), do: url, else: url <> "/" end - def powerdns_token do - data.token - end + def powerdns_token, do: data.token ### # Private diff --git a/lib/http_client.ex b/lib/powerdnsex/http_client.ex index 6d18cbe..0a242b5 100644 --- a/lib/http_client.ex +++ b/lib/powerdnsex/http_client.ex @@ -7,9 +7,7 @@ defmodule PowerDNSex.HttpClient do alias PowerDNSex.Config - def process_url(url) do - Config.powerdns_url <> url - end + def process_url(url), do: Config.powerdns_url <> url defp process_request_headers(headers) do custom = ["X-API-Key": Config.powerdns_token] diff --git a/lib/powerdnsex/managers/records_manager.ex b/lib/powerdnsex/managers/records_manager.ex index 7ac83ca..a8c67e5 100644 --- a/lib/powerdnsex/managers/records_manager.ex +++ b/lib/powerdnsex/managers/records_manager.ex @@ -1,8 +1,9 @@ -defmodule PowerDNSex.RecordsManager do +defmodule PowerDNSex.Managers.RecordsManager do alias PowerDNSex.HttpClient alias PowerDNSex.Models.{Zone, Record, Error} - alias PowerDNSex.Models.ResourceRecordSet, as: RRset + alias PowerDNSex.Models.ResourceRecordSet, as: RRSet + alias PowerDNSex.Managers.ZonesManager alias HTTPoison.Response @@ -11,6 +12,11 @@ defmodule PowerDNSex.RecordsManager do patch(zone, rrset_attrs) end + def show(zone_name, %{} = rrset_attrs) do + zone = ZonesManager.show(zone_name) + RRSet.find(zone.rrsets, rrset_attrs) + end + def update(%Zone{} = zone, %{} = rrset_attrs) do rrset_attrs = Map.merge(rrset_attrs, %{changetype: "REPLACE"}) patch(zone, rrset_attrs) @@ -38,7 +44,12 @@ defmodule PowerDNSex.RecordsManager do defp patch(%Zone{} = zone, %{} = rrset_attrs) do zone.url - |> HttpClient.patch!(RRset.as_body(RRset.build(rrset_attrs))) + |> HttpClient.patch!(RRSet.as_body(RRSet.build(rrset_attrs))) |> process_request_response end + + defp has_attrs?(rrset, attrs) do + Map.keys(attrs) + |> Enum.all?(&(equal_attr?(&1, attrs[&1], rrsets))) + end end diff --git a/lib/powerdnsex/managers/zones_manager.ex b/lib/powerdnsex/managers/zones_manager.ex index ebad7fe..260adbb 100644 --- a/lib/powerdnsex/managers/zones_manager.ex +++ b/lib/powerdnsex/managers/zones_manager.ex @@ -1,4 +1,4 @@ -defmodule PowerDNSex.ZonesManager do +defmodule PowerDNSex.Managers.ZonesManager do @default_server "localhost" diff --git a/lib/powerdnsex/models/record.ex b/lib/powerdnsex/models/record.ex index a494a07..9ffc2b7 100644 --- a/lib/powerdnsex/models/record.ex +++ b/lib/powerdnsex/models/record.ex @@ -26,4 +26,12 @@ defmodule PowerDNSex.Models.Record do def as_body(record_attrs) when is_tuple(record_attrs) do %{content: elem(record_attrs, 0), disabled: elem(record_attrs, 1)} end + + def find(records, attrs) when is_list(records) do + Enum.find(records, fn(record)-> + Enum.all?(attrs, fn({attr, attr_value})-> + Map.get(record, attr) == attr_value + end) + end) + end end diff --git a/lib/powerdnsex/models/resource_record_set.ex b/lib/powerdnsex/models/resource_record_set.ex index f4338a2..9f248ab 100644 --- a/lib/powerdnsex/models/resource_record_set.ex +++ b/lib/powerdnsex/models/resource_record_set.ex @@ -25,6 +25,22 @@ defmodule PowerDNSex.Models.ResourceRecordSet do |> Poison.encode! end + def find(rrsets, %{} = attrs) when is_list(rrsets) do + Enum.find(rrsets, fn(rrset)-> + Enum.all?(attrs, fn({attr, attr_value})-> + if Enum.member?(Map.keys(%__MODULE__{}), attr) do + equal_attr?(attr, attr_value, rrset) + else + Record.find(rrset.records, %{attr => attr_value}) + end + end) + end) + end + + ### + # Private + ### + defp set_attrs(rrset, attr_name, attrs) do if Map.has_key?(attrs, attr_name) do attr_value = case attr_name do @@ -37,4 +53,8 @@ defmodule PowerDNSex.Models.ResourceRecordSet do rrset end end + + defp equal_attr?(attr, attr_value, rrset) do + Map.get(rrset, attr) == attr_value + end end diff --git a/lib/powerdnsex/server_setup.ex b/lib/powerdnsex/server_setup.ex new file mode 100644 index 0000000..3b5cb14 --- /dev/null +++ b/lib/powerdnsex/server_setup.ex @@ -0,0 +1,29 @@ +defmodule PowerDNSex.ServerSetup do + defmacro __using__(opts \\ []) do + quote bind_quoted: [opts: opts] do + use Application + + @name opts[:process_name] || :PowerDNSex + @config opts[:config] + + @spec start(term, term) :: GenServer.on_start + def start(_, _), do: start + + @spec start() :: GenServer.on_start + @doc false + def start do + import Supervisor.Spec + + children = [worker(Server, [@name, @config])] + + options = [strategy: :one_for_one, name: :"#{@name}.Supervisor"] + + case Supervisor.start_link(children, options) do + {:ok, pid} -> {:ok, pid} + {:error, {:already_started, pid}} -> {:ok, pid} + other -> other + end + end + end + end +end diff --git a/test/lib/powerdnsex/config_test.exs b/test/lib/powerdnsex/config_test.exs index adb212a..c0a5150 100644 --- a/test/lib/powerdnsex/config_test.exs +++ b/test/lib/powerdnsex/config_test.exs @@ -11,7 +11,7 @@ defmodule PowerDNSex.ConfigTest do describe "Config.powerdns_token/0" do @tag :configs test "Using Env vars", with_valid_url do - env_token = "3nv_S3cr37_T0k3n" + env_token = "S3cr37_70k3n" System.put_env("POWERDNS_TOKEN", env_token) Application.put_env(:powerdns, :token, {:system, "POWERDNS_TOKEN"}) assert PowerDNSex.Config.powerdns_token == env_token @@ -36,7 +36,7 @@ defmodule PowerDNSex.ConfigTest do describe "Config.powerdns_url/0" do @tag :configs test "Using Env vars", with_valid_token do - env_url = "https://env-powerdns.test" + env_url = "https://env-powerdns.test/" System.put_env("POWERDNS_URL", env_url) Application.put_env(:powerdns, :url, {:system, "POWERDNS_URL"}) assert PowerDNSex.Config.powerdns_url == env_url @@ -44,7 +44,7 @@ defmodule PowerDNSex.ConfigTest do @tag :configs test "using application config", with_valid_token_and_url do - assert PowerDNSex.Config.powerdns_url == Config.url + assert PowerDNSex.Config.powerdns_url == Config.url <> "/" end @tag :configs diff --git a/test/lib/powerdnsex/managers/records_manager_test.exs b/test/lib/powerdnsex/managers/records_manager_test.exs index aa054c2..f01f757 100644 --- a/test/lib/powerdnsex/managers/records_manager_test.exs +++ b/test/lib/powerdnsex/managers/records_manager_test.exs @@ -1,10 +1,11 @@ -defmodule PowerDNSex.RecordsManagerTest do +defmodule PowerDNSex.Managers.RecordsManagerTest do use ExUnit.Case, async: false use ExVCR.Mock, adapter: ExVCR.Adapter.Hackney - alias PowerDNSex.Models.{Zone, ResourceRecordSet, Record} - alias PowerDNSex.RecordsManager + alias PowerDNSex.Models.{Zone, Record} + alias PowerDNSex.Managers.RecordsManager + alias PowerDNSex.FakeConfig, as: Config @valid_zone %Zone{name: "my-domain.art.", url: "api/v1/servers/localhost/zones/my-domain.art."} @@ -43,14 +44,8 @@ defmodule PowerDNSex.RecordsManagerTest do } setup do - # Config.set_url - # Config.set_token - - pwdns_url_loca = "http://cpro36999.systemintegration.locaweb.com.br/" - Application.put_env(:powerdns, :url, pwdns_url_loca) - - pwdns_token_loca = "Locaweb2016" - Application.put_env(:powerdns, :token, pwdns_token_loca) + Config.set_url + Config.set_token ExVCR.Config.cassette_library_dir("test/support/cassettes", "test/support/custom_cassettes") @@ -58,6 +53,7 @@ defmodule PowerDNSex.RecordsManagerTest do end describe "create/2" do + @tag :records_manager_create test "exception given empty zones url" do raise_msg = "[Records Manager] Zone URL attribute is empty!" assert_raise RuntimeError, raise_msg, fn() -> @@ -65,13 +61,30 @@ defmodule PowerDNSex.RecordsManagerTest do end end - test "content and value of the return given correct params" do + @tag :records_manager_create + test "the return given correct params" do use_cassette "records_manager/create/success" do assert RecordsManager.create(@valid_zone, @new_record) == :ok end end end + describe "show/2" do + @tag :records_manager_show + test "content given attrs of a valid record" do + use_cassette "records_manager/show/success" do + zone_name = @valid_zone.name + attrs = %{name: "new-record.#{zone_name}", + type: "A", + content: "127.0.0.1"} + + record = RecordsManager.show(zone_name, attrs) + assert record.name == attrs.name + assert record.type == attrs.type + end + end + end + describe "update/2" do @tag :records_manager_update test "exception given empty zones url" do @@ -109,7 +122,7 @@ defmodule PowerDNSex.RecordsManagerTest do end describe "delete/2" do - @tag :records_manager_update + @tag :records_manager_delete test "the return given a correct record" do use_cassette "records_manager/delete/success" do assert RecordsManager.delete(@valid_zone, @record_to_delete) == :ok diff --git a/test/lib/powerdnsex/managers/zones_manager_test.exs b/test/lib/powerdnsex/managers/zones_manager_test.exs index b3aa5ef..c0e874d 100644 --- a/test/lib/powerdnsex/managers/zones_manager_test.exs +++ b/test/lib/powerdnsex/managers/zones_manager_test.exs @@ -1,9 +1,9 @@ -defmodule PowerDNSex.ZonesManagerTest do +defmodule PowerDNSex.Managers.ZonesManagerTest do use ExUnit.Case, async: false use ExVCR.Mock, adapter: ExVCR.Adapter.Hackney - alias PowerDNSex.ZonesManager + alias PowerDNSex.Managers.ZonesManager alias PowerDNSex.Models.{Zone, Record} alias PowerDNSex.Models.ResourceRecordSet, as: RRSet alias PowerDNSex.FakeConfig, as: Config @@ -37,14 +37,14 @@ defmodule PowerDNSex.ZonesManagerTest do rrsets: @expected_rrset} setup do - # Config.set_url - # Config.set_token + Config.set_url + Config.set_token - pwdns_url_loca = "http://cpro36999.systemintegration.locaweb.com.br/" - Application.put_env(:powerdns, :url, pwdns_url_loca) + # pwdns_url_loca = "http://cpro36999.systemintegration.locaweb.com.br/" + # Application.put_env(:powerdns, :url, pwdns_url_loca) - pwdns_token_loca = "Locaweb2016" - Application.put_env(:powerdns, :token, pwdns_token_loca) + # pwdns_token_loca = "Locaweb2016" + # Application.put_env(:powerdns, :token, pwdns_token_loca) ExVCR.Config.cassette_library_dir("test/support/cassettes", "test/support/custom_cassettes") diff --git a/test/support/cassettes/records_manager/create/success.json b/test/support/cassettes/records_manager/create/success.json index 73bdc22..10dc5ce 100644 --- a/test/support/cassettes/records_manager/create/success.json +++ b/test/support/cassettes/records_manager/create/success.json @@ -3,12 +3,12 @@ "request": { "body": "{\"rrsets\":[{\"type\":\"A\",\"ttl\":86400,\"records\":[{\"disabled\":false,\"content\":\"127.0.0.1\"},{\"disabled\":true,\"content\":\"192.168.0.1\"}],\"name\":\"new-record.my-domain.art.\",\"changetype\":\"REPLACE\"}]}", "headers": { - "X-API-Key": "Locaweb2016" + "X-API-Key": "S3cr37_70k3n" }, "method": "patch", "options": [], "request_body": "", - "url": "http://cpro36999.systemintegration.locaweb.com.br/api/v1/servers/localhost/zones/my-domain.art." + "url": "https://my-powerdns.api/api/v1/servers/localhost/zones/my-domain.art." }, "response": { "body": "", @@ -27,4 +27,4 @@ "type": "ok" } } -]
\ No newline at end of file +] diff --git a/test/support/cassettes/records_manager/delete/success.json b/test/support/cassettes/records_manager/delete/success.json index fccb1ad..2eba075 100644 --- a/test/support/cassettes/records_manager/delete/success.json +++ b/test/support/cassettes/records_manager/delete/success.json @@ -3,12 +3,12 @@ "request": { "body": "{\"rrsets\":[{\"type\":\"A\",\"ttl\":null,\"records\":[],\"name\":\"record-to-delete.my-domain.art.\",\"changetype\":\"DELETE\"}]}", "headers": { - "X-API-Key": "Locaweb2016" + "X-API-Key": "S3cr37_70k3n" }, "method": "patch", "options": [], "request_body": "", - "url": "http://cpro36999.systemintegration.locaweb.com.br/api/v1/servers/localhost/zones/my-domain.art." + "url": "https://my-powerdns.api/api/v1/servers/localhost/zones/my-domain.art." }, "response": { "body": "", @@ -27,4 +27,4 @@ "type": "ok" } } -]
\ No newline at end of file +] diff --git a/test/support/cassettes/records_manager/show/success.json b/test/support/cassettes/records_manager/show/success.json new file mode 100644 index 0000000..542ed79 --- /dev/null +++ b/test/support/cassettes/records_manager/show/success.json @@ -0,0 +1,31 @@ +[ + { + "request": { + "body": "", + "headers": { + "X-API-Key": "S3cr37_70k3n" + }, + "method": "get", + "options": [], + "request_body": "", + "url": "https://my-powerdns.api/api/v1/servers/localhost/zones/my-domain.art." + }, + "response": { + "body": "{\"account\": \"\", \"dnssec\": false, \"id\": \"my-domain.art.\", \"kind\": \"Native\", \"last_check\": 0, \"masters\": [], \"name\": \"my-domain.art.\", \"notified_serial\": 0, \"rrsets\": [{\"comments\": [], \"name\": \"new-record.my-domain.art.\", \"records\": [{\"content\": \"192.168.0.1\", \"disabled\": true}, {\"content\": \"127.0.0.1\", \"disabled\": false}], \"ttl\": 86400, \"type\": \"A\"}, {\"comments\": [], \"name\": \"updated-record.my-domain.art.\", \"records\": [{\"content\": \"127.0.0.1\", \"disabled\": true}], \"ttl\": 86800, \"type\": \"A\"}, {\"comments\": [], \"name\": \"my-domain.art.\", \"records\": [{\"content\": \"a.misconfigured.powerdns.server. hostmaster.my-domain.art. 2016060601 10800 3600 604800 3600\", \"disabled\": false}], \"ttl\": 3600, \"type\": \"SOA\"}], \"serial\": 2016060601, \"soa_edit\": \"\", \"soa_edit_api\": \"\", \"url\": \"api/v1/servers/localhost/zones/my-domain.art.\"}", + "headers": { + "Access-Control-Allow-Origin": "*", + "Connection": "close", + "Content-Length": "822", + "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": 200, + "type": "ok" + } + } +] diff --git a/test/support/cassettes/records_manager/update/invalid_record.json b/test/support/cassettes/records_manager/update/invalid_record.json index df6d73a..aee43cd 100644 --- a/test/support/cassettes/records_manager/update/invalid_record.json +++ b/test/support/cassettes/records_manager/update/invalid_record.json @@ -3,12 +3,12 @@ "request": { "body": "{\"rrsets\":[{\"type\":\"NS\",\"ttl\":86800,\"records\":[{\"disabled\":true,\"content\":\"127.0.0.1\"}],\"name\":\"updated-record.my-domain.art.\",\"changetype\":\"REPLACE\"}]}", "headers": { - "X-API-Key": "Locaweb2016" + "X-API-Key": "S3cr37_70k3n" }, "method": "patch", "options": [], "request_body": "", - "url": "http://cpro36999.systemintegration.locaweb.com.br/api/v1/servers/localhost/zones/my-domain.art." + "url": "https://my-powerdns.api/api/v1/servers/localhost/zones/my-domain.art." }, "response": { "body": "{\"error\": \"Record updated-record.my-domain.art./NS '127.0.0.1': Not in expected format (parsed as '127.0.0.1.')\"}", @@ -28,4 +28,4 @@ "type": "ok" } } -]
\ No newline at end of file +] diff --git a/test/support/cassettes/records_manager/update/not_found.json b/test/support/cassettes/records_manager/update/not_found.json index 38edad2..31a82cc 100644 --- a/test/support/cassettes/records_manager/update/not_found.json +++ b/test/support/cassettes/records_manager/update/not_found.json @@ -3,12 +3,12 @@ "request": { "body": "{\"rrsets\":[{\"type\":\"A\",\"ttl\":86800,\"records\":[{\"disabled\":true,\"content\":\"127.0.0.1\"}],\"name\":\"updated-record.my-domain.art.\",\"changetype\":\"REPLACE\"}]}", "headers": { - "X-API-Key": "Locaweb2016" + "X-API-Key": "S3cr37_70k3n" }, "method": "patch", "options": [], "request_body": "", - "url": "http://cpro36999.systemintegration.locaweb.com.br/api/v1/servers/localhost/zones/not-canonical-domain.tst" + "url": "https://my-powerdns.api/api/v1/servers/localhost/zones/not-canonical-domain.tst" }, "response": { "body": "{\"error\": \"Could not find domain 'not-canonical-domain.tst.'\"}", @@ -28,4 +28,4 @@ "type": "ok" } } -]
\ No newline at end of file +] diff --git a/test/support/cassettes/records_manager/update/success.json b/test/support/cassettes/records_manager/update/success.json index d6a5112..21263f6 100644 --- a/test/support/cassettes/records_manager/update/success.json +++ b/test/support/cassettes/records_manager/update/success.json @@ -3,12 +3,12 @@ "request": { "body": "{\"rrsets\":[{\"type\":\"A\",\"ttl\":86800,\"records\":[{\"disabled\":true,\"content\":\"127.0.0.1\"}],\"name\":\"updated-record.my-domain.art.\",\"changetype\":\"REPLACE\"}]}", "headers": { - "X-API-Key": "Locaweb2016" + "X-API-Key": "S3cr37_70k3n" }, "method": "patch", "options": [], "request_body": "", - "url": "http://cpro36999.systemintegration.locaweb.com.br/api/v1/servers/localhost/zones/my-domain.art." + "url": "https://my-powerdns.api/api/v1/servers/localhost/zones/my-domain.art." }, "response": { "body": "", @@ -27,4 +27,4 @@ "type": "ok" } } -]
\ No newline at end of file +] diff --git a/test/support/cassettes/zones_manager/create/invalid_not_canonical.json b/test/support/cassettes/zones_manager/create/invalid_not_canonical.json index 353115d..7816f3e 100644 --- a/test/support/cassettes/zones_manager/create/invalid_not_canonical.json +++ b/test/support/cassettes/zones_manager/create/invalid_not_canonical.json @@ -3,12 +3,12 @@ "request": { "body": "{\"soa_edit_api\":\"\",\"soa_edit\":\"\",\"serial\":2016060601,\"records\":[],\"nameservers\":[],\"name\":\"not-canonical-domain.tst\",\"masters\":[],\"kind\":\"Native\",\"account\":null}", "headers": { - "X-API-Key": "Locaweb2016" + "X-API-Key": "S3cr37_70k3n" }, "method": "post", "options": [], "request_body": "", - "url": "http://cpro36999.systemintegration.locaweb.com.br/api/v1/servers/localhost/zones" + "url": "https://my-powerdns.api/api/v1/servers/localhost/zones" }, "response": { "body": "{\"error\": \"DNS Name 'not-canonical-domain.tst' is not canonical\"}", diff --git a/test/support/cassettes/zones_manager/create/success.json b/test/support/cassettes/zones_manager/create/success.json index e7880c8..76883af 100644 --- a/test/support/cassettes/zones_manager/create/success.json +++ b/test/support/cassettes/zones_manager/create/success.json @@ -3,12 +3,12 @@ "request": { "body": "{\"soa_edit_api\":\"\",\"soa_edit\":\"\",\"serial\":2016060601,\"records\":[],\"nameservers\":[],\"name\":\"my-domain.art.\",\"masters\":[],\"kind\":\"Native\",\"account\":null}", "headers": { - "X-API-Key": "Locaweb2016" + "X-API-Key": "S3cr37_70k3n" }, "method": "post", "options": [], "request_body": "", - "url": "http://cpro36999.systemintegration.locaweb.com.br/api/v1/servers/localhost/zones" + "url": "https://my-powerdns.api/api/v1/servers/localhost/zones" }, "response": { "body": "{\"account\": \"\", \"dnssec\": false, \"id\": \"my-domain.art.\", \"kind\": \"Native\", \"last_check\": 0, \"masters\": [], \"name\": \"my-domain.art.\", \"notified_serial\": 0, \"rrsets\": [{\"comments\": [], \"name\": \"my-domain.art.\", \"records\": [{\"content\": \"a.misconfigured.powerdns.server. hostmaster.my-domain.art. 2016060601 10800 3600 604800 3600\", \"disabled\": false}], \"ttl\": 3600, \"type\": \"SOA\"}], \"serial\": 2016060601, \"soa_edit\": \"\", \"soa_edit_api\": \"\", \"url\": \"api/v1/servers/localhost/zones/my-domain.art.\"}", @@ -28,4 +28,4 @@ "type": "ok" } } -]
\ No newline at end of file +] diff --git a/test/support/cassettes/zones_manager/delete/not_found.json b/test/support/cassettes/zones_manager/delete/not_found.json index 0637299..8239a23 100644 --- a/test/support/cassettes/zones_manager/delete/not_found.json +++ b/test/support/cassettes/zones_manager/delete/not_found.json @@ -3,12 +3,12 @@ "request": { "body": "", "headers": { - "X-API-Key": "Locaweb2016" + "X-API-Key": "S3cr37_70k3n" }, "method": "delete", "options": [], "request_body": "", - "url": "http://cpro36999.systemintegration.locaweb.com.br/api/v1/servers/localhost/zones/it-will-never-exist.on.the.art." + "url": "https://my-powerdns.api/api/v1/servers/localhost/zones/it-will-never-exist.on.the.art." }, "response": { "body": "{\"error\": \"Could not find domain 'it-will-never-exist.on.the.art.'\"}", diff --git a/test/support/cassettes/zones_manager/delete/success.json b/test/support/cassettes/zones_manager/delete/success.json index 2f3fe90..a898ff2 100644 --- a/test/support/cassettes/zones_manager/delete/success.json +++ b/test/support/cassettes/zones_manager/delete/success.json @@ -3,12 +3,12 @@ "request": { "body": "", "headers": { - "X-API-Key": "Locaweb2016" + "X-API-Key": "S3cr37_70k3n" }, "method": "delete", "options": [], "request_body": "", - "url": "http://cpro36999.systemintegration.locaweb.com.br/api/v1/servers/localhost/zones/my-domain.art." + "url": "https://my-powerdns.api/api/v1/servers/localhost/zones/my-domain.art." }, "response": { "body": "", diff --git a/test/support/cassettes/zones_manager/show/not_found.json b/test/support/cassettes/zones_manager/show/not_found.json index a989d91..bd54638 100644 --- a/test/support/cassettes/zones_manager/show/not_found.json +++ b/test/support/cassettes/zones_manager/show/not_found.json @@ -3,12 +3,12 @@ "request": { "body": "", "headers": { - "X-API-Key": "Locaweb2016" + "X-API-Key": "S3cr37_70k3n" }, "method": "get", "options": [], "request_body": "", - "url": "http://cpro36999.systemintegration.locaweb.com.br/api/v1/servers/localhost/zones/it-will-never-exist.on.the.art." + "url": "https://my-powerdns.api/api/v1/servers/localhost/zones/it-will-never-exist.on.the.art." }, "response": { "body": "{\"error\": \"Could not find domain 'it-will-never-exist.on.the.art.'\"}", @@ -28,4 +28,4 @@ "type": "ok" } } -]
\ No newline at end of file +] diff --git a/test/support/cassettes/zones_manager/show/success.json b/test/support/cassettes/zones_manager/show/success.json index 8f9a935..91d5316 100644 --- a/test/support/cassettes/zones_manager/show/success.json +++ b/test/support/cassettes/zones_manager/show/success.json @@ -3,12 +3,12 @@ "request": { "body": "", "headers": { - "X-API-Key": "Locaweb2016" + "X-API-Key": "S3cr37_70k3n" }, "method": "get", "options": [], "request_body": "", - "url": "http://cpro36999.systemintegration.locaweb.com.br/api/v1/servers/localhost/zones/my-domain.art." + "url": "https://my-powerdns.api/api/v1/servers/localhost/zones/my-domain.art." }, "response": { "body": "{\"account\": \"\", \"dnssec\": false, \"id\": \"my-domain.art.\", \"kind\": \"Native\", \"last_check\": 0, \"masters\": [], \"name\": \"my-domain.art.\", \"notified_serial\": 0, \"rrsets\": [{\"comments\": [], \"name\": \"my-domain.art.\", \"records\": [{\"content\": \"a.misconfigured.powerdns.server. hostmaster.my-domain.art. 2016060601 10800 3600 604800 3600\", \"disabled\": false}], \"ttl\": 3600, \"type\": \"SOA\"}], \"serial\": 2016060601, \"soa_edit\": \"\", \"soa_edit_api\": \"\", \"url\": \"api/v1/servers/localhost/zones/my-domain.art.\"}", @@ -28,4 +28,4 @@ "type": "ok" } } -]
\ No newline at end of file +] |