class Fog::DNS::Google::Mock
Public Class Methods
data(_api_version)
click to toggle source
# File lib/fog/dns/google/mock.rb, line 11 def self.data(_api_version) @data ||= {} end
new(options)
click to toggle source
# File lib/fog/dns/google/mock.rb, line 7 def initialize(options) shared_initialize(options[:google_project], GOOGLE_DNS_API_VERSION, GOOGLE_DNS_BASE_URL) end
reset()
click to toggle source
# File lib/fog/dns/google/mock.rb, line 15 def self.reset @data = nil end
Public Instance Methods
create_change(zone_name_or_id, additions = [], deletions = [])
click to toggle source
# File lib/fog/dns/google/requests/create_change.rb, line 26 def create_change(zone_name_or_id, additions = [], deletions = []) if data[:managed_zones].key?(zone_name_or_id) zone = data[:managed_zones][zone_name_or_id] else zone = data[:managed_zones].values.detect { |z| z["name"] = zone_name_or_id } end unless zone raise Fog::Errors::NotFound, "The 'parameters.managedZone' resource named '#{zone_name_or_id}' does not exist." end deletions.each do |del| rrset = data[:resource_record_sets][zone["id"]].reject! { |r| r["name"] == del["name"] && r["type"] == del["type"] } unless rrset raise Fog::Errors::NotFound, "The 'entity.change.deletions[0]' resource named '#{del['name']} ('#{del['type']})' does not exist." end end additions.each do |add| data[:resource_record_sets][zone["id"]] << add end id = data[:changes][zone["id"]].max_by { |c| c["id"] }["id"] data = { "kind" => 'dns#change', "id" => (id.to_i + 1).to_s, "startTime" => DateTime.now.strftime("%FT%T.%LZ"), "status" => "done", "additions" => additions, "deletions" => deletions } self.data[:changes][zone["id"]] << data build_excon_response(data) end
create_managed_zone(name, dns_name, description)
click to toggle source
# File lib/fog/dns/google/requests/create_managed_zone.rb, line 27 def create_managed_zone(name, dns_name, description) id = Fog::Mock.random_numbers(19).to_s data = { "kind" => 'dns#managedZone', "id" => id, "creationTime" => DateTime.now.strftime("%FT%T.%LZ"), "name" => name, "dnsName" => dns_name, "description" => description, "nameServers" => [ "ns-cloud-e1.googledomains.com.", "ns-cloud-e2.googledomains.com.", "ns-cloud-e3.googledomains.com.", "ns-cloud-e4.googledomains.com." ] } self.data[:managed_zones][id] = data self.data[:resource_record_sets][id] = [ { "kind" => 'dns#resourceRecordSet', "name" => dns_name, "type" => "NS", "ttl" => 21_600, "rrdatas" => [ "ns-cloud-c1.googledomains.com.", "ns-cloud-c2.googledomains.com.", "ns-cloud-c3.googledomains.com.", "ns-cloud-c4.googledomains.com." ] }, { "kind" => 'dns#resourceRecordSet', "name" => dns_name, "type" => "SOA", "ttl" => 21_600, "rrdatas" => [ "ns-cloud-c1.googledomains.com. dns-admin.google.com. 0 21600 3600 1209600 300" ] } ] self.data[:changes][id] = [ { "kind" => 'dns#change', "id" => "0", "startTime" => DateTime.now.strftime("%FT%T.%LZ"), "status" => "done", "additions" => self.data[:resource_record_sets][id] } ] build_excon_response(data) end
data(project = @project)
click to toggle source
# File lib/fog/dns/google/mock.rb, line 19 def data(project = @project) self.class.data(api_version)[project] ||= { :managed_zones => {}, :resource_record_sets => {}, :changes => {} } end
delete_managed_zone(name_or_id)
click to toggle source
# File lib/fog/dns/google/requests/delete_managed_zone.rb, line 21 def delete_managed_zone(name_or_id) if data[:managed_zones].key?(name_or_id) data[:managed_zones].delete(name_or_id) elsif zone = data[:managed_zones].values.detect { |z| z["name"] = name_or_id } data[:managed_zones].delete(zone["id"]) else raise Fog::Errors::NotFound, "The 'parameters.managedZone' resource named '#{name_or_id}' does not exist." end build_excon_response(nil) end
get_change(zone_name_or_id, identity)
click to toggle source
# File lib/fog/dns/google/requests/get_change.rb, line 22 def get_change(zone_name_or_id, identity) if data[:managed_zones].key?(zone_name_or_id) zone = data[:managed_zones][zone_name_or_id] else zone = data[:managed_zones].values.detect { |z| z["name"] = zone_name_or_id } end unless zone raise Fog::Errors::NotFound, "The 'parameters.managedZone' resource named '#{zone_name_or_id}' does not exist." end unless data = self.data[:changes][zone["id"]].detect { |c| c["id"] == identity } raise Fog::Errors::NotFound, "The 'parameters.changeId' resource named '#{identity}' does not exist." end build_excon_response(data) end
get_managed_zone(name_or_id)
click to toggle source
# File lib/fog/dns/google/requests/get_managed_zone.rb, line 21 def get_managed_zone(name_or_id) if data[:managed_zones].key?(name_or_id) data = self.data[:managed_zones][name_or_id] else data = self.data[:managed_zones].values.detect { |zone| zone["name"] = name_or_id } end unless data raise Fog::Errors::NotFound, "The 'parameters.managedZone' resource named '#{name_or_id}' does not exist." end build_excon_response(data) end
get_project(identity)
click to toggle source
# File lib/fog/dns/google/requests/get_project.rb, line 21 def get_project(identity) body = { "kind" => 'dns#project', "number" => Fog::Mock.random_numbers(12).to_s, "id" => identity, "quota" => { "kind" => 'dns#quota', "managedZones" => 100, "rrsetsPerManagedZone" => 10_000, "rrsetAdditionsPerChange" => 100, "rrsetDeletionsPerChange" => 100, "totalRrdataSizePerChange" => 10_000, "resourceRecordsPerRrset" => 20 } } build_excon_response(body) end
list_changes(zone_name_or_id)
click to toggle source
# File lib/fog/dns/google/requests/list_changes.rb, line 21 def list_changes(zone_name_or_id) if data[:managed_zones].key?(zone_name_or_id) zone = data[:managed_zones][zone_name_or_id] else zone = data[:managed_zones].values.detect { |z| z["name"] == zone_name_or_id } end unless zone raise Fog::Errors::NotFound, "The 'parameters.managedZone' resource named '#{zone_name_or_id}' does not exist." end body = { "kind" => 'dns#changesListResponse', "changes" => data[:changes][zone["id"]] } build_excon_response(body) end
list_managed_zones()
click to toggle source
# File lib/fog/dns/google/requests/list_managed_zones.rb, line 20 def list_managed_zones body = { "kind" => 'dns#managedZonesListResponse', "managedZones" => data[:managed_zones].values } build_excon_response(body) end
list_resource_record_sets(zone_name_or_id, options = {})
click to toggle source
# File lib/fog/dns/google/requests/list_resource_record_sets.rb, line 25 def list_resource_record_sets(zone_name_or_id, options = {}) if data[:managed_zones].key?(zone_name_or_id) zone = data[:managed_zones][zone_name_or_id] else zone = data[:managed_zones].values.detect { |z| z["name"] = zone_name_or_id } end unless zone raise Fog::Errors::NotFound, "The 'parameters.managedZone' resource named '#{zone_name_or_id}' does not exist." end rrsets = data[:resource_record_sets][zone["id"]] if options.key?(:name) && options.key?(:type) rrsets.delete_if { |rrset| rrset["name"] != options[:name] || rrset["type"] != options[:type] } end body = { "kind" => 'dns#resourceRecordSetsListResponse', "rrsets" => rrsets } build_excon_response(body) end
reset_data()
click to toggle source
# File lib/fog/dns/google/mock.rb, line 27 def reset_data self.class.data(api_version).delete(@project) end