]>
git.ipfire.org Git - thirdparty/pdns.git/blob - modules/remotebackend/unittest.rb
2 require 'bundler/setup'
5 # define a simple $domain
12 "SOA" => ["ns.unit.test. hostmaster.unit.test. 1 2 3 4 5"],
13 "NS" => ["ns1.unit.test.", "ns2.unit.test."],
21 "empty.unit.test." => {}
28 $tsigkeys = { "test." => {:name => "test.", :algorithm => "NULL.", :content => "NULL"} }
30 $masters = { :name => "ns1.unit.test.", :ip => "10.0.0.1" }
36 def rr(qname
, qtype
, content
, ttl
, auth
= 1, domain_id
= -1)
37 {:qname => qname
, :qtype => qtype
, :content => content
, :ttl => ttl
.to_i
, :auth => auth
.to_i
, :domain_id => domain_id
.to_i
}
40 def do_initialize(*args
)
41 return true, "Test bench initialized"
46 if $domain.has_key
?(args
["qname"])
47 if $domain[args
["qname"]].has_key
?(args
["qtype"])
48 $domain[args
["qname"]][args
["qtype"]].each
do |rd
|
49 ret
<< rr(args
["qname"], args
["qtype"], rd
, $ttl)
51 elsif args
["qtype"] == 'ANY'
52 $domain[args
["qname"]].each
do |qt
,qr
|
54 ret
<< rr(args
["qname"], qt
, rd
, $ttl)
59 [false] unless ret
.size
>0 and args
["qname"] != "empty.unit.test"
65 if args
["zonename"] == "unit.test."
66 $domain.each
do |qname
,rdata
|
67 rdata
.each
do |rtype
,rc
|
69 ret
<< rr(qname
,rtype
,rd
,$ttl)
74 [false] unless ret
.size
>0
78 def do_getalldomainmetadata(args
)
79 return [ $meta[args
["name"]] ] if $meta.has_key
?(args
["name"])
83 def do_getdomainmetadata(args
)
84 return [ $meta[args
["name"]][args
["kind"]] ] if $meta.has_key
?(args
["name"]) and $meta[args
["name"]].has_key
?(args
["kind"])
88 def do_setdomainmetadata(args
)
89 $meta[args
["name"].to_s
] = {} unless $meta.has_key
? args
["name"]
90 $meta[args
["name"].to_s
][args
["kind"].to_s
] = args
["value"].to_a
94 def do_adddomainkey(args
)
95 $keys[args
["name"]] = [] unless $keys.has_key
? args
["name"]
96 id
=$keys[args
["name"]].size
+ 1
97 args
["key"]["id"] = id
98 $keys[args
["name"]] << args
["key"]
102 def do_getdomainkeys(args
)
103 if $keys.has_key
? args
["name"]
104 return [ $keys[args
["name"]] ]
109 def do_activatedomainkey(args
)
110 args
["id"] = args
["id"].to_i
111 if $keys.has_key
? args
["name"]
112 if $keys[args
["name"]][args
["id"]-1]
113 $keys[args
["name"]][args
["id"]-1]["active"] = true
120 def do_deactivatedomainkey(args
)
121 args
["id"] = args
["id"].to_i
122 if $keys.has_key
? args
["name"]
123 if $keys[args
["name"]][args
["id"]-1]
124 $keys[args
["name"]][args
["id"]-1]["active"] = false
131 def do_publishdomainkey(args
)
132 args
["id"] = args
["id"].to_i
133 if $keys.has_key
? args
["name"]
134 if $keys[args
["name"]][args
["id"]-1]
135 $keys[args
["name"]][args
["id"]-1]["published"] = true
142 def do_unpublishdomainkey(args
)
143 args
["id"] = args
["id"].to_i
144 if $keys.has_key
? args
["name"]
145 if $keys[args
["name"]][args
["id"]-1]
146 $keys[args
["name"]][args
["id"]-1]["published"] = false
153 def do_removedomainkey(args
)
154 args
["id"] = args
["id"].to_i
155 if $keys.has_key
? args
["name"]
156 if $keys[args
["name"]][args
["id"]-1]
157 $keys[args
["name"]].delete_at args
["id"]-1
164 def do_getbeforeandafternamesabsolute(args
)
165 return [ { :unhashed => "middle.", :before => "begin.", :after => "stop." } ] if args
["qname"] == 'middle.unit.test.'
169 def do_gettsigkey(args
)
170 if $tsigkeys.has_key
? args
["name"]
171 return [{:algorithm => $tsigkeys[args
["name"]][:algorithm], :content => $tsigkeys[args
["name"]][:content] }]
176 def do_setnotified(args
)
177 if args
["id"].to_i
== 1
178 $notified_serial = args
["serial"].to_i
184 def do_getdomaininfo(args
)
185 if args
["name"] == "unit.test."
188 :zone => "unit.test.",
189 :masters => ["10.0.0.1"],
190 :notified_serial => $notified_serial,
191 :serial => $notified_serial,
192 :last_check => Time
.now
.to_i
,
196 if args
["name"] == "master.test."
199 :zone => "master.test.",
200 :masters => ["10.0.0.1"],
201 :notified_serial => $notified_serial,
202 :serial => $notified_serial,
203 :last_check => Time
.now
.to_i
,
210 def do_ismaster(args
)
211 $masters[:name] == args
["name"] && $masters[:ip] == args
["ip"]
214 def do_supermasterbackend(args
)
215 $domain[args
["domain"]] = {
216 "NS" => args
["nsset"]
221 def do_createslavedomain(args
)
222 $domain[args
["domain"]] = {
227 def do_feedrecord(args
)
232 $domain[name
] = {} unless $domain.has_key
? name
233 $domain[name
][qtype
] = [] unless $domain[name
].has_key
? qtype
234 $domain[name
][qtype
] << rr
["content"]
238 def do_replacerrset(args
)
239 $domain[args
["qname"]].delete args
["qtype"] if $domain.has_key
?(args
["qname"]) and $domain[args
["qname"]].has_key
?(args
["qtype"])
240 args
["rrset"] = args
["rrset"].values
if args
["rrset"].is_a
?(Hash
)
241 args
["rrset"].each
do |rr
|
242 self.do_feedrecord({"trxid" => args
["trxid"], "rr" => rr
})
247 def do_feedents(args
)
251 def do_feedents3(args
)
255 def do_settsigkey(args
)
256 $tsigkeys[args
["name"]] = { :name => args
["name"], :algorithm => args
["algorithm"], :content => args
["content"] }
260 def do_deletetsigkey(args
)
261 $tsigkeys.delete args
["name"] if $tsigkeys.has_key
? args
["name"]
265 def do_gettsigkeys(*args
)
266 return [$tsigkeys.values
]
269 def do_starttransaction(args
)
273 def do_committransaction(args
)
277 def do_aborttransaction(args
)
281 def do_directbackendcmd(args
)
285 def do_getalldomains(args
)
286 [do_getdomaininfo({'name'=>'unit.test.'})]
289 def do_getupdatedmasters()
290 [do_getdomaininfo({'name'=>'master.test.'})]