cft_smartcloud 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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