nephophobia 0.0.1

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.
Files changed (54) hide show
  1. data/.autotest +29 -0
  2. data/.gitignore +2 -0
  3. data/.rvmrc +1 -0
  4. data/Gemfile +4 -0
  5. data/Gemfile.lock +35 -0
  6. data/README.md +23 -0
  7. data/Rakefile +11 -0
  8. data/lib/aws.rb +51 -0
  9. data/lib/hashify.rb +29 -0
  10. data/lib/nephophobia.rb +30 -0
  11. data/lib/nephophobia/client.rb +73 -0
  12. data/lib/nephophobia/compute.rb +150 -0
  13. data/lib/nephophobia/image.rb +78 -0
  14. data/lib/nephophobia/project.rb +113 -0
  15. data/lib/nephophobia/role.rb +5 -0
  16. data/lib/nephophobia/user.rb +86 -0
  17. data/lib/nephophobia/version.rb +3 -0
  18. data/nephophobia.gemspec +30 -0
  19. data/test/fixtures/cassettes/compute_all.yml +28 -0
  20. data/test/fixtures/cassettes/compute_all_with_filter.yml +30 -0
  21. data/test/fixtures/cassettes/compute_all_with_string_into_int_error.yml +28 -0
  22. data/test/fixtures/cassettes/compute_create.yml +28 -0
  23. data/test/fixtures/cassettes/compute_create_with_optional_params.yml +28 -0
  24. data/test/fixtures/cassettes/compute_destroy.yml +28 -0
  25. data/test/fixtures/cassettes/compute_find.yml +28 -0
  26. data/test/fixtures/cassettes/compute_reboot.yml +28 -0
  27. data/test/fixtures/cassettes/compute_start.yml +30 -0
  28. data/test/fixtures/cassettes/compute_stop.yml +30 -0
  29. data/test/fixtures/cassettes/image_all.yml +28 -0
  30. data/test/fixtures/cassettes/image_all_with_filter.yml +28 -0
  31. data/test/fixtures/cassettes/image_all_with_string_into_int_error.yml +28 -0
  32. data/test/fixtures/cassettes/image_find.yml +28 -0
  33. data/test/fixtures/cassettes/project_add_member.yml +28 -0
  34. data/test/fixtures/cassettes/project_all.yml +28 -0
  35. data/test/fixtures/cassettes/project_all_with_string_into_int_error.yml +28 -0
  36. data/test/fixtures/cassettes/project_create.yml +28 -0
  37. data/test/fixtures/cassettes/project_destroy.yml +28 -0
  38. data/test/fixtures/cassettes/project_find.yml +28 -0
  39. data/test/fixtures/cassettes/project_members.yml +28 -0
  40. data/test/fixtures/cassettes/project_remove_member.yml +28 -0
  41. data/test/fixtures/cassettes/user_add_role.yml +28 -0
  42. data/test/fixtures/cassettes/user_create.yml +28 -0
  43. data/test/fixtures/cassettes/user_destroy.yml +28 -0
  44. data/test/fixtures/cassettes/user_find.yml +28 -0
  45. data/test/fixtures/cassettes/user_remove_role.yml +28 -0
  46. data/test/lib/aws_test.rb +22 -0
  47. data/test/lib/hashify_test.rb +15 -0
  48. data/test/lib/nephophobia/compute_test.rb +144 -0
  49. data/test/lib/nephophobia/image_test.rb +76 -0
  50. data/test/lib/nephophobia/project_test.rb +104 -0
  51. data/test/lib/nephophobia/user_test.rb +71 -0
  52. data/test/lib/nephophobia_test.rb +17 -0
  53. data/test/test_helper.rb +47 -0
  54. metadata +221 -0
@@ -0,0 +1,104 @@
1
+ require "test_helper"
2
+
3
+ describe Nephophobia::Project do
4
+ before do
5
+ @project = Nephophobia::Project.new ADMIN_CLIENT
6
+ @user = Nephophobia::User.new ADMIN_CLIENT
7
+ @user_name = "foobar_user"
8
+ @project_name = "foobar_project"
9
+ end
10
+
11
+ describe "#add_member" do
12
+ it "adds the given 'user_name' to the specified 'project_name'" do
13
+ VCR.use_cassette "project_add_member" do
14
+ response = @project.add_member @user_name, @project_name
15
+
16
+ response.return.must_equal true
17
+ end
18
+ end
19
+ end
20
+
21
+ describe "#all" do
22
+ it "returns all projects" do
23
+ VCR.use_cassette "project_all" do
24
+ response = @project.all
25
+
26
+ response.size.must_equal 4
27
+ end
28
+ end
29
+
30
+ it "has a 'TypeError: can't convert String into Integer' error" do
31
+ VCR.use_cassette "project_all_with_string_into_int_error" do
32
+ response = @project.all
33
+
34
+ response.size.must_equal 1
35
+ end
36
+ end
37
+ end
38
+
39
+ describe "#create" do
40
+ it "creates the given 'project_name'" do
41
+ VCR.use_cassette "project_create" do
42
+ response = @project.create @project_name, @user_name
43
+
44
+ response.name.must_equal @project_name
45
+ response.manager_id.must_equal @user_name
46
+ end
47
+ end
48
+ end
49
+
50
+ describe "#destroy" do
51
+ it "destroys the given 'project_name'" do
52
+ VCR.use_cassette "project_destroy" do
53
+ response = @project.destroy @project_name
54
+
55
+ response.return.must_equal true
56
+ end
57
+ end
58
+ end
59
+
60
+ describe "#find" do
61
+ before do
62
+ @project_name = "production"
63
+
64
+ VCR.use_cassette "project_find" do
65
+ @response = @project.find @project_name
66
+ end
67
+ end
68
+
69
+
70
+ it "returns the given 'project_name'" do
71
+ @response.name.must_equal @project_name
72
+ end
73
+
74
+ it "contains the project data" do
75
+ project = @response
76
+
77
+ project.name.must_equal "production"
78
+ project.manager_id.must_equal "root"
79
+ project.description.must_equal "production"
80
+ end
81
+ end
82
+
83
+ describe "#members" do
84
+ before { @project_name = "production" }
85
+
86
+ it "returns all project members for the given 'project_name'" do
87
+ VCR.use_cassette "project_members" do
88
+ response = @project.members @project_name
89
+
90
+ response.size.must_equal 11
91
+ end
92
+ end
93
+ end
94
+
95
+ describe "#remove_member" do
96
+ it "removes the given 'user_name' from the specified 'project_name'" do
97
+ VCR.use_cassette "project_remove_member" do
98
+ response = @project.remove_member @user_name, @project_name
99
+
100
+ response.return.must_equal true
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,71 @@
1
+ require "test_helper"
2
+
3
+ describe Nephophobia::User do
4
+ before do
5
+ @user = Nephophobia::User.new ADMIN_CLIENT
6
+ @user_name = "foobar_user"
7
+ @project_name = "foobar_project"
8
+ end
9
+
10
+ describe "#add_role" do
11
+ it "adds the default role to the given 'user_name'" do
12
+ VCR.use_cassette "user_add_role" do
13
+ response = @user.add_role @user_name, @project_name
14
+
15
+ response.return.must_equal true
16
+ end
17
+ end
18
+ end
19
+
20
+ describe "#create" do
21
+ it "creates the given 'user_name'" do
22
+ VCR.use_cassette "user_create" do
23
+ response = @user.create @user_name
24
+
25
+ response.username.must_equal @user_name
26
+ end
27
+ end
28
+ end
29
+
30
+ describe "#destroy" do
31
+ it "destroys the given 'user_name'" do
32
+ VCR.use_cassette "user_destroy" do
33
+ response = @user.destroy @user_name
34
+
35
+ response.return.must_equal true
36
+ end
37
+ end
38
+ end
39
+
40
+ describe "#find" do
41
+ before do
42
+ @user_name = "jdewey"
43
+
44
+ VCR.use_cassette "user_find" do
45
+ @response = @user.find @user_name
46
+ end
47
+ end
48
+
49
+ it "returns the given 'user_name'" do
50
+ @response.username.must_equal @user_name
51
+ end
52
+
53
+ it "contains the user data" do
54
+ user = @response
55
+
56
+ user.username.must_equal "jdewey"
57
+ user.secretkey.must_equal "3ae9d9f0-2723-480a-99eb-776f05950506"
58
+ user.accesskey.must_equal "9c01b833-3047-4f2e-bb2a-5c8dc7c8ae9c"
59
+ end
60
+ end
61
+
62
+ describe "#remove_role" do
63
+ it "removes the default role to the given 'user_name'" do
64
+ VCR.use_cassette "user_remove_role" do
65
+ response = @user.remove_role @user_name, @project_name
66
+
67
+ response.return.must_equal true
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,17 @@
1
+ require "test_helper"
2
+
3
+ describe Nephophobia do
4
+ describe "::coerce" do
5
+ it "wraps a Hash with an Array" do
6
+ hash = { :foo => :bar }
7
+
8
+ Nephophobia.coerce(hash).must_equal [hash]
9
+ end
10
+
11
+ it "doesn't wrap others" do
12
+ array = [:foo, :bar]
13
+
14
+ Nephophobia.coerce(array).must_equal array
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,47 @@
1
+ Bundler.setup :default, :test
2
+
3
+ require "nephophobia"
4
+
5
+ require "fakeweb"
6
+ require "minitest/spec"
7
+ require "nokogiri"
8
+ require "vcr"
9
+
10
+ class MiniTest::Unit::TestCase
11
+ USER_CLIENT = Nephophobia::Client.new(
12
+ :host => "10.1.170.32",
13
+ :access_key => "9c01b833-3047-4f2e-bb2a-5c8dc7c8ae9c",
14
+ :secret_key => "3ae9d9f0-2723-480a-99eb-776f05950506",
15
+ :project => "production"
16
+ )
17
+
18
+ ADMIN_CLIENT = Nephophobia::Client.new(
19
+ :host => "10.1.170.32",
20
+ :access_key => "1d7a687b-0065-44d6-9611-5bf6c6c72424",
21
+ :secret_key => "fd3053fd-25c2-48f8-b893-9f22661ec63c",
22
+ :project => "production",
23
+ :path => "/services/Admin/"
24
+ )
25
+
26
+ def cassette_for cassette
27
+ c = VCR::Cassette.new(cassette).send :recorded_interactions
28
+
29
+ Nokogiri::XML::Document.parse c.first.response.body
30
+ end
31
+ end
32
+
33
+ VCR.config do |c|
34
+ c.stub_with :fakeweb
35
+ c.cassette_library_dir = "test/fixtures/cassettes"
36
+ c.default_cassette_options = { :record => :none }
37
+ end
38
+
39
+ class Time
40
+ class << self
41
+ alias_method :real_now, :now
42
+ def now
43
+ Time.utc 1999, 12, 31, 19, 59, 59
44
+ end
45
+ end
46
+ end
47
+ MiniTest::Unit.autorun
metadata ADDED
@@ -0,0 +1,221 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nephophobia
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - John Dewey
9
+ - Josh Kleinpeter
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+
14
+ date: 2011-03-04 00:00:00 -08:00
15
+ default_executable:
16
+ dependencies:
17
+ - !ruby/object:Gem::Dependency
18
+ name: hugs
19
+ prerelease: false
20
+ requirement: &id001 !ruby/object:Gem::Requirement
21
+ none: false
22
+ requirements:
23
+ - - ~>
24
+ - !ruby/object:Gem::Version
25
+ version: 2.5.0
26
+ type: :runtime
27
+ version_requirements: *id001
28
+ - !ruby/object:Gem::Dependency
29
+ name: autotest-standalone
30
+ prerelease: false
31
+ requirement: &id002 !ruby/object:Gem::Requirement
32
+ none: false
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: "0"
37
+ type: :development
38
+ version_requirements: *id002
39
+ - !ruby/object:Gem::Dependency
40
+ name: fakeweb
41
+ prerelease: false
42
+ requirement: &id003 !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 1.3.0
48
+ type: :development
49
+ version_requirements: *id003
50
+ - !ruby/object:Gem::Dependency
51
+ name: minitest
52
+ prerelease: false
53
+ requirement: &id004 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ~>
57
+ - !ruby/object:Gem::Version
58
+ version: 2.0.2
59
+ type: :development
60
+ version_requirements: *id004
61
+ - !ruby/object:Gem::Dependency
62
+ name: nokogiri
63
+ prerelease: false
64
+ requirement: &id005 !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 1.4.4
70
+ type: :development
71
+ version_requirements: *id005
72
+ - !ruby/object:Gem::Dependency
73
+ name: rake
74
+ prerelease: false
75
+ requirement: &id006 !ruby/object:Gem::Requirement
76
+ none: false
77
+ requirements:
78
+ - - ~>
79
+ - !ruby/object:Gem::Version
80
+ version: 0.8.7
81
+ type: :development
82
+ version_requirements: *id006
83
+ - !ruby/object:Gem::Dependency
84
+ name: vcr
85
+ prerelease: false
86
+ requirement: &id007 !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - "="
90
+ - !ruby/object:Gem::Version
91
+ version: 1.5.0
92
+ type: :development
93
+ version_requirements: *id007
94
+ description: This gem is a simple binding to the EC2 API. It has specific extensions to allow extra functionality provided by OpenStack.
95
+ email:
96
+ - jdewey@attinteractive.com
97
+ - jkleinpeter@attinteractive.com
98
+ executables: []
99
+
100
+ extensions: []
101
+
102
+ extra_rdoc_files: []
103
+
104
+ files:
105
+ - .autotest
106
+ - .gitignore
107
+ - .rvmrc
108
+ - Gemfile
109
+ - Gemfile.lock
110
+ - README.md
111
+ - Rakefile
112
+ - lib/aws.rb
113
+ - lib/hashify.rb
114
+ - lib/nephophobia.rb
115
+ - lib/nephophobia/client.rb
116
+ - lib/nephophobia/compute.rb
117
+ - lib/nephophobia/image.rb
118
+ - lib/nephophobia/project.rb
119
+ - lib/nephophobia/role.rb
120
+ - lib/nephophobia/user.rb
121
+ - lib/nephophobia/version.rb
122
+ - nephophobia.gemspec
123
+ - test/fixtures/cassettes/compute_all.yml
124
+ - test/fixtures/cassettes/compute_all_with_filter.yml
125
+ - test/fixtures/cassettes/compute_all_with_string_into_int_error.yml
126
+ - test/fixtures/cassettes/compute_create.yml
127
+ - test/fixtures/cassettes/compute_create_with_optional_params.yml
128
+ - test/fixtures/cassettes/compute_destroy.yml
129
+ - test/fixtures/cassettes/compute_find.yml
130
+ - test/fixtures/cassettes/compute_reboot.yml
131
+ - test/fixtures/cassettes/compute_start.yml
132
+ - test/fixtures/cassettes/compute_stop.yml
133
+ - test/fixtures/cassettes/image_all.yml
134
+ - test/fixtures/cassettes/image_all_with_filter.yml
135
+ - test/fixtures/cassettes/image_all_with_string_into_int_error.yml
136
+ - test/fixtures/cassettes/image_find.yml
137
+ - test/fixtures/cassettes/project_add_member.yml
138
+ - test/fixtures/cassettes/project_all.yml
139
+ - test/fixtures/cassettes/project_all_with_string_into_int_error.yml
140
+ - test/fixtures/cassettes/project_create.yml
141
+ - test/fixtures/cassettes/project_destroy.yml
142
+ - test/fixtures/cassettes/project_find.yml
143
+ - test/fixtures/cassettes/project_members.yml
144
+ - test/fixtures/cassettes/project_remove_member.yml
145
+ - test/fixtures/cassettes/user_add_role.yml
146
+ - test/fixtures/cassettes/user_create.yml
147
+ - test/fixtures/cassettes/user_destroy.yml
148
+ - test/fixtures/cassettes/user_find.yml
149
+ - test/fixtures/cassettes/user_remove_role.yml
150
+ - test/lib/aws_test.rb
151
+ - test/lib/hashify_test.rb
152
+ - test/lib/nephophobia/compute_test.rb
153
+ - test/lib/nephophobia/image_test.rb
154
+ - test/lib/nephophobia/project_test.rb
155
+ - test/lib/nephophobia/user_test.rb
156
+ - test/lib/nephophobia_test.rb
157
+ - test/test_helper.rb
158
+ has_rdoc: true
159
+ homepage: ""
160
+ licenses: []
161
+
162
+ post_install_message:
163
+ rdoc_options: []
164
+
165
+ require_paths:
166
+ - lib
167
+ required_ruby_version: !ruby/object:Gem::Requirement
168
+ none: false
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: "0"
173
+ required_rubygems_version: !ruby/object:Gem::Requirement
174
+ none: false
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: "0"
179
+ requirements: []
180
+
181
+ rubyforge_project: nephophobia
182
+ rubygems_version: 1.5.0
183
+ signing_key:
184
+ specification_version: 3
185
+ summary: Bindings to EC2/OpenStack
186
+ test_files:
187
+ - test/fixtures/cassettes/compute_all.yml
188
+ - test/fixtures/cassettes/compute_all_with_filter.yml
189
+ - test/fixtures/cassettes/compute_all_with_string_into_int_error.yml
190
+ - test/fixtures/cassettes/compute_create.yml
191
+ - test/fixtures/cassettes/compute_create_with_optional_params.yml
192
+ - test/fixtures/cassettes/compute_destroy.yml
193
+ - test/fixtures/cassettes/compute_find.yml
194
+ - test/fixtures/cassettes/compute_reboot.yml
195
+ - test/fixtures/cassettes/compute_start.yml
196
+ - test/fixtures/cassettes/compute_stop.yml
197
+ - test/fixtures/cassettes/image_all.yml
198
+ - test/fixtures/cassettes/image_all_with_filter.yml
199
+ - test/fixtures/cassettes/image_all_with_string_into_int_error.yml
200
+ - test/fixtures/cassettes/image_find.yml
201
+ - test/fixtures/cassettes/project_add_member.yml
202
+ - test/fixtures/cassettes/project_all.yml
203
+ - test/fixtures/cassettes/project_all_with_string_into_int_error.yml
204
+ - test/fixtures/cassettes/project_create.yml
205
+ - test/fixtures/cassettes/project_destroy.yml
206
+ - test/fixtures/cassettes/project_find.yml
207
+ - test/fixtures/cassettes/project_members.yml
208
+ - test/fixtures/cassettes/project_remove_member.yml
209
+ - test/fixtures/cassettes/user_add_role.yml
210
+ - test/fixtures/cassettes/user_create.yml
211
+ - test/fixtures/cassettes/user_destroy.yml
212
+ - test/fixtures/cassettes/user_find.yml
213
+ - test/fixtures/cassettes/user_remove_role.yml
214
+ - test/lib/aws_test.rb
215
+ - test/lib/hashify_test.rb
216
+ - test/lib/nephophobia/compute_test.rb
217
+ - test/lib/nephophobia/image_test.rb
218
+ - test/lib/nephophobia/project_test.rb
219
+ - test/lib/nephophobia/user_test.rb
220
+ - test/lib/nephophobia_test.rb
221
+ - test/test_helper.rb