File: dns_v2_spec.rb

package info (click to toggle)
ruby-fog-openstack 1.1.5-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 11,784 kB
  • sloc: ruby: 47,937; makefile: 5; sh: 4
file content (97 lines) | stat: -rw-r--r-- 3,133 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
require 'spec_helper'
require_relative './shared_context'

describe Fog::OpenStack::DNS::V2 do
  spec_data_folder = 'spec/fixtures/openstack/dns_v2'

  before :all do
    openstack_vcr = OpenStackVCR.new(
      :vcr_directory  => spec_data_folder,
      :project_scoped => true,
      :service_class  => Fog::OpenStack::DNS # Fog to choose latest available version
    )
    @service = openstack_vcr.service
  end

  it "CRUD & list zones" do
    VCR.use_cassette('zone_crud') do
      zone = 'example.org'
      zone_name = "#{zone}."
      zone_description = 'fog testing'

      begin
        # create zone
        example_zone = @service.zones.create(:name => zone_name, :email => "hostmaster@#{zone}")
        example_zone.status.must_equal 'PENDING'
        example_zone.action.must_equal 'CREATE'
        example_id = example_zone.id

        # add a description
        example_zone.update(:description => zone_description)
        example_zone.reload.description.must_equal zone_description

        # get by ID
        example_zone_by_id = @service.zones.find_by_id example_id
        example_zone_by_id.wont_equal nil
        example_zone_by_id.description.must_equal zone_description

        # get by filtering list by name
        zones = @service.zones.all(:name => zone_name)
        zones.length.must_equal 1
        zones.first.id.must_equal example_id
      ensure
        # delete the zone(s)
        @service.zones.all(:name => zone_name).each(&:destroy)

        # check delete action
        @service.zones.all(:name => zone_name).each do |z|
          z.action.must_equal 'DELETE'
        end
      end
    end
  end

  it "CRUD & list recordsets" do
    VCR.use_cassette('recordset_crud') do
      zone = 'example2.org'
      zone_name = "#{zone}."
      recordset_name = "host.#{zone_name}"
      records = ['10.0.0.1']
      records_updated = ['10.0.0.2']

      begin
        # create zone
        example_zone = @service.zones.create(:name => zone_name, :email => "hostmaster@#{zone}")
        example_id = example_zone.id

        # create recordset
        host_record = @service.recordsets.create(
          :zone_id => example_id,
          :name    => recordset_name,
          :type    => 'A',
          :records => records
        )
        host_id = host_record.id

        # change record
        host_record.update(:records => records_updated)
        host_record.reload.records.must_equal records_updated

        # get by ID
        host_record_by_id = @service.recordsets.find_by_id(example_id, host_id)
        host_record_by_id.wont_equal nil
        host_record_by_id.records.must_equal records_updated

        # get by filtering list by name
        recordsets = @service.recordsets.all(:zone_id => example_id, :name => recordset_name)
        recordsets.length.must_equal 1
        recordsets.first.id.must_equal host_id
      ensure
        # delete the recordset(s)
        @service.recordsets.all(:zone_id => example_id, :name => recordset_name).each(&:destroy)
        # delete the zone(s)
        @service.zones.all(:name => zone_name).each(&:destroy)
      end
    end
  end
end