cft_smartcloud 0.2.2 → 0.3.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.
Files changed (93) hide show
  1. data/.gitignore +1 -0
  2. data/CHANGELOG +11 -0
  3. data/README.md +106 -0
  4. data/VERSION +1 -1
  5. data/bin/cft_smartcloud +33 -7
  6. data/bin/smartcloud +33 -7
  7. data/cft_smartcloud.gemspec +84 -20
  8. data/lib/config/config.yml +2 -0
  9. data/lib/curl_client.rb +42 -0
  10. data/lib/rest-client-1.6.6-master/.gitignore +6 -0
  11. data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/README.rdoc +10 -1
  12. data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/Rakefile +0 -0
  13. data/lib/rest-client-1.6.6-master/VERSION +1 -0
  14. data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/bin/restclient +5 -4
  15. data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/history.md +22 -0
  16. data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/lib/rest-client.rb +0 -0
  17. data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/lib/rest_client.rb +0 -0
  18. data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/lib/restclient/abstract_response.rb +0 -0
  19. data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/lib/restclient/exceptions.rb +0 -0
  20. data/lib/rest-client-1.6.6-master/lib/restclient/net_http_ext.rb +55 -0
  21. data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/lib/restclient/payload.rb +17 -2
  22. data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/lib/restclient/raw_response.rb +0 -0
  23. data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/lib/restclient/request.rb +21 -19
  24. data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/lib/restclient/resource.rb +0 -0
  25. data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/lib/restclient/response.rb +0 -0
  26. data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/lib/restclient.rb +0 -0
  27. data/lib/rest-client-1.6.6-master/rest-client.gemspec +76 -0
  28. data/lib/rest-client-1.6.6-master/spec/abstract_response_spec.rb +85 -0
  29. data/lib/rest-client-1.6.6-master/spec/base.rb +16 -0
  30. data/lib/rest-client-1.6.6-master/spec/exceptions_spec.rb +98 -0
  31. data/lib/rest-client-1.6.6-master/spec/integration/certs/equifax.crt +19 -0
  32. data/lib/rest-client-1.6.6-master/spec/integration/certs/verisign.crt +14 -0
  33. data/lib/rest-client-1.6.6-master/spec/integration/request_spec.rb +25 -0
  34. data/lib/rest-client-1.6.6-master/spec/integration_spec.rb +38 -0
  35. data/lib/rest-client-1.6.6-master/spec/master_shake.jpg +0 -0
  36. data/lib/rest-client-1.6.6-master/spec/payload_spec.rb +234 -0
  37. data/lib/rest-client-1.6.6-master/spec/raw_response_spec.rb +17 -0
  38. data/lib/rest-client-1.6.6-master/spec/request2_spec.rb +40 -0
  39. data/lib/rest-client-1.6.6-master/spec/request_spec.rb +536 -0
  40. data/lib/rest-client-1.6.6-master/spec/resource_spec.rb +134 -0
  41. data/lib/rest-client-1.6.6-master/spec/response_spec.rb +169 -0
  42. data/lib/rest-client-1.6.6-master/spec/restclient_spec.rb +73 -0
  43. data/lib/slop-2.3.1/.gemtest +0 -0
  44. data/lib/slop-2.3.1/.gitignore +6 -0
  45. data/lib/slop-2.3.1/.yardopts +6 -0
  46. data/lib/slop-2.3.1/CHANGES.md +137 -0
  47. data/lib/slop-2.3.1/LICENSE +20 -0
  48. data/lib/slop-2.3.1/README.md +293 -0
  49. data/lib/slop-2.3.1/Rakefile +6 -0
  50. data/lib/slop-2.3.1/lib/slop.rb +1022 -0
  51. data/lib/slop-2.3.1/slop.gemspec +11 -0
  52. data/lib/slop-2.3.1/test/commands_test.rb +151 -0
  53. data/lib/slop-2.3.1/test/helper.rb +13 -0
  54. data/lib/slop-2.3.1/test/option_test.rb +198 -0
  55. data/lib/slop-2.3.1/test/slop_test.rb +574 -0
  56. data/lib/smartcloud.rb +186 -116
  57. data/lib/terminal-table-1.4.4/History.rdoc +53 -0
  58. data/lib/terminal-table-1.4.4/Manifest +24 -0
  59. data/lib/terminal-table-1.4.4/README.rdoc +240 -0
  60. data/lib/terminal-table-1.4.4/Rakefile +15 -0
  61. data/lib/terminal-table-1.4.4/Todo.rdoc +14 -0
  62. data/lib/terminal-table-1.4.4/examples/examples.rb +80 -0
  63. data/lib/terminal-table-1.4.4/lib/terminal-table/cell.rb +88 -0
  64. data/lib/terminal-table-1.4.4/lib/terminal-table/core_ext.rb +8 -0
  65. data/lib/terminal-table-1.4.4/lib/terminal-table/import.rb +4 -0
  66. data/lib/terminal-table-1.4.4/lib/terminal-table/row.rb +48 -0
  67. data/lib/terminal-table-1.4.4/lib/terminal-table/separator.rb +14 -0
  68. data/lib/terminal-table-1.4.4/lib/terminal-table/style.rb +61 -0
  69. data/lib/terminal-table-1.4.4/lib/terminal-table/table.rb +217 -0
  70. data/lib/terminal-table-1.4.4/lib/terminal-table/table_helper.rb +9 -0
  71. data/lib/terminal-table-1.4.4/lib/terminal-table/version.rb +6 -0
  72. data/lib/terminal-table-1.4.4/lib/terminal-table.rb +27 -0
  73. data/lib/terminal-table-1.4.4/spec/cell_spec.rb +54 -0
  74. data/lib/terminal-table-1.4.4/spec/core_ext_spec.rb +18 -0
  75. data/lib/terminal-table-1.4.4/spec/import_spec.rb +11 -0
  76. data/lib/terminal-table-1.4.4/spec/spec.opts +1 -0
  77. data/lib/terminal-table-1.4.4/spec/spec_helper.rb +8 -0
  78. data/lib/terminal-table-1.4.4/spec/table_spec.rb +525 -0
  79. data/lib/terminal-table-1.4.4/tasks/docs.rake +13 -0
  80. data/lib/terminal-table-1.4.4/tasks/gemspec.rake +3 -0
  81. data/lib/terminal-table-1.4.4/tasks/spec.rake +25 -0
  82. data/lib/terminal-table-1.4.4/terminal-table.gemspec +30 -0
  83. data/responses/addresses +26 -0
  84. data/responses/addresses.blank +2 -0
  85. data/responses/instances +74 -0
  86. data/responses/keys +33 -0
  87. data/responses/locations +142 -0
  88. data/responses/offerings_image +3780 -0
  89. data/responses/storage +379 -0
  90. metadata +86 -22
  91. data/README.rdoc +0 -75
  92. data/lib/rest-client-1.6.3/VERSION +0 -1
  93. data/lib/rest-client-1.6.3/lib/restclient/net_http_ext.rb +0 -21
@@ -0,0 +1,234 @@
1
+ require File.join(File.dirname(File.expand_path(__FILE__)), 'base')
2
+
3
+ describe RestClient::Payload do
4
+ context "A regular Payload" do
5
+ it "should use standard enctype as default content-type" do
6
+ RestClient::Payload::UrlEncoded.new({}).headers['Content-Type'].
7
+ should == 'application/x-www-form-urlencoded'
8
+ end
9
+
10
+ it "should form properly encoded params" do
11
+ RestClient::Payload::UrlEncoded.new({:foo => 'bar'}).to_s.
12
+ should == "foo=bar"
13
+ ["foo=bar&baz=qux", "baz=qux&foo=bar"].should include(
14
+ RestClient::Payload::UrlEncoded.new({:foo => 'bar', :baz => 'qux'}).to_s)
15
+ end
16
+
17
+ it "should escape parameters" do
18
+ RestClient::Payload::UrlEncoded.new({'foo ' => 'bar'}).to_s.
19
+ should == "foo%20=bar"
20
+ end
21
+
22
+ it "should properly handle hashes as parameter" do
23
+ RestClient::Payload::UrlEncoded.new({:foo => {:bar => 'baz'}}).to_s.
24
+ should == "foo[bar]=baz"
25
+ RestClient::Payload::UrlEncoded.new({:foo => {:bar => {:baz => 'qux'}}}).to_s.
26
+ should == "foo[bar][baz]=qux"
27
+ end
28
+
29
+ it "should handle many attributes inside a hash" do
30
+ parameters = RestClient::Payload::UrlEncoded.new({:foo => {:bar => 'baz', :baz => 'qux'}}).to_s
31
+ parameters.should include("foo[bar]=baz", "foo[baz]=qux")
32
+ end
33
+
34
+ it "should handle attributes inside a an array inside an hash" do
35
+ parameters = RestClient::Payload::UrlEncoded.new({"foo" => [{"bar" => 'baz'}, {"bar" => 'qux'}]}).to_s
36
+ parameters.should include("foo[bar]=baz", "foo[bar]=qux")
37
+ end
38
+
39
+ it "should handle attributes inside a an array inside an array inside an hash" do
40
+ parameters = RestClient::Payload::UrlEncoded.new({"foo" => [[{"bar" => 'baz'}, {"bar" => 'qux'}]]}).to_s
41
+ parameters.should include("foo[bar]=baz", "foo[bar]=qux")
42
+ end
43
+
44
+ it "should form properly use symbols as parameters" do
45
+ RestClient::Payload::UrlEncoded.new({:foo => :bar}).to_s.
46
+ should == "foo=bar"
47
+ RestClient::Payload::UrlEncoded.new({:foo => {:bar => :baz}}).to_s.
48
+ should == "foo[bar]=baz"
49
+ end
50
+
51
+ it "should properly handle arrays as repeated parameters" do
52
+ RestClient::Payload::UrlEncoded.new({:foo => ['bar']}).to_s.
53
+ should == "foo[]=bar"
54
+ RestClient::Payload::UrlEncoded.new({:foo => ['bar', 'baz']}).to_s.
55
+ should == "foo[]=bar&foo[]=baz"
56
+ end
57
+
58
+ it 'should not close if stream already closed' do
59
+ p = RestClient::Payload::UrlEncoded.new({'foo ' => 'bar'})
60
+ 3.times {p.close}
61
+ end
62
+
63
+ end
64
+
65
+ context "A multipart Payload" do
66
+ it "should use standard enctype as default content-type" do
67
+ m = RestClient::Payload::Multipart.new({})
68
+ m.stub!(:boundary).and_return(123)
69
+ m.headers['Content-Type'].should == 'multipart/form-data; boundary=123'
70
+ end
71
+
72
+ it 'should not error on close if stream already closed' do
73
+ m = RestClient::Payload::Multipart.new(:file => File.new(File.join(File.dirname(File.expand_path(__FILE__)), 'master_shake.jpg')))
74
+ 3.times {m.close}
75
+ end
76
+
77
+ it "should form properly separated multipart data" do
78
+ m = RestClient::Payload::Multipart.new([[:bar, "baz"], [:foo, "bar"]])
79
+ m.to_s.should == <<-EOS
80
+ --#{m.boundary}\r
81
+ Content-Disposition: form-data; name="bar"\r
82
+ \r
83
+ baz\r
84
+ --#{m.boundary}\r
85
+ Content-Disposition: form-data; name="foo"\r
86
+ \r
87
+ bar\r
88
+ --#{m.boundary}--\r
89
+ EOS
90
+ end
91
+
92
+ it "should not escape parameters names" do
93
+ m = RestClient::Payload::Multipart.new([["bar ", "baz"]])
94
+ m.to_s.should == <<-EOS
95
+ --#{m.boundary}\r
96
+ Content-Disposition: form-data; name="bar "\r
97
+ \r
98
+ baz\r
99
+ --#{m.boundary}--\r
100
+ EOS
101
+ end
102
+
103
+ it "should form properly separated multipart data" do
104
+ f = File.new(File.dirname(__FILE__) + "/master_shake.jpg")
105
+ m = RestClient::Payload::Multipart.new({:foo => f})
106
+ m.to_s.should == <<-EOS
107
+ --#{m.boundary}\r
108
+ Content-Disposition: form-data; name="foo"; filename="master_shake.jpg"\r
109
+ Content-Type: image/jpeg\r
110
+ \r
111
+ #{IO.read(f.path)}\r
112
+ --#{m.boundary}--\r
113
+ EOS
114
+ end
115
+
116
+ it "should ignore the name attribute when it's not set" do
117
+ f = File.new(File.dirname(__FILE__) + "/master_shake.jpg")
118
+ m = RestClient::Payload::Multipart.new({nil => f})
119
+ m.to_s.should == <<-EOS
120
+ --#{m.boundary}\r
121
+ Content-Disposition: form-data; filename="master_shake.jpg"\r
122
+ Content-Type: image/jpeg\r
123
+ \r
124
+ #{IO.read(f.path)}\r
125
+ --#{m.boundary}--\r
126
+ EOS
127
+ end
128
+
129
+ it "should detect optional (original) content type and filename" do
130
+ f = File.new(File.dirname(__FILE__) + "/master_shake.jpg")
131
+ f.instance_eval "def content_type; 'text/plain'; end"
132
+ f.instance_eval "def original_filename; 'foo.txt'; end"
133
+ m = RestClient::Payload::Multipart.new({:foo => f})
134
+ m.to_s.should == <<-EOS
135
+ --#{m.boundary}\r
136
+ Content-Disposition: form-data; name="foo"; filename="foo.txt"\r
137
+ Content-Type: text/plain\r
138
+ \r
139
+ #{IO.read(f.path)}\r
140
+ --#{m.boundary}--\r
141
+ EOS
142
+ end
143
+
144
+ it "should handle hash in hash parameters" do
145
+ m = RestClient::Payload::Multipart.new({:bar => {:baz => "foo"}})
146
+ m.to_s.should == <<-EOS
147
+ --#{m.boundary}\r
148
+ Content-Disposition: form-data; name="bar[baz]"\r
149
+ \r
150
+ foo\r
151
+ --#{m.boundary}--\r
152
+ EOS
153
+
154
+ f = File.new(File.dirname(__FILE__) + "/master_shake.jpg")
155
+ f.instance_eval "def content_type; 'text/plain'; end"
156
+ f.instance_eval "def original_filename; 'foo.txt'; end"
157
+ m = RestClient::Payload::Multipart.new({:foo => {:bar => f}})
158
+ m.to_s.should == <<-EOS
159
+ --#{m.boundary}\r
160
+ Content-Disposition: form-data; name="foo[bar]"; filename="foo.txt"\r
161
+ Content-Type: text/plain\r
162
+ \r
163
+ #{IO.read(f.path)}\r
164
+ --#{m.boundary}--\r
165
+ EOS
166
+ end
167
+
168
+ end
169
+
170
+ context "streamed payloads" do
171
+ it "should properly determine the size of file payloads" do
172
+ f = File.new(File.dirname(__FILE__) + "/master_shake.jpg")
173
+ payload = RestClient::Payload.generate(f)
174
+ payload.size.should == 22_545
175
+ payload.length.should == 22_545
176
+ end
177
+
178
+ it "should properly determine the size of other kinds of streaming payloads" do
179
+ s = StringIO.new 'foo'
180
+ payload = RestClient::Payload.generate(s)
181
+ payload.size.should == 3
182
+ payload.length.should == 3
183
+
184
+ begin
185
+ f = Tempfile.new "rest-client"
186
+ f.write 'foo bar'
187
+
188
+ payload = RestClient::Payload.generate(f)
189
+ payload.size.should == 7
190
+ payload.length.should == 7
191
+ ensure
192
+ f.close
193
+ end
194
+ end
195
+ end
196
+
197
+ context "Payload generation" do
198
+ it "should recognize standard urlencoded params" do
199
+ RestClient::Payload.generate({"foo" => 'bar'}).should be_kind_of(RestClient::Payload::UrlEncoded)
200
+ end
201
+
202
+ it "should recognize multipart params" do
203
+ f = File.new(File.dirname(__FILE__) + "/master_shake.jpg")
204
+ RestClient::Payload.generate({"foo" => f}).should be_kind_of(RestClient::Payload::Multipart)
205
+ end
206
+
207
+ it "should be multipart if forced" do
208
+ RestClient::Payload.generate({"foo" => "bar", :multipart => true}).should be_kind_of(RestClient::Payload::Multipart)
209
+ end
210
+
211
+ it "should return data if no of the above" do
212
+ RestClient::Payload.generate("data").should be_kind_of(RestClient::Payload::Base)
213
+ end
214
+
215
+ it "should recognize nested multipart payloads in hashes" do
216
+ f = File.new(File.dirname(__FILE__) + "/master_shake.jpg")
217
+ RestClient::Payload.generate({"foo" => {"file" => f}}).should be_kind_of(RestClient::Payload::Multipart)
218
+ end
219
+
220
+ it "should recognize nested multipart payloads in arrays" do
221
+ f = File.new(File.dirname(__FILE__) + "/master_shake.jpg")
222
+ RestClient::Payload.generate({"foo" => [f]}).should be_kind_of(RestClient::Payload::Multipart)
223
+ end
224
+
225
+ it "should recognize file payloads that can be streamed" do
226
+ f = File.new(File.dirname(__FILE__) + "/master_shake.jpg")
227
+ RestClient::Payload.generate(f).should be_kind_of(RestClient::Payload::Streamed)
228
+ end
229
+
230
+ it "should recognize other payloads that can be streamed" do
231
+ RestClient::Payload.generate(StringIO.new('foo')).should be_kind_of(RestClient::Payload::Streamed)
232
+ end
233
+ end
234
+ end
@@ -0,0 +1,17 @@
1
+ require File.join( File.dirname(File.expand_path(__FILE__)), 'base')
2
+
3
+ describe RestClient::RawResponse do
4
+ before do
5
+ @tf = mock("Tempfile", :read => "the answer is 42", :open => true)
6
+ @net_http_res = mock('net http response')
7
+ @response = RestClient::RawResponse.new(@tf, @net_http_res, {})
8
+ end
9
+
10
+ it "behaves like string" do
11
+ @response.to_s.should == 'the answer is 42'
12
+ end
13
+
14
+ it "exposes a Tempfile" do
15
+ @response.file.should == @tf
16
+ end
17
+ end
@@ -0,0 +1,40 @@
1
+ require File.join( File.dirname(File.expand_path(__FILE__)), 'base')
2
+
3
+ require 'webmock/rspec'
4
+ include WebMock
5
+
6
+ describe RestClient::Request do
7
+
8
+ it "manage params for get requests" do
9
+ stub_request(:get, 'http://some/resource?a=b&c=d').with(:headers => {'Accept'=>'*/*; q=0.5, application/xml', 'Accept-Encoding'=>'gzip, deflate', 'Foo'=>'bar'}).to_return(:body => 'foo', :status => 200)
10
+ RestClient::Request.execute(:url => 'http://some/resource', :method => :get, :headers => {:foo => :bar, :params => {:a => :b, 'c' => 'd'}}).body.should == 'foo'
11
+
12
+ stub_request(:get, 'http://some/resource').with(:headers => {'Accept'=>'*/*; q=0.5, application/xml', 'Accept-Encoding'=>'gzip, deflate', 'Foo'=>'bar', 'params' => 'a'}).to_return(:body => 'foo', :status => 200)
13
+ RestClient::Request.execute(:url => 'http://some/resource', :method => :get, :headers => {:foo => :bar, :params => :a}).body.should == 'foo'
14
+ end
15
+
16
+ it "can use a block to process response" do
17
+ response_value = nil
18
+ block = Proc.new do |http_response|
19
+ response_value = http_response.body
20
+ end
21
+ stub_request(:get, 'http://some/resource?a=b&c=d').with(:headers => {'Accept'=>'*/*; q=0.5, application/xml', 'Accept-Encoding'=>'gzip, deflate', 'Foo'=>'bar'}).to_return(:body => 'foo', :status => 200)
22
+ RestClient::Request.execute(:url => 'http://some/resource', :method => :get, :headers => {:foo => :bar, :params => {:a => :b, 'c' => 'd'}}, :block_response => block)
23
+ response_value.should == "foo"
24
+ end
25
+
26
+ it 'closes payload if not nil' do
27
+ test_file = File.new(File.join( File.dirname(File.expand_path(__FILE__)), 'master_shake.jpg'))
28
+ initial_count = tmp_count
29
+
30
+ stub_request(:post, 'http://some/resource').with(:headers => {'Accept'=>'*/*; q=0.5, application/xml', 'Accept-Encoding'=>'gzip, deflate'}).to_return(:body => 'foo', :status => 200)
31
+ RestClient::Request.execute(:url => 'http://some/resource', :method => :post, :payload => {:file => test_file})
32
+
33
+ tmp_count.should == initial_count
34
+ end
35
+
36
+ end
37
+
38
+ def tmp_count
39
+ Dir.glob(Dir::tmpdir + "/*").size
40
+ end