diff options
author | Tiago Freire <tcfonnet@gmail.com> | 2016-08-16 01:18:30 -0300 |
---|---|---|
committer | Tiago Freire <code.tiago.frire@locaweb.com.br> | 2016-08-16 19:02:58 -0300 |
commit | 217482d28f9125cc7a0034896da7a75b9e64ca41 (patch) | |
tree | 17335246dd2b76e4ffa2f1b3237715b67bfa1242 /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.exs | 51 | ||||
-rw-r--r-- | test/lib/powerdnsex/managers/zones_manager_test.exs | 104 | ||||
-rw-r--r-- | test/lib/powerdnsex/models/zone_test.exs | 0 | ||||
-rw-r--r-- | test/lib/powerdnsx/managers/zones_manager_test.exs | 80 | ||||
-rw-r--r-- | test/lib/powerdnsx/models/zone_test.exs | 27 |
6 files changed, 171 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..e4b2579 --- /dev/null +++ b/test/lib/powerdnsex/managers/records_manager_test.exs @@ -0,0 +1,51 @@ +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, + content: [ + {"127.0.0.1", false}, + {"192.168.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{%Zone{}, %Record{}}" 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 + +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..89eb137 --- /dev/null +++ b/test/lib/powerdnsex/managers/zones_manager_test.exs @@ -0,0 +1,104 @@ +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.tst.", + ttl: 3600, + type: "SOA", + records: [ + %Record{content: "ns2.my-powerdns.api", disabled: false}, + %Record{content: "ns1.my-powerdns.api", disabled: false}, + %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 |