1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
defmodule PowerDNSex.Managers.ZonesManagerTest do
use ExUnit.Case, async: false
use ExVCR.Mock, adapter: ExVCR.Adapter.Hackney
alias PowerDNSex.Managers.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: 2_016_060_601,
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
}
]
},
%RRSet{
name: "my-domain.art.",
ttl: 3600,
type: "NS",
records: [
%Record{content: "ns1.domain.com", disabled: false}
]
}
]
@expected_zone %Zone{
name: "my-domain.art.",
id: "my-domain.art.",
account: "",
serial: 2_016_060_601,
url: "api/v1/servers/localhost/zones/my-domain.art.",
nameservers: ["ns1.domain.com"],
rrsets: @expected_rrset
}
setup do
Config.set_url()
Config.set_token()
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
{:ok, 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"
{:error, error} = ZonesManager.create(@invalid_not_canonical)
assert error.__struct__ == PowerDNSex.Models.Error
assert error.http_status_code == 422
assert error.error == error_msg
end
end
end
describe "ZonesManager.get_zone/1" do
@tag :zones_manager_get_zone
test "type of return given a correct zone name" do
use_cassette "zones_manager/show/success" do
{:ok, zone} = ZonesManager.get_zone(@valid_zone_test.name)
assert zone == @expected_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/success" do
{:ok, zone} = ZonesManager.show(@valid_zone_test.name)
assert zone.__struct__ == PowerDNSex.Models.Zone
assert zone.nameservers == ["ns1.domain.com"]
end
end
@tag :zones_manager_show
test "values in return given a correct zone name" do
use_cassette "zones_manager/show/success" do
{:ok, 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.'"
{:error, error} = ZonesManager.show(@unknown_name)
assert error.__struct__ == PowerDNSex.Models.Error
assert error.error == error_msg
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
assert ZonesManager.delete(@valid_zone_test.name) == {:ok, %{}}
end
end
@tag :zones_manager_delete
test "return error when zone don't exists" do
use_cassette "zones_manager/delete/not_found" do
{:error, error} = ZonesManager.delete(@unknown_name)
assert error.error == "Could not find domain '#{@unknown_name}'"
end
end
end
end
|