summaryrefslogtreecommitdiff
path: root/test/lib
diff options
context:
space:
mode:
authorTiago Freire <tcfonnet@gmail.com>2016-08-16 01:18:30 -0300
committerTiago Freire <code.tiago.frire@locaweb.com.br>2016-08-18 15:08:05 -0300
commit1db1adbf2d061848f78711c38678edd02250f923 (patch)
tree2932151e492855506a40c9e7af5b6e7583aa1903 /test/lib
parent[WIP] Init. (diff)
WIP
Diffstat (limited to 'test/lib')
-rw-r--r--test/lib/powerdnsex/config_test.exs (renamed from test/lib/powerdnsx/config_test.exs)28
-rw-r--r--test/lib/powerdnsex/managers/records_manager_test.exs73
-rw-r--r--test/lib/powerdnsex/managers/zones_manager_test.exs102
-rw-r--r--test/lib/powerdnsex/models/zone_test.exs0
-rw-r--r--test/lib/powerdnsx/managers/zones_manager_test.exs80
-rw-r--r--test/lib/powerdnsx/models/zone_test.exs27
6 files changed, 191 insertions, 119 deletions
diff --git a/test/lib/powerdnsx/config_test.exs b/test/lib/powerdnsex/config_test.exs
index 4a9a732..adb212a 100644
--- a/test/lib/powerdnsx/config_test.exs
+++ b/test/lib/powerdnsex/config_test.exs
@@ -1,55 +1,59 @@
-defmodule PowerDNSx.ConfigTest do
+defmodule PowerDNSex.ConfigTest do
use ExUnit.Case, async: true
- alias PowerDNSx.FakeConfig, as: Config
+ alias PowerDNSex.FakeConfig, as: Config
setup with_valid_url, do: Config.set_url
setup with_valid_token, do: Config.set_token
setup with_valid_token_and_url, do: Config.set_url && Config.set_token
describe "Config.powerdns_token/0" do
+ @tag :configs
test "Using Env vars", with_valid_url do
env_token = "3nv_S3cr37_T0k3n"
System.put_env("POWERDNS_TOKEN", env_token)
Application.put_env(:powerdns, :token, {:system, "POWERDNS_TOKEN"})
- assert PowerDNSx.Config.powerdns_token == env_token
+ assert PowerDNSex.Config.powerdns_token == env_token
end
+ @tag :configs
test "using application config", with_valid_token_and_url do
- assert PowerDNSx.Config.powerdns_token == "4pp_S3cr37_T0k3n"
+ assert PowerDNSex.Config.powerdns_token == Config.token
end
+ @tag :configs
test "given none token config", with_valid_url do
Application.delete_env(:powerdns, :token)
- expected_error = "[PowerDNSx] PowerDNS token not configured."
+ expected_error = "[PowerDNSex] PowerDNS token not configured."
assert_raise RuntimeError, expected_error, fn ->
- PowerDNSx.Config.powerdns_token
+ PowerDNSex.Config.powerdns_token
end
end
end
describe "Config.powerdns_url/0" do
+ @tag :configs
test "Using Env vars", with_valid_token do
env_url = "https://env-powerdns.test"
System.put_env("POWERDNS_URL", env_url)
Application.put_env(:powerdns, :url, {:system, "POWERDNS_URL"})
- assert PowerDNSx.Config.powerdns_url == env_url
+ assert PowerDNSex.Config.powerdns_url == env_url
end
+ @tag :configs
test "using application config", with_valid_token_and_url do
- assert PowerDNSx.Config.powerdns_url == "https://app-config-powerdns.test"
+ assert PowerDNSex.Config.powerdns_url == Config.url
end
+ @tag :configs
test "given none url config", with_valid_token do
Application.delete_env(:powerdns, :url)
- expected_error = "[PowerDNSx] PowerDNS url not configured."
+ expected_error = "[PowerDNSex] PowerDNS url not configured."
assert_raise RuntimeError, expected_error, fn ->
- PowerDNSx.Config.powerdns_url
+ PowerDNSex.Config.powerdns_url
end
end
end
-
-
end
diff --git a/test/lib/powerdnsex/managers/records_manager_test.exs b/test/lib/powerdnsex/managers/records_manager_test.exs
new file mode 100644
index 0000000..3b91fc2
--- /dev/null
+++ b/test/lib/powerdnsex/managers/records_manager_test.exs
@@ -0,0 +1,73 @@
+defmodule PowerDNSex.RecordsManagerTest do
+
+ use ExUnit.Case, async: false
+ use ExVCR.Mock, adapter: ExVCR.Adapter.Hackney
+
+ alias PowerDNSex.Models.{Zone, ResourceRecordSet, Record}
+ alias PowerDNSex.RecordsManager
+
+ @valid_zone %Zone{name: "my-domain.art.",
+ url: "api/v1/servers/localhost/zones/my-domain.art."}
+ @new_record %{
+ name: "new-record.my-domain.art.",
+ type: "A",
+ ttl: 86400,
+ records: [
+ {"127.0.0.1", false},
+ {"192.168.0.1", true}
+ ]
+ }
+
+ @updated_record %{
+ name: "updated-record.my-domain.art.",
+ type: "A",
+ ttl: 86800,
+ records: [{"127.0.0.1", true}]
+ }
+
+ 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)
+
+ ExVCR.Config.cassette_library_dir("test/support/cassettes",
+ "test/support/custom_cassettes")
+ HTTPoison.start
+ end
+
+ describe "create/2" do
+ test "exception given empty zones url" do
+ raise_msg = "[Records Manager] Zone URL attribute is empty!"
+ assert_raise RuntimeError, raise_msg, fn() ->
+ RecordsManager.create(%Zone{}, %Record{})
+ end
+ end
+
+ test "content and value of 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 "update/2" do
+ @tag :records_manager_update
+ test "exception given empty zones url" do
+ raise_msg = "[Records Manager] Zone URL attribute is empty!"
+ assert_raise RuntimeError, raise_msg, fn() ->
+ RecordsManager.update(%Zone{}, %Record{})
+ end
+ end
+
+ test "the return given correct params" do
+ use_cassette "records_manager/update/success" do
+ assert RecordsManager.update(@valid_zone, @updated_record) == :ok
+ end
+ end
+ end
+end
diff --git a/test/lib/powerdnsex/managers/zones_manager_test.exs b/test/lib/powerdnsex/managers/zones_manager_test.exs
new file mode 100644
index 0000000..42bace0
--- /dev/null
+++ b/test/lib/powerdnsex/managers/zones_manager_test.exs
@@ -0,0 +1,102 @@
+defmodule PowerDNSex.ZonesManagerTest do
+
+ use ExUnit.Case, async: false
+ use ExVCR.Mock, adapter: ExVCR.Adapter.Hackney
+
+ alias PowerDNSex.ZonesManager
+ alias PowerDNSex.Models.{Zone, Record}
+ alias PowerDNSex.Models.ResourceRecordSet, as: RRSet
+ alias PowerDNSex.FakeConfig, as: Config
+
+ @invalid_not_canonical %Zone{name: "not-canonical-domain.tst"}
+ @unknown_name "it-will-never-exist.on.the.art."
+
+ @valid_zone_test %Zone{name: "my-domain.art.",
+ serial: 2016060601,
+ comments: ["Test comment"] }
+
+ @expected_rrset [
+ %RRSet{
+ name: "my-domain.art.",
+ ttl: 3600,
+ type: "SOA",
+ records: [
+ %Record{content: "a.misconfigured.powerdns.server. " <>
+ "hostmaster.my-domain.art. " <>
+ "2016060601 10800 3600 604800 3600",
+ disabled: false}
+ ]
+ }
+ ]
+
+ @expected_zone %Zone{name: "my-domain.art.",
+ id: "my-domain.art.",
+ account: "",
+ serial: 2016060601,
+ url: "api/v1/servers/localhost/zones/my-domain.art.",
+ rrsets: @expected_rrset}
+
+ 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)
+
+ ExVCR.Config.cassette_library_dir("test/support/cassettes",
+ "test/support/custom_cassettes")
+ HTTPoison.start
+ end
+
+ describe "ZoneManager.create/2" do
+ @tag :zones_manager_create
+ test "return given correct parameters" do
+ use_cassette "zones_manager/create/success" do
+ zone = ZonesManager.create(@valid_zone_test)
+ assert zone.__struct__ == PowerDNSex.Models.Zone
+ assert zone.name == @valid_zone_test.name
+ end
+ end
+
+ @tag :zones_manager_create
+ test "return error given invalid name" do
+ use_cassette "zones_manager/create/invalid_not_canonical" do
+ error_msg = "DNS Name 'not-canonical-domain.tst' is not canonical"
+ response = ZonesManager.create(@invalid_not_canonical)
+ assert response.__struct__ == PowerDNSex.Models.Error
+ assert response.error == error_msg
+ end
+ end
+ end
+
+ describe "ZonesManager.show/2" do
+ @tag :zones_manager_show
+ test "type of return given a correct zone name" do
+ use_cassette "zones_manager/show/success" do
+ zone = ZonesManager.show(@valid_zone_test.name)
+ assert zone.__struct__ == PowerDNSex.Models.Zone
+ end
+ end
+
+ @tag :zones_manager_show
+ test "values in return given a correct zone name" do
+ use_cassette "zones_manager/show/success" do
+ zone = ZonesManager.show(@valid_zone_test.name)
+ assert zone == @expected_zone
+ end
+ end
+
+ @tag :zones_manager_show
+ test "values in return given a unknown zone name" do
+ use_cassette "zones_manager/show/not_found" do
+ error_msg = "Could not find domain 'it-will-never-exist.on.the.art.'"
+ response = ZonesManager.show(@unknown_name)
+ assert response.__struct__ == PowerDNSex.Models.Error
+ assert response.error == error_msg
+ end
+ end
+ end
+end
diff --git a/test/lib/powerdnsex/models/zone_test.exs b/test/lib/powerdnsex/models/zone_test.exs
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/lib/powerdnsex/models/zone_test.exs
diff --git a/test/lib/powerdnsx/managers/zones_manager_test.exs b/test/lib/powerdnsx/managers/zones_manager_test.exs
deleted file mode 100644
index cc793d0..0000000
--- a/test/lib/powerdnsx/managers/zones_manager_test.exs
+++ /dev/null
@@ -1,80 +0,0 @@
-defmodule PowerDNSx.ZonesManagerTest do
-
- use ExUnit.Case, async: true
- use ExVCR.Mock, adapter: ExVCR.Adapter.Hackney
-
- alias PowerDNSx.ZonesManager
- alias PowerDNSx.Models.Zone
- alias PowerDNSx.FakeConfig, as: Config
-
- @valid_zone_loca %Zone{name: "devtiagofreire.art.br"}
-
- @valid_zone_test %Zone{name: "my-domain.tst",
- serial: 2016060601,
- comments: ["Test comment"] }
-
- @expected_records [
- %{"content" => "ns2.my-powerdns.api", "disabled" => false,
- "name" => "my-domain.tst", "ttl" => 3600, "type" => "NS"},
- %{"content" => "ns1.my-powerdns.api", "disabled" => false,
- "name" => "my-domain.tst", "ttl" => 3600, "type" => "NS"},
- %{"content" => "a.misconfigured.powerdns.server " <>
- "hostmaster.my-domain.tst " <>
- "2016060601 10800 3600 604800 3600",
- "disabled" => false, "name" => "my-domain.tst", "ttl" => 3600,
- "type" => "SOA"}
- ]
-
- @expected_zone %Zone{name: "my-domain.tst",
- id: "my-domain.tst.",
- account: "",
- serial: 2016060601,
- url: "/servers/localhost/zones/my-domain.tst.",
- records: @expected_records}
-
- setup_all do
- #Config.set_url
- #Config.set_token
-
- pwdns_url_loca = "http://cpro36999.systemintegration.locaweb.com.br"
- pwdns_url_test = "http://my-powerdns.api"
- Application.put_env(:powerdns, :url, pwdns_url_test)
-
- pwdns_token_loca = "Locaweb2016"
- pwdns_token_test = "S3cr3t-T0k3n"
- Application.put_env(:powerdns, :token, pwdns_token_test)
-
- ExVCR.Config.cassette_library_dir("test/support/cassettes",
- "test/support/custom_cassettes")
- HTTPoison.start
- end
-
- describe "ZoneManager.create/2" do
- @tag :zones_manager_create
- test "type of return given correct parameters" do
- use_cassette "zones_manager/create/valid_parameters" do
- zone = ZonesManager.create(@valid_zone_test)
- assert zone.__struct__ == PowerDNSx.Models.Zone
- end
- end
- end
-
- describe "ZonesManager.show/2" do
- @tag :zones_manager_show
- test "type of return given a correct zone name" do
- use_cassette "zones_manager/show/valid_record" do
- zone = ZonesManager.show(@valid_zone_test.name)
- assert zone.__struct__ == PowerDNSx.Models.Zone
- end
- end
-
- @tag :zones_manager_show
- test "values in return given a correct zone name" do
- use_cassette "zones_manager/show/valid_record" do
- zone = ZonesManager.show(@valid_zone_test.name)
- assert zone == @expected_zone
- end
- end
- end
-
-end
diff --git a/test/lib/powerdnsx/models/zone_test.exs b/test/lib/powerdnsx/models/zone_test.exs
deleted file mode 100644
index 8a61602..0000000
--- a/test/lib/powerdnsx/models/zone_test.exs
+++ /dev/null
@@ -1,27 +0,0 @@
-# defmodule PowerDNSx.Models.ZoneTest do
-#
-# use ExUnit.Case, async: true
-#
-# alias PowerDNSx.Models.Zone
-#
-# describe "Zone.build/1" do
-# test "build zone with all attributes" do
-# ns_servers = ["ns1.powerdnsx.tst", "ns2.powerdnsx.tst"]
-#
-# zone_params = %{id: nil,
-# name: "test.tst",
-# nameservers: ns_servers,
-# account: "pdnaccount",
-# kind: "Native",
-# masters: [],
-# records: [],
-# serial: nil,
-# comments: [],
-# soa_edit: nil,
-# soa_edit_api: nil}
-#
-# zone_built = Zone.build(zone_params)
-# assert zone_params === Map.from_struct(zone_built)
-# end
-# end
-# end