moniker_activeresource 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,14 @@
1
+ test_configuration:
2
+ public_base_site: "https://my.api.com:5000/v2.0/"
3
+ public_admin_site: "https://my.api.com:35357/v2.0/"
4
+ user_username: "user_username"
5
+ user_password: "user_password"
6
+ user_tenant_id: "user_tenant_id"
7
+ admin_username: "admin_username"
8
+ admin_password: "admin_password"
9
+ admin_tenant_id: "admin_tenant_id"
10
+ domain_id: "xxxxxxxxx-xxx-xxxx-xxxx-xxxxxxxxxxxxx"
11
+ server_id: "xxxxxxxxx-xxx-xxxx-xxxx-xxxxxxxxxxxxx"
12
+
13
+ # If user_* are omitted keystone authentication will ve skipped
14
+ # If admin_* are omitted the corresponding tests will be skipped
@@ -0,0 +1,108 @@
1
+ test_path = File.expand_path('..', __FILE__)
2
+ $:.unshift(test_path)
3
+
4
+ require 'helper'
5
+
6
+ class TestMonikerDomains < Test::Unit::TestCase
7
+ include MonikerTestUtils
8
+
9
+ def _domain_create(name)
10
+
11
+ assert_nothing_raised ActiveResource::ClientError, "Failed to create a domain for tenant #{Moniker::Base.sudo_tenant}" do
12
+ new_domain = Moniker::Domain.create :name => name, :email => "fake@pretend.net"
13
+ assert_not_nil new_domain.id, "Failed to create a domain:\n#{active_resource_errors_to_s(new_domain)}"
14
+ end
15
+ end
16
+
17
+ def test_10_domain_create
18
+ if keystone_admin_test_possible?
19
+ auth_admin
20
+
21
+ _domain_create("test.test-domain.test.")
22
+ end
23
+ end
24
+
25
+ def _domain_list
26
+ assert_nothing_raised ActiveResource::ClientError, "Failed to list domains for tenant #{Moniker::Base.sudo_tenant}" do
27
+ domains = Moniker::Domain.all
28
+ assert_not_nil domains
29
+ assert_block("No domains?") do
30
+ !domains.empty?
31
+ end
32
+ end
33
+ end
34
+
35
+ def test_20_domain_list
36
+ if keystone_user_test_possible?
37
+ auth_user
38
+
39
+ _domain_list
40
+ end
41
+
42
+ if keystone_admin_test_possible?
43
+ auth_admin
44
+
45
+ _domain_list
46
+ end
47
+ end
48
+
49
+ def _domain_get(name)
50
+ assert_nothing_raised ActiveResource::ClientError, "Failed to get domain '#{name}'" do
51
+ domain = Moniker::Domain.find_by_name name
52
+ assert_not_nil domain, "Failed to get domain '#{name}'"
53
+ end
54
+
55
+ # Must use a syntactically correct UUID or Moniker will complain about a 'badly formed hexadecimal UUID string'...
56
+ assert_raises ActiveResource::ResourceNotFound, "Domain retrieval broken?!?" do
57
+ Moniker::Domain.find "ffffffff-ffff-ffff-ffff-ffffffffffff"
58
+ end
59
+
60
+ end
61
+
62
+ def test_30_domain_get
63
+ if keystone_user_test_possible?
64
+ auth_user
65
+
66
+ _domain_get("test.test-domain.test.")
67
+ end
68
+
69
+ if keystone_admin_test_possible?
70
+ auth_admin
71
+
72
+ _domain_get("test.test-domain.test.")
73
+ end
74
+ end
75
+
76
+ def _domain_update(name)
77
+ domain = Moniker::Domain.find_by_name name
78
+ assert_nothing_raised ActiveResource::ClientError, "Failed to update domain '#{domain.id}'" do
79
+ domain.update_attributes :ttl => 225
80
+ assert_true domain.save, "Failed to update domain '#{domain.id}': #{active_resource_errors_to_s(domain)}"
81
+ end
82
+ end
83
+
84
+ def test_40_domain_update
85
+ if keystone_admin_test_possible?
86
+ auth_admin
87
+
88
+ _domain_update("test.test-domain.test.")
89
+ end
90
+ end
91
+
92
+ def _domain_destroy(name)
93
+ domain = Moniker::Domain.find_by_name name
94
+
95
+ assert_nothing_raised ActiveResource::ClientError, "Failed to destroy domain '#{domain.id}'" do
96
+ domain.destroy
97
+ end
98
+ end
99
+
100
+ def test_50_domain_destroy
101
+ if keystone_admin_test_possible?
102
+ auth_admin
103
+
104
+ _domain_destroy("test.test-domain.test.")
105
+ end
106
+ end
107
+
108
+ end
@@ -0,0 +1,137 @@
1
+ test_path = File.expand_path('..', __FILE__)
2
+ $:.unshift(test_path)
3
+
4
+ require 'helper'
5
+
6
+ class TestMonikerRecords < Test::Unit::TestCase
7
+ include MonikerTestUtils
8
+
9
+ def _record_create(name)
10
+ domain = Moniker::Domain.find TEST_CONFIG[:domain_id]
11
+ record_name = "#{name}.#{domain.name}"
12
+ assert_nothing_raised ActiveResource::ClientError, "Failed to create a record for domain '#{TEST_CONFIG[:record_id]}' for tenant #{Moniker::Base.sudo_tenant}" do
13
+ new_record = Moniker::Record.create :name => record_name,
14
+ :type => "A",
15
+ :data => "1.1.1.1",
16
+ :domain_id => TEST_CONFIG[:domain_id]
17
+ assert_not_nil new_record.id, "Failed to create a record:\n#{active_resource_errors_to_s(new_record)}"
18
+ end
19
+ end
20
+
21
+ def test_10_record_create
22
+ if keystone_user_test_possible?
23
+ auth_user
24
+
25
+ _record_create("test")
26
+ end
27
+
28
+ if keystone_admin_test_possible?
29
+ auth_admin
30
+
31
+ _record_create("admin-test")
32
+ end
33
+
34
+ end
35
+
36
+ def _record_list
37
+ assert_nothing_raised ActiveResource::ClientError, "Failed to list records for domain '#{TEST_CONFIG[:record_id]}'" do
38
+ records = Moniker::Record.all :params => {:domain_id => TEST_CONFIG[:domain_id]}
39
+ assert_not_nil records
40
+ assert_block("No records?") do
41
+ !records.empty?
42
+ end
43
+ end
44
+ end
45
+
46
+ def test_20_record_list
47
+ if keystone_user_test_possible?
48
+ auth_user
49
+
50
+ _record_list
51
+ end
52
+
53
+ if keystone_admin_test_possible?
54
+ auth_admin
55
+
56
+ _record_list
57
+ end
58
+ end
59
+
60
+ def _record_get(name)
61
+ domain = Moniker::Domain.find TEST_CONFIG[:domain_id]
62
+ record_name = "#{name}.#{domain.name}"
63
+ assert_nothing_raised ActiveResource::ClientError, "Failed to get record '#{record_name}'" do
64
+ record = Moniker::Record.find_by_name record_name, :params => {:domain_id => domain.id}
65
+ assert_not_nil record, "Failed to get record '#{record_name}'"
66
+ end
67
+
68
+ # Must use a syntactically correct UUID or Moniker will complain about a 'badly formed hexadecimal UUID string'...
69
+ assert_raises ActiveResource::ResourceNotFound, "Record retrieval broken?!?" do
70
+ Moniker::Record.find "ffffffff-ffff-ffff-ffff-ffffffffffff", :params => {:domain_id => domain.id}
71
+ end
72
+
73
+ end
74
+
75
+ def test_30_record_get
76
+ if keystone_user_test_possible?
77
+ auth_user
78
+
79
+ _record_get("test")
80
+ end
81
+
82
+ if keystone_admin_test_possible?
83
+ auth_admin
84
+
85
+ _record_get("admin-test")
86
+ end
87
+ end
88
+
89
+ def _record_update(name)
90
+ domain = Moniker::Domain.find TEST_CONFIG[:domain_id]
91
+ record_name = "#{name}.#{domain.name}"
92
+ record = Moniker::Record.find_by_name record_name, :params => {:domain_id => domain.id}
93
+ assert_nothing_raised ActiveResource::ClientError, "Failed to update record '#{record.id}'" do
94
+ record.update_attributes :ttl => 225
95
+ assert_true record.save, "Failed to update record '#{record.id}': #{active_resource_errors_to_s(record)}"
96
+ end
97
+ end
98
+
99
+ def test_40_record_update
100
+ if keystone_user_test_possible?
101
+ auth_user
102
+
103
+ _record_update("test")
104
+ end
105
+
106
+ if keystone_admin_test_possible?
107
+ auth_admin
108
+
109
+ _record_update("admin-test")
110
+ end
111
+ end
112
+
113
+ def _record_destroy(name)
114
+ domain = Moniker::Domain.find TEST_CONFIG[:domain_id]
115
+ record_name = "#{name}.#{domain.name}"
116
+ record = Moniker::Record.find_by_name record_name, :params => {:domain_id => domain.id}
117
+
118
+ assert_nothing_raised ActiveResource::ClientError, "Failed to destroy record '#{record.id}'" do
119
+ record.destroy
120
+ end
121
+ end
122
+
123
+ def test_50_record_destroy
124
+ if keystone_user_test_possible?
125
+ auth_user
126
+
127
+ _record_destroy("test")
128
+ end
129
+
130
+ if keystone_admin_test_possible?
131
+ auth_admin
132
+
133
+ _record_destroy("admin-test")
134
+ end
135
+ end
136
+
137
+ end
@@ -0,0 +1,100 @@
1
+ test_path = File.expand_path('..', __FILE__)
2
+ $:.unshift(test_path)
3
+
4
+ require 'helper'
5
+
6
+ class TestMonikerServers < Test::Unit::TestCase
7
+ include MonikerTestUtils
8
+
9
+ def _server_create(name)
10
+
11
+ assert_nothing_raised ActiveResource::ClientError, "Failed to create a server for tenant #{Moniker::Base.sudo_tenant}" do
12
+ new_server = Moniker::Server.create :name => name
13
+ assert_not_nil new_server.id, "Failed to create a server:\n#{active_resource_errors_to_s(new_server)}"
14
+ end
15
+ end
16
+
17
+ def test_10_server_create
18
+ if keystone_admin_test_possible?
19
+ auth_admin
20
+
21
+ _server_create("test.test-server.test.")
22
+ end
23
+ end
24
+
25
+ def _server_list
26
+ assert_nothing_raised ActiveResource::ClientError, "Failed to list servers for tenant #{Moniker::Base.sudo_tenant}" do
27
+ servers = Moniker::Server.all
28
+ assert_not_nil servers
29
+ assert_block("No servers?") do
30
+ !servers.empty?
31
+ end
32
+ end
33
+ end
34
+
35
+ def test_20_server_list
36
+ if keystone_admin_test_possible?
37
+ auth_admin
38
+
39
+ _server_list
40
+ end
41
+ end
42
+
43
+ def _server_get(name)
44
+ assert_nothing_raised ActiveResource::ClientError, "Failed to get server '#{name}'" do
45
+ server = Moniker::Server.find_by_name name
46
+ assert_not_nil server, "Failed to get server '#{name}'"
47
+ end
48
+
49
+ # Must use a syntactically correct UUID or Moniker will complain about a 'badly formed hexadecimal UUID string'...
50
+ assert_raises ActiveResource::ResourceNotFound, "Server retrieval broken?!?" do
51
+ Moniker::Server.find "ffffffff-ffff-ffff-ffff-ffffffffffff"
52
+ end
53
+
54
+ end
55
+
56
+ def test_30_server_get
57
+ if keystone_admin_test_possible?
58
+ auth_admin
59
+
60
+ _server_get("test.test-server.test.")
61
+ end
62
+ end
63
+
64
+ def _server_update(name)
65
+ server = Moniker::Server.find_by_name name
66
+ assert_nothing_raised ActiveResource::ClientError, "Failed to update server '#{server.id}'" do
67
+ server.update_attributes :name => "upd-" + name
68
+ assert_true server.save, "Failed to update server '#{server.id}': #{active_resource_errors_to_s(server)}"
69
+ end
70
+ assert_nothing_raised ActiveResource::ClientError, "Failed to update server '#{server.id}'" do
71
+ server.update_attributes :name => name
72
+ assert_true server.save, "Failed to update server '#{server.id}': #{active_resource_errors_to_s(server)}"
73
+ end
74
+ end
75
+
76
+ def test_40_server_update
77
+ if keystone_admin_test_possible?
78
+ auth_admin
79
+
80
+ _server_update("test.test-server.test.")
81
+ end
82
+ end
83
+
84
+ def _server_destroy(name)
85
+ server = Moniker::Server.find_by_name name
86
+
87
+ assert_nothing_raised ActiveResource::ClientError, "Failed to destroy server '#{server.id}'" do
88
+ server.destroy
89
+ end
90
+ end
91
+
92
+ def test_50_server_destroy
93
+ if keystone_admin_test_possible?
94
+ auth_admin
95
+
96
+ _server_destroy("test.test-server.test.")
97
+ end
98
+ end
99
+
100
+ end
data/test/utils.rb ADDED
@@ -0,0 +1,55 @@
1
+ module MonikerTestUtils
2
+
3
+ private
4
+
5
+ def auth_admin
6
+ OpenStack::Keystone::Public::Base.site = TEST_CONFIG[:public_base_site]
7
+ OpenStack::Keystone::Admin::Base.site = TEST_CONFIG[:public_admin_site]
8
+
9
+ auth = OpenStack::Keystone::Public::Auth.new :username => TEST_CONFIG[:admin_username],
10
+ :password => TEST_CONFIG[:admin_password],
11
+ :tenant_id => TEST_CONFIG[:admin_tenant_id]
12
+
13
+ if auth.save
14
+ Moniker::Base.token = auth.token
15
+ Moniker::Base.site = auth.endpoint_for('dns').publicURL
16
+ Moniker::Base.sudo_tenant = TEST_CONFIG[:user_tenant_id]
17
+ else
18
+ raise "Cannot authenticate as admin!"
19
+ end
20
+ end
21
+
22
+ def auth_user
23
+ OpenStack::Keystone::Public::Base.site = TEST_CONFIG[:public_base_site]
24
+
25
+ auth = OpenStack::Keystone::Public::Auth.new :username => TEST_CONFIG[:user_username],
26
+ :password => TEST_CONFIG[:user_password],
27
+ :tenant_id => TEST_CONFIG[:user_tenant_id]
28
+
29
+ if auth.save
30
+ Moniker::Base.token = auth.token
31
+ Moniker::Base.site = auth.endpoint_for('dns').publicURL
32
+ else
33
+ raise "Cannot authenticate!"
34
+ end
35
+
36
+ end
37
+
38
+ def keystone_admin_test_possible?
39
+ TEST_CONFIG[:admin_username] and TEST_CONFIG[:admin_password] and TEST_CONFIG[:admin_tenant_id]
40
+ end
41
+
42
+ def keystone_user_test_possible?
43
+ TEST_CONFIG[:user_username] and TEST_CONFIG[:user_password] and TEST_CONFIG[:user_tenant_id]
44
+ end
45
+
46
+ def active_resource_errors_to_s(active_resource)
47
+ message = ""
48
+ active_resource.errors.messages.each_pair { |k, v|
49
+ message += "#{k}: " + v.join(",") + ". \n"
50
+ }
51
+
52
+ message
53
+ end
54
+
55
+ end
metadata ADDED
@@ -0,0 +1,234 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: moniker_activeresource
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Davide Guerri
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-03-06 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activemodel
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 3.2.12
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 3.2.12
30
+ - !ruby/object:Gem::Dependency
31
+ name: activeresource
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 3.2.12
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 3.2.12
46
+ - !ruby/object:Gem::Dependency
47
+ name: oj
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 1.2.9
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.2.9
62
+ - !ruby/object:Gem::Dependency
63
+ name: json
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 1.7.7
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 1.7.7
78
+ - !ruby/object:Gem::Dependency
79
+ name: openstack_activeresource
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 0.5.0
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 0.5.0
94
+ - !ruby/object:Gem::Dependency
95
+ name: shoulda
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rdoc
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: '3.12'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: '3.12'
126
+ - !ruby/object:Gem::Dependency
127
+ name: jeweler
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ~>
132
+ - !ruby/object:Gem::Version
133
+ version: 1.8.4
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ~>
140
+ - !ruby/object:Gem::Version
141
+ version: 1.8.4
142
+ - !ruby/object:Gem::Dependency
143
+ name: simplecov
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: test-unit
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ description: Moniker Ruby and RoR bindings implemented with ActiveResource - See also
175
+ http://www.unicloud.it
176
+ email: d.guerri@rd.unidata.it
177
+ executables: []
178
+ extensions: []
179
+ extra_rdoc_files:
180
+ - LICENSE.txt
181
+ - README.rdoc
182
+ files:
183
+ - .document
184
+ - Gemfile
185
+ - Gemfile.lock
186
+ - LICENSE.txt
187
+ - README.rdoc
188
+ - Rakefile
189
+ - VERSION
190
+ - lib/hot_fixes.rb
191
+ - lib/moniker.rb
192
+ - lib/moniker/base.rb
193
+ - lib/moniker/common.rb
194
+ - lib/moniker/domain.rb
195
+ - lib/moniker/record.rb
196
+ - lib/moniker/server.rb
197
+ - lib/moniker_activeresource.rb
198
+ - moniker_activeresource.gemspec
199
+ - test/.gitignore
200
+ - test/helper.rb
201
+ - test/test_configuration-sample.yml
202
+ - test/test_domains.rb
203
+ - test/test_records.rb
204
+ - test/test_servers.rb
205
+ - test/utils.rb
206
+ homepage: https://github.com/Unidata-SpA/moniker_activeresource
207
+ licenses:
208
+ - GPLv3
209
+ post_install_message:
210
+ rdoc_options: []
211
+ require_paths:
212
+ - lib
213
+ required_ruby_version: !ruby/object:Gem::Requirement
214
+ none: false
215
+ requirements:
216
+ - - ! '>='
217
+ - !ruby/object:Gem::Version
218
+ version: '0'
219
+ segments:
220
+ - 0
221
+ hash: 3355454629113900472
222
+ required_rubygems_version: !ruby/object:Gem::Requirement
223
+ none: false
224
+ requirements:
225
+ - - ! '>='
226
+ - !ruby/object:Gem::Version
227
+ version: '0'
228
+ requirements: []
229
+ rubyforge_project:
230
+ rubygems_version: 1.8.24
231
+ signing_key:
232
+ specification_version: 3
233
+ summary: Moniker Ruby and RoR bindings implemented with ActiveResource
234
+ test_files: []