rapuncel 0.0.1.alpha → 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 (64) hide show
  1. data/README.md +33 -36
  2. data/{Rakefile → Rakefile.rb} +1 -1
  3. data/lib/rapuncel.rb +1 -2
  4. data/lib/rapuncel/adapters/net_http_adapter.rb +6 -6
  5. data/lib/rapuncel/adapters/typhoeus_adapter.rb +33 -0
  6. data/lib/rapuncel/base.rb +2 -2
  7. data/lib/rapuncel/client.rb +13 -21
  8. data/lib/rapuncel/connection.rb +2 -2
  9. data/lib/rapuncel/core_ext/array.rb +16 -9
  10. data/lib/rapuncel/core_ext/big_decimal.rb +0 -7
  11. data/lib/rapuncel/core_ext/boolean.rb +13 -10
  12. data/lib/rapuncel/core_ext/float.rb +7 -4
  13. data/lib/rapuncel/core_ext/hash.rb +27 -17
  14. data/lib/rapuncel/core_ext/integer.rb +10 -2
  15. data/lib/rapuncel/core_ext/object.rb +6 -6
  16. data/lib/rapuncel/core_ext/string.rb +7 -5
  17. data/lib/rapuncel/core_ext/symbol.rb +3 -2
  18. data/lib/rapuncel/core_ext/time.rb +8 -5
  19. data/lib/rapuncel/fault.rb +10 -0
  20. data/lib/rapuncel/proxy.rb +14 -39
  21. data/lib/rapuncel/request.rb +6 -7
  22. data/lib/rapuncel/response.rb +31 -69
  23. data/rapuncel.gemspec +4 -3
  24. data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-adapters-typhoeus_adapter_rb.html +231 -0
  25. data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-base_rb.html +105 -0
  26. data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-client_rb.html +321 -0
  27. data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-connection_rb.html +513 -0
  28. data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-core_ext-array_rb.html +303 -0
  29. data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-core_ext-boolean_rb.html +255 -0
  30. data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-core_ext-float_rb.html +177 -0
  31. data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-core_ext-hash_rb.html +297 -0
  32. data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-core_ext-integer_rb.html +177 -0
  33. data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-core_ext-object_rb.html +297 -0
  34. data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-core_ext-string_rb.html +159 -0
  35. data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-core_ext-time_rb.html +165 -0
  36. data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-fault_rb.html +93 -0
  37. data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-proxy_rb.html +393 -0
  38. data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-request_rb.html +351 -0
  39. data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel-response_rb.html +399 -0
  40. data/test/coverage/-Users-mariantheisen-Projects-Kayoom-rapuncel-lib-rapuncel_rb.html +201 -0
  41. data/test/coverage/functional_test_helper_rb.html +141 -0
  42. data/test/coverage/index.html +410 -0
  43. data/test/coverage/jquery-1.3.2.min.js +19 -0
  44. data/test/coverage/jquery.tablesorter.min.js +15 -0
  45. data/test/coverage/print.css +12 -0
  46. data/test/coverage/rcov.js +42 -0
  47. data/test/coverage/screen.css +270 -0
  48. data/test/coverage/test_helper_rb.html +291 -0
  49. data/test/coverage/test_server_rb.html +231 -0
  50. data/test/functional/client_test.rb +7 -38
  51. data/test/functional_test_helper.rb +2 -2
  52. data/test/test_server.rb +29 -3
  53. data/test/unit/array_test.rb +14 -14
  54. data/test/unit/boolean_test.rb +6 -6
  55. data/test/unit/float_test.rb +7 -7
  56. data/test/unit/hash_test.rb +16 -16
  57. data/test/unit/object_test.rb +29 -29
  58. data/test/unit/proxy_test.rb +9 -9
  59. data/test/unit/response_test.rb +5 -69
  60. data/test/unit/string_test.rb +7 -15
  61. metadata +56 -20
  62. data/lib/rapuncel/core_ext/nil.rb +0 -7
  63. data/rapuncel-0.0.1.preview.gem +0 -0
  64. data/test/unit/nil_test.rb +0 -16
@@ -0,0 +1,231 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
3
+ <head>
4
+ <title>test_server.rb</title>
5
+ <link href="screen.css" media="all" rel="stylesheet" type="text/css" />
6
+ <link href="print.css" media="print" rel="stylesheet" type="text/css" />
7
+
8
+ <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
9
+ <script type="text/javascript" src="rcov.js"></script>
10
+ </head>
11
+ <body>
12
+ <h1>Test C0 Coverage Information - RCov</h1>
13
+ <h2>test_server.rb</h2>
14
+
15
+
16
+
17
+ <div class="report_table_wrapper">
18
+ <table class='report' id='report_table'>
19
+ <thead>
20
+ <tr>
21
+ <th class="left_align">Name</th>
22
+ <th class="right_align">Total Lines</th>
23
+ <th class="right_align">Lines of Code</th>
24
+ <th class="left_align">Total Coverage</th>
25
+ <th class="left_align">Code Coverage</th>
26
+ </tr>
27
+ </thead>
28
+ <tbody>
29
+ <tr>
30
+ <td class="left_align"><a href="test_server_rb.html">test_server.rb</a></td>
31
+ <td class='right_align'><tt>28</tt></td>
32
+ <td class='right_align'><tt>22</tt></td>
33
+ <td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
34
+ <div class="percent_graph">
35
+ <div class="covered" style="width:100px"></div>
36
+ <div class="uncovered" style="width:0px"></div>
37
+ </div></td>
38
+ <td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
39
+ <div class="percent_graph">
40
+ <div class="covered" style="width:100px"></div>
41
+ <div class="uncovered" style="width:0px"></div>
42
+ </div></td>
43
+ </tr>
44
+ </tbody>
45
+ </table>
46
+ </div>
47
+
48
+ <h3>Key</h3>
49
+
50
+ <div class="key"><pre><span class='marked'>Code reported as executed by Ruby looks like this...</span><span class='marked1'>and this: this line is also marked as covered.</span><span class='inferred'>Lines considered as run by rcov, but not reported by Ruby, look like this,</span><span class='inferred1'>and this: these lines were inferred by rcov (using simple heuristics).</span><span class='uncovered'>Finally, here's a line marked as not executed.</span></pre></div>
51
+
52
+ <h3>Coverage Details</h3>
53
+
54
+ <table class="details">
55
+ <tbody>
56
+
57
+
58
+
59
+ <tr class="marked">
60
+ <td><pre><a name="line1">1</a> require &quot;xmlrpc/server&quot;</pre></td>
61
+ </tr>
62
+
63
+
64
+
65
+ <tr class="inferred">
66
+ <td><pre><a name="line2">2</a> </pre></td>
67
+ </tr>
68
+
69
+
70
+
71
+ <tr class="marked">
72
+ <td><pre><a name="line3">3</a> class Num</pre></td>
73
+ </tr>
74
+
75
+
76
+
77
+ <tr class="marked">
78
+ <td><pre><a name="line4">4</a> INTERFACE = XMLRPC::interface(&quot;num&quot;) {</pre></td>
79
+ </tr>
80
+
81
+
82
+
83
+ <tr class="marked">
84
+ <td><pre><a name="line5">5</a> meth 'int add(int, int)', 'Add two numbers', 'add'</pre></td>
85
+ </tr>
86
+
87
+
88
+
89
+ <tr class="marked">
90
+ <td><pre><a name="line6">6</a> meth 'int div(int, int)', 'Divide two numbers'</pre></td>
91
+ </tr>
92
+
93
+
94
+
95
+ <tr class="inferred">
96
+ <td><pre><a name="line7">7</a> }</pre></td>
97
+ </tr>
98
+
99
+
100
+
101
+ <tr class="inferred">
102
+ <td><pre><a name="line8">8</a> </pre></td>
103
+ </tr>
104
+
105
+
106
+
107
+ <tr class="marked">
108
+ <td><pre><a name="line9">9</a> def add(a, b) a + b end</pre></td>
109
+ </tr>
110
+
111
+
112
+
113
+ <tr class="marked">
114
+ <td><pre><a name="line10">10</a> def div(a, b) a / b end</pre></td>
115
+ </tr>
116
+
117
+
118
+
119
+ <tr class="inferred">
120
+ <td><pre><a name="line11">11</a> end</pre></td>
121
+ </tr>
122
+
123
+
124
+
125
+ <tr class="inferred">
126
+ <td><pre><a name="line12">12</a> </pre></td>
127
+ </tr>
128
+
129
+
130
+
131
+ <tr class="inferred">
132
+ <td><pre><a name="line13">13</a> </pre></td>
133
+ </tr>
134
+
135
+
136
+
137
+ <tr class="marked">
138
+ <td><pre><a name="line14">14</a> class TestServer</pre></td>
139
+ </tr>
140
+
141
+
142
+
143
+ <tr class="marked">
144
+ <td><pre><a name="line15">15</a> def initialize</pre></td>
145
+ </tr>
146
+
147
+
148
+
149
+ <tr class="marked">
150
+ <td><pre><a name="line16">16</a> @server = XMLRPC::Server.new(8080, '127.0.0.1', 4, File.open('/dev/null','w')).tap do |s|</pre></td>
151
+ </tr>
152
+
153
+
154
+
155
+ <tr class="marked">
156
+ <td><pre><a name="line17">17</a> s.add_handler(Num::INTERFACE, Num.new)</pre></td>
157
+ </tr>
158
+
159
+
160
+
161
+ <tr class="inferred">
162
+ <td><pre><a name="line18">18</a> end</pre></td>
163
+ </tr>
164
+
165
+
166
+
167
+ <tr class="inferred">
168
+ <td><pre><a name="line19">19</a> end</pre></td>
169
+ </tr>
170
+
171
+
172
+
173
+ <tr class="inferred">
174
+ <td><pre><a name="line20">20</a> </pre></td>
175
+ </tr>
176
+
177
+
178
+
179
+ <tr class="marked">
180
+ <td><pre><a name="line21">21</a> def start</pre></td>
181
+ </tr>
182
+
183
+
184
+
185
+ <tr class="marked">
186
+ <td><pre><a name="line22">22</a> Thread.new { @server.serve }</pre></td>
187
+ </tr>
188
+
189
+
190
+
191
+ <tr class="inferred">
192
+ <td><pre><a name="line23">23</a> end</pre></td>
193
+ </tr>
194
+
195
+
196
+
197
+ <tr class="inferred">
198
+ <td><pre><a name="line24">24</a> </pre></td>
199
+ </tr>
200
+
201
+
202
+
203
+ <tr class="marked">
204
+ <td><pre><a name="line25">25</a> def stop</pre></td>
205
+ </tr>
206
+
207
+
208
+
209
+ <tr class="marked">
210
+ <td><pre><a name="line26">26</a> @server.shutdown</pre></td>
211
+ </tr>
212
+
213
+
214
+
215
+ <tr class="inferred">
216
+ <td><pre><a name="line27">27</a> end </pre></td>
217
+ </tr>
218
+
219
+
220
+
221
+ <tr class="inferred">
222
+ <td><pre><a name="line28">28</a> end</pre></td>
223
+ </tr>
224
+
225
+ </tbody>
226
+ </table>
227
+
228
+ <p>Generated on Thu Nov 25 12:29:31 +0100 2010 with <a href="http://github.com/relevance/rcov">rcov 0.9.8</a></p>
229
+
230
+ </body>
231
+ </html>
@@ -2,53 +2,22 @@ require 'functional_test_helper'
2
2
 
3
3
  class FunctionalClientTest < FunctionalTest
4
4
  test "Simple XMLRPC call" do
5
- client = Rapuncel::Client.new :port => 8080, :raise_on => :both
6
- proxy = client.proxy_for 'num'
7
-
8
- result = proxy.add 40, 2
9
-
10
- assert_equal 42, result
11
- end
12
-
13
- test "Fault rpc call without raise" do
14
5
  client = Rapuncel::Client.new :port => 8080
15
6
  proxy = client.proxy_for 'num'
16
7
 
17
- assert_nothing_raised Rapuncel::Response::Exception do
18
- proxy.add 20, 20, 2
19
- end
8
+ result = proxy.add 40, 2
20
9
 
21
- assert_kind_of Rapuncel::Response::Fault, proxy.add(20, 20, 2)
10
+ assert_equal 42, result
22
11
  end
23
-
12
+
24
13
  test "Fault rpc call" do
25
- client = Rapuncel::Client.new :port => 8080, :raise_on => :both
14
+ client = Rapuncel::Client.new :port => 8080
26
15
  proxy = client.proxy_for 'num'
27
16
 
28
- assert_raise Rapuncel::Response::Fault do
29
- proxy.add 20, 20, 2
30
- end
31
- end
32
-
33
- test "Error rpc connection" do
34
- client = Rapuncel::Client.new :host => 'www.cice-online.net', :port => 80, :path => '/hullahoobahubbahooo', :raise_on => :both
35
- proxy = client.proxy
17
+ result = proxy.add 20, 20, 2
36
18
 
37
- assert_raise Rapuncel::Response::Error do
38
- proxy.foo :bar, :baz
39
- end
19
+ assert_kind_of Rapuncel::Fault, result
40
20
  end
41
21
 
42
- test "Error rpc connection without raise" do
43
- client = Rapuncel::Client.new :host => 'www.google.de', :port => 80, :path => '/hullahoobahubbahooo'
44
- proxy = client.proxy
45
-
46
- assert_nothing_raised Rapuncel::Response::Error do
47
- proxy.foo :bar, :baz
48
- end
49
-
50
- err = proxy.foo(:bar, :baz)
51
- assert_kind_of Rapuncel::Response::Error, err
52
- assert_equal 404, err.code
53
- end
22
+
54
23
  end
@@ -1,12 +1,12 @@
1
1
  require 'test_helper'
2
2
  require 'test_server'
3
3
 
4
- class FunctionalTest < ActiveSupport::TestCase
4
+ class FunctionalTest < ActiveSupport::TestCase
5
5
  def setup
6
6
  @test_server = TestServer.new
7
7
  @test_server.start
8
8
  end
9
-
9
+
10
10
  def teardown
11
11
  @test_server.stop
12
12
  end
data/test/test_server.rb CHANGED
@@ -1,28 +1,54 @@
1
1
  require "xmlrpc/server"
2
+ require 'rubygems'
3
+ require 'faker'
2
4
 
3
5
  class Num
4
6
  INTERFACE = XMLRPC::interface("num") {
5
7
  meth 'int add(int, int)', 'Add two numbers', 'add'
6
8
  meth 'int div(int, int)', 'Divide two numbers'
9
+ meth 'int rows', "Return a bunch of hashes"
7
10
  }
8
11
 
9
12
  def add(a, b) a + b end
10
13
  def div(a, b) a / b end
14
+
15
+ def initialize
16
+ @rows = []
17
+
18
+ 10000.times do |i|
19
+ @rows << {
20
+ :first_name => Faker::Name.first_name,
21
+ :last_name => Faker::Name.last_name,
22
+ :street => Faker::Address.street_name,
23
+ :zip_code => Faker::Address.zip_code,
24
+ :city => Faker::Address.city,
25
+ :us_state => Faker::Address.us_state,
26
+ :company => Faker::Company.name
27
+ }
28
+ end
29
+ end
30
+
31
+
32
+ def rows
33
+ @rows
34
+ end
11
35
  end
12
36
 
13
37
 
14
38
  class TestServer
39
+ attr_accessor :server
40
+
15
41
  def initialize
16
42
  @server = XMLRPC::Server.new(8080, '127.0.0.1', 4, File.open('/dev/null','w')).tap do |s|
17
43
  s.add_handler(Num::INTERFACE, Num.new)
18
44
  end
19
45
  end
20
-
46
+
21
47
  def start
22
48
  Thread.new { @server.serve }
23
49
  end
24
-
50
+
25
51
  def stop
26
52
  @server.shutdown
27
- end
53
+ end
28
54
  end
@@ -8,37 +8,37 @@ class ArrayTest < ActiveSupport::TestCase
8
8
 
9
9
  assert_select xml, '/array/data/value', 10
10
10
  end
11
-
11
+
12
12
  def test_array arr
13
13
  xml = arr.to_xml_rpc
14
-
14
+
15
15
  xml_node = Nokogiri::XML(xml).children.first
16
-
16
+
17
17
  reparsed = Array.from_xml_rpc xml_node
18
-
18
+
19
19
  reparsed
20
20
  end
21
-
22
-
21
+
22
+
23
23
  test "An array, converted to xml and parsed back should be itself" do
24
24
  arr1 = (1..10).to_a
25
25
  arr2 = arr1.map &:to_s
26
-
26
+
27
27
  arr3 = [arr1, arr2]
28
-
28
+
29
29
  arr4 = ["hello", arr3]
30
-
30
+
31
31
  reparsed1 = test_array arr1
32
32
  reparsed2 = test_array arr2
33
33
  reparsed3 = test_array arr3
34
34
  reparsed4 = test_array arr4
35
-
35
+
36
36
  [reparsed1, reparsed2, reparsed3, reparsed4].zip([arr1, arr2, arr3, arr4]).each do |b|
37
37
  assert_equal *b
38
38
  end
39
-
39
+
40
40
  end
41
-
41
+
42
42
  test "real world repsonse" do
43
43
  response_body = <<-XML
44
44
  <array><data>
@@ -86,9 +86,9 @@ class ArrayTest < ActiveSupport::TestCase
86
86
  </struct></value>
87
87
  </data></array>
88
88
  XML
89
-
89
+
90
90
  arr = Object.from_xml_rpc response_body
91
-
91
+
92
92
  assert_kind_of Array, arr
93
93
  assert_equal 3, arr.size
94
94
  end
@@ -11,24 +11,24 @@ class BooleanTest < ActiveSupport::TestCase
11
11
  assert_select false.to_xml_rpc, '/boolean', 1
12
12
  assert_select false.to_xml_rpc, '/boolean', '0'
13
13
  end
14
-
14
+
15
15
  test "true.to_xml_rpc reparsed must be true" do
16
16
  xml=true.to_xml_rpc
17
17
  xml_node = Nokogiri::XML(xml).children.first
18
-
18
+
19
19
  assert Rapuncel::Boolean.from_xml_rpc(xml_node) #I assume assert takes a boolean?
20
20
  assert Rapuncel::Boolean.from_xml_rpc(xml_node) == true #is this different? just in case the other function gives back something non nil/false which is not necessarily true
21
21
  end
22
-
22
+
23
23
  test "false.to_xml_rpc reparsed must be false" do
24
24
  xml=false.to_xml_rpc
25
25
  xml_node = Nokogiri::XML(xml).children.first
26
-
26
+
27
27
  assert !Rapuncel::Boolean.from_xml_rpc(xml_node)
28
28
  end
29
-
29
+
30
30
  test "anything else should evaluate to what now?" do
31
31
  assert true
32
32
  end
33
-
33
+
34
34
  end