mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
122 lines
3 KiB
Ruby
122 lines
3 KiB
Ruby
Shindo.tests('Fog::DNS[:dnsimple] | DNS requests', ['dnsimple', 'dns']) do
|
|
|
|
@domain = nil
|
|
@domain_count = 0
|
|
|
|
tests("success") do
|
|
|
|
test("get current domain count") do
|
|
response = Fog::DNS[:dnsimple].list_domains()
|
|
if response.status == 200
|
|
@domain_count = response.body.size
|
|
end
|
|
|
|
response.status == 200
|
|
end
|
|
|
|
test("create domain") do
|
|
domain = generate_unique_domain
|
|
response = Fog::DNS[:dnsimple].create_domain(domain)
|
|
if response.status == 201
|
|
@domain = response.body["domain"]
|
|
end
|
|
|
|
response.status == 201
|
|
end
|
|
|
|
test("get domain by id") do
|
|
response = Fog::DNS[:dnsimple].get_domain(@domain["id"])
|
|
response.status == 200
|
|
end
|
|
|
|
test("create an A resource record") do
|
|
domain = @domain["name"]
|
|
name = "www"
|
|
type = "A"
|
|
content = "1.2.3.4"
|
|
response = Fog::DNS[:dnsimple].create_record(domain, name, type, content)
|
|
|
|
if response.status == 201
|
|
@record = response.body["record"]
|
|
end
|
|
|
|
response.status == 201
|
|
|
|
end
|
|
|
|
test("create a MX record") do
|
|
domain = @domain["name"]
|
|
name = ""
|
|
type = "MX"
|
|
content = "mail.#{domain}"
|
|
options = { "ttl" => 60, "prio" => 10 }
|
|
response = Fog::DNS[:dnsimple].create_record(domain, name, type, content, options)
|
|
|
|
test "MX record creation returns 201" do
|
|
response.status == 201
|
|
end
|
|
|
|
options.each do |key, value|
|
|
test("MX record has option #{key}") { value == response.body["record"][key.to_s] }
|
|
end
|
|
|
|
test "MX record is correct type" do
|
|
response.body["record"]["record_type"] == "MX"
|
|
end
|
|
end
|
|
|
|
test("get a record") do
|
|
domain = @domain["name"]
|
|
record_id = @record["id"]
|
|
|
|
response = Fog::DNS[:dnsimple].get_record(domain, record_id)
|
|
|
|
(response.status == 200) and (@record == response.body["record"])
|
|
end
|
|
|
|
test("update a record") do
|
|
domain = @domain["name"]
|
|
record_id = @record["id"]
|
|
options = { "content" => "2.3.4.5", "ttl" => 600 }
|
|
response = Fog::DNS[:dnsimple].update_record(domain, record_id, options)
|
|
response.status == 200
|
|
end
|
|
|
|
test("list records") do
|
|
response = Fog::DNS[:dnsimple].list_records(@domain["name"])
|
|
|
|
if response.status == 200
|
|
@records = response.body
|
|
end
|
|
|
|
test "list records returns all records for domain" do
|
|
@records.reject { |record| record["record"]["system_record"] }.size == 2
|
|
end
|
|
|
|
response.status == 200
|
|
end
|
|
|
|
test("delete records") do
|
|
domain = @domain["name"]
|
|
|
|
result = true
|
|
@records.each do |record|
|
|
next if record["record"]["system_record"]
|
|
response = Fog::DNS[:dnsimple].delete_record(domain, record["record"]["id"])
|
|
if response.status != 200
|
|
result = false
|
|
break
|
|
end
|
|
end
|
|
|
|
result
|
|
end
|
|
|
|
test("delete domain") do
|
|
response = Fog::DNS[:dnsimple].delete_domain(@domain["name"])
|
|
response.status == 200
|
|
end
|
|
|
|
end
|
|
|
|
end
|