1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/tests/rackspace/requests/dns/helper.rb

140 lines
3.1 KiB
Ruby

SUBDOMAIN_FORMAT = {
'name' => String,
'id' => Integer,
'created' => String,
'updated' => String
}
LIST_SUBDOMAINS_FORMAT = {
'domains' => [SUBDOMAIN_FORMAT],
'totalEntries' => Integer
}
LIST_DOMAIN_FORMAT = {
'domains' => [
{
'name' => String,
'id' => Integer,
'accountId' => Integer,
'updated' => String,
'created' => String
}
],
'totalEntries' => Integer,
'links' => [
{
'rel' => String,
'href' => String
}
]
}
RECORD_FORMAT = {
'name' => String,
'id' => String,
'type' => String,
'data' => String,
'updated' => String,
'created' => String,
'ttl' => Integer,
'priority' => Fog::Nullable::Integer
}
RECORD_LIST_FORMAT = {
'records' => [RECORD_FORMAT],
#In some cases this is returned (domain details) and in some cases it isn't (create domain). Marking as nullable.
'totalEntries' => Fog::Nullable::Integer
}
NAME_SERVERS_FORMAT = [{
'name' => String
}]
BASIC_DOMAIN_DETAIL_FORMAT = {
'name' => String,
'id' => Integer,
'accountId' => Integer,
'updated' => String,
'created' =>String,
'ttl' => Integer,
'emailAddress' => String,
'nameservers' => NAME_SERVERS_FORMAT
}
LIST_DOMAIN_DETAILS_WITH_RECORDS = BASIC_DOMAIN_DETAIL_FORMAT.merge({
'recordsList' => RECORD_LIST_FORMAT
})
LIST_DOMAIN_DETAILS_WITH_RECORDS_AND_SUBDOMAINS_FORMAT = BASIC_DOMAIN_DETAIL_FORMAT.merge({
'recordsList' => RECORD_LIST_FORMAT,
'subdomains' => {
'domains' => [{
'created' => String,
'name' => String,
'id' => Integer,
'updated' => String
}],
'totalEntries' => Integer
}
})
LIST_DOMAIN_DETAILS_WITHOUT_RECORDS_AND_SUBDOMAINS_FORMAT = BASIC_DOMAIN_DETAIL_FORMAT
CREATE_DOMAINS_FORMAT = {
'domains' => [
BASIC_DOMAIN_DETAIL_FORMAT.merge({
'recordsList' => RECORD_LIST_FORMAT
})
]
}
def wait_for(service, response)
job_id = response.body['jobId']
Fog.wait_for do
response = service.callback(job_id)
response.body['status'] != 'RUNNING'
end
response
end
def domain_tests(service, domain_attributes)
tests("create_domains([#{domain_attributes}])").formats(CREATE_DOMAINS_FORMAT) do
response = wait_for service, service.create_domains([domain_attributes])
@domain_details = response.body['response']['domains']
@domain_id = @domain_details[0]['id']
response.body['response']
end
begin
if block_given?
yield
end
ensure
tests("remove_domain('#{@domain_id}')").succeeds do
wait_for service, service.remove_domain(@domain_id)
end
end
end
def domains_tests(service, domains_attributes, custom_delete = false)
tests("create_domains(#{domains_attributes})").formats(CREATE_DOMAINS_FORMAT) do
response = wait_for service, service.create_domains(domains_attributes)
@domain_details = response.body['response']['domains']
@domain_ids = @domain_details.collect { |domain| domain['id'] }
response.body['response']
end
begin
if block_given?
yield
end
ensure
if !custom_delete
tests("remove_domains(#{@domain_ids})").succeeds do
wait_for service, service.remove_domains(@domain_ids)
end
end
end
end