Class: Fog::DNS::Google::Mock

Inherits:
Object
  • Object
show all
Includes:
Google::Shared
Defined in:
lib/fog/google/dns.rb,
lib/fog/google/requests/dns/get_managed_zone.rb,
lib/fog/google/requests/dns/list_managed_zones.rb,
lib/fog/google/requests/dns/create_managed_zone.rb,
lib/fog/google/requests/dns/delete_managed_zone.rb

Instance Attribute Summary

Attributes included from Google::Shared

#api_url, #api_version, #project

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Google::Shared

#build_excon_response, #initialize_google_client, #new_pk12_google_client, #request, #shared_initialize

Constructor Details

#initialize(options) ⇒ Mock

Returns a new instance of Mock.



22
23
24
# File 'lib/fog/google/dns.rb', line 22

def initialize(options)
  shared_initialize(options[:google_project], GOOGLE_DNS_API_VERSION, GOOGLE_DNS_BASE_URL)
end

Class Method Details

.data(api_version) ⇒ Object



26
27
28
# File 'lib/fog/google/dns.rb', line 26

def self.data(api_version)
  @data ||= {}
end

.resetObject



30
31
32
# File 'lib/fog/google/dns.rb', line 30

def self.reset
  @data = nil
end

Instance Method Details

#create_managed_zone(zone_name, dns_name, descr = '') ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/fog/google/requests/dns/create_managed_zone.rb', line 7

def create_managed_zone(zone_name, dns_name, descr='')
  id = Fog::Mock.random_numbers(19).to_s
  object = {
    "kind" => "dns#managedZone",
    "id" => id,
    "creationTime" => DateTime.now.strftime('%FT%T.%LZ'),
    "name" => zone_name,
    "dnsName" => dns_name,
    "description" => descr,
	    "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][:by_name][zone_name] = object
  self.data[:managed_zones][:by_id][id] = object

  build_excon_response(object)
end

#data(project = @project) ⇒ Object



34
35
36
37
38
39
40
41
# File 'lib/fog/google/dns.rb', line 34

def data(project=@project)
  self.class.data(api_version)[project] ||= {
      :managed_zones => {
          :by_id => {},
          :by_name => {},
      },
	  }
end

#delete_managed_zone(zone_name_or_id) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/fog/google/requests/dns/delete_managed_zone.rb', line 6

def delete_managed_zone(zone_name_or_id)
	  if self.data[:managed_zones][:by_name].has_key?(zone_name_or_id)
    zone_name = zone_name_or_id
    zone = self.data[:managed_zones][:by_name][zone_name]
	    zone_id = zone['id']
	  elsif self.data[:managed_zones][:by_id].has_key?(zone_name_or_id)
    zone_id = zone_name_or_id
    zone = self.data[:managed_zones][:by_name][zone_id]
	    zone_name = zone['name']
	  else
	    raise Fog::Errors::NotFound, "The 'parameters.managedZone' resource named '#{zone_name_or_id}' does not exist."
	  end
	  self.data[:managed_zones][:by_name].delete(zone_name)
	  self.data[:managed_zones][:by_id].delete(zone_id)

  build_excon_response(nil)
end

#get_managed_zone(zone_name_or_id) ⇒ Object



6
7
8
9
10
11
12
13
14
# File 'lib/fog/google/requests/dns/get_managed_zone.rb', line 6

def get_managed_zone(zone_name_or_id)
	  if self.data[:managed_zones][:by_name].has_key?(zone_name_or_id)
    build_excon_response(self.data[:managed_zones][:by_name][zone_name_or_id])
	  elsif self.data[:managed_zones][:by_id].has_key?(zone_name_or_id)
    build_excon_response(self.data[:managed_zones][:by_id][zone_name_or_id])
	  else
	    raise Fog::Errors::NotFound, "The 'parameters.managedZone' resource named '#{zone_name_or_id}' does not exist."
	  end
end

#list_managed_zonesObject



5
6
7
8
9
10
11
# File 'lib/fog/google/requests/dns/list_managed_zones.rb', line 5

def list_managed_zones()
  zones = self.data[:managed_zones][:by_id].values
  build_excon_response({
	    "kind" => "dns#managedZonesListResponse",
	    "managedZones" => zones,
  })
end

#reset_dataObject



43
44
45
# File 'lib/fog/google/dns.rb', line 43

def reset_data
  self.class.data(api_version).delete(@project)
end