class Fog::DNS::Google::Mock

Public Class Methods

data(api_version) click to toggle source
# File lib/fog/google/dns.rb, line 62
def self.data(api_version)
  @data ||= {}
end
new(options) click to toggle source
# File lib/fog/google/dns.rb, line 58
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/google/dns.rb, line 66
def self.reset
  @data = nil
end

Public Instance Methods

create_change(zone_name_or_id, additions = [], deletions = []) click to toggle source
# File lib/fog/google/requests/dns/create_change.rb, line 26
def create_change(zone_name_or_id, additions = [], deletions = [])
  if self.data[:managed_zones].has_key?(zone_name_or_id)
    zone = self.data[:managed_zones][zone_name_or_id]
  else
    zone = self.data[:managed_zones].values.find { |zone| zone['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 = self.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|
    self.data[:resource_record_sets][zone['id']] << add
  end

  id = self.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/google/requests/dns/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' => 21600,
      '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' => 21600,
      '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/google/dns.rb, line 70
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/google/requests/dns/delete_managed_zone.rb, line 21
def delete_managed_zone(name_or_id)
  if self.data[:managed_zones].has_key?(name_or_id)
    self.data[:managed_zones].delete(name_or_id)
  elsif zone = self.data[:managed_zones].values.find { |zone| zone['name'] = name_or_id }
    self.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/google/requests/dns/get_change.rb, line 22
def get_change(zone_name_or_id, identity)
  if self.data[:managed_zones].has_key?(zone_name_or_id)
    zone = self.data[:managed_zones][zone_name_or_id]
  else
    zone = self.data[:managed_zones].values.find { |zone| zone['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']].find { |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/google/requests/dns/get_managed_zone.rb, line 21
def get_managed_zone(name_or_id)
  if self.data[:managed_zones].has_key?(name_or_id)
    data = self.data[:managed_zones][name_or_id]
  else
    data = self.data[:managed_zones].values.find { |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/google/requests/dns/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' => 10000,
      'rrsetAdditionsPerChange' => 100,
      'rrsetDeletionsPerChange'=>100,
      'totalRrdataSizePerChange' => 10000,
      'resourceRecordsPerRrset' => 20,
    }
  }

  build_excon_response(body)
end
list_changes(zone_name_or_id) click to toggle source
# File lib/fog/google/requests/dns/list_changes.rb, line 21
def list_changes(zone_name_or_id)
  if self.data[:managed_zones].has_key?(zone_name_or_id)
    zone = self.data[:managed_zones][zone_name_or_id]
  else
    zone = self.data[:managed_zones].values.find { |zone| zone['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' => self.data[:changes][zone['id']],
  }
  build_excon_response(body)
end
list_managed_zones() click to toggle source
# File lib/fog/google/requests/dns/list_managed_zones.rb, line 20
def list_managed_zones()
  body = {
    'kind' => 'dns#managedZonesListResponse',
    'managedZones' => self.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/google/requests/dns/list_resource_record_sets.rb, line 25
def list_resource_record_sets(zone_name_or_id, options = {})
  if self.data[:managed_zones].has_key?(zone_name_or_id)
    zone = self.data[:managed_zones][zone_name_or_id]
  else
    zone = self.data[:managed_zones].values.find { |zone| zone['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 = self.data[:resource_record_sets][zone['id']]
  if options.has_key?(:name) && options.has_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/google/dns.rb, line 78
def reset_data
  self.class.data(api_version).delete(@project)
end