diff options
author | Tiago Freire <tcfonnet@gmail.com> | 2016-07-22 09:18:21 -0300 |
---|---|---|
committer | Tiago Freire <tcfonnet@gmail.com> | 2016-07-25 10:51:14 -0300 |
commit | cad149156ee46ec9feb4929dc1ed5d60a4f4f44e (patch) | |
tree | a36f8548f7b220f7846d7c4f77d03d5ab55bd390 /test/lib |
[WIP] Init.
Diffstat (limited to 'test/lib')
-rw-r--r-- | test/lib/powerdnsx/config_test.exs | 55 | ||||
-rw-r--r-- | test/lib/powerdnsx/managers/zones_manager_test.exs | 80 | ||||
-rw-r--r-- | test/lib/powerdnsx/models/zone_test.exs | 27 |
3 files changed, 162 insertions, 0 deletions
diff --git a/test/lib/powerdnsx/config_test.exs b/test/lib/powerdnsx/config_test.exs new file mode 100644 index 0000000..4a9a732 --- /dev/null +++ b/test/lib/powerdnsx/config_test.exs @@ -0,0 +1,55 @@ +defmodule PowerDNSx.ConfigTest do + + use ExUnit.Case, async: true + + alias PowerDNSx.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 + 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 + end + + test "using application config", with_valid_token_and_url do + assert PowerDNSx.Config.powerdns_token == "4pp_S3cr37_T0k3n" + end + + test "given none token config", with_valid_url do + Application.delete_env(:powerdns, :token) + expected_error = "[PowerDNSx] PowerDNS token not configured." + + assert_raise RuntimeError, expected_error, fn -> + PowerDNSx.Config.powerdns_token + end + end + end + + describe "Config.powerdns_url/0" do + 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 + end + + test "using application config", with_valid_token_and_url do + assert PowerDNSx.Config.powerdns_url == "https://app-config-powerdns.test" + end + + test "given none url config", with_valid_token do + Application.delete_env(:powerdns, :url) + expected_error = "[PowerDNSx] PowerDNS url not configured." + assert_raise RuntimeError, expected_error, fn -> + PowerDNSx.Config.powerdns_url + end + end + end + + +end diff --git a/test/lib/powerdnsx/managers/zones_manager_test.exs b/test/lib/powerdnsx/managers/zones_manager_test.exs new file mode 100644 index 0000000..cc793d0 --- /dev/null +++ b/test/lib/powerdnsx/managers/zones_manager_test.exs @@ -0,0 +1,80 @@ +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 new file mode 100644 index 0000000..8a61602 --- /dev/null +++ b/test/lib/powerdnsx/models/zone_test.exs @@ -0,0 +1,27 @@ +# 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 |