rack-amf 0.0.4 → 1.0.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.
- data/README.rdoc +18 -9
- data/Rakefile +23 -38
- data/lib/rack/amf/environment.rb +5 -8
- data/lib/rack/amf/middleware/pass_through.rb +5 -4
- data/lib/rack/amf/middleware/service_manager.rb +11 -3
- data/lib/rack/amf/middleware.rb +2 -1
- data/lib/rack/amf/request.rb +3 -16
- data/lib/rack/amf/response.rb +8 -67
- data/lib/rack/amf.rb +41 -1
- data/spec/{rack/service_manager_spec.rb → service_manager_spec.rb} +1 -2
- data/spec/spec.opts +2 -1
- data/spec/spec_helper.rb +1 -24
- metadata +19 -84
- data/lib/amf/class_mapping.rb +0 -211
- data/lib/amf/common.rb +0 -28
- data/lib/amf/constants.rb +0 -47
- data/lib/amf/pure/deserializer.rb +0 -361
- data/lib/amf/pure/io_helpers.rb +0 -94
- data/lib/amf/pure/remoting.rb +0 -120
- data/lib/amf/pure/serializer.rb +0 -327
- data/lib/amf/pure.rb +0 -14
- data/lib/amf/values/array_collection.rb +0 -9
- data/lib/amf/values/messages.rb +0 -133
- data/lib/amf/values/typed_hash.rb +0 -13
- data/lib/amf/version.rb +0 -9
- data/lib/amf.rb +0 -17
- data/spec/amf/class_mapping_set_spec.rb +0 -34
- data/spec/amf/class_mapping_spec.rb +0 -120
- data/spec/amf/deserializer_spec.rb +0 -311
- data/spec/amf/remoting_spec.rb +0 -51
- data/spec/amf/serializer_spec.rb +0 -328
- data/spec/amf/values/array_collection_spec.rb +0 -6
- data/spec/amf/values/messages_spec.rb +0 -31
- data/spec/fixtures/objects/amf0-boolean.bin +0 -1
- data/spec/fixtures/objects/amf0-date.bin +0 -0
- data/spec/fixtures/objects/amf0-ecma-ordinal-array.bin +0 -0
- data/spec/fixtures/objects/amf0-hash.bin +0 -0
- data/spec/fixtures/objects/amf0-null.bin +0 -1
- data/spec/fixtures/objects/amf0-number.bin +0 -0
- data/spec/fixtures/objects/amf0-object.bin +0 -0
- data/spec/fixtures/objects/amf0-ref-test.bin +0 -0
- data/spec/fixtures/objects/amf0-strict-array.bin +0 -0
- data/spec/fixtures/objects/amf0-string.bin +0 -0
- data/spec/fixtures/objects/amf0-typed-object.bin +0 -0
- data/spec/fixtures/objects/amf0-undefined.bin +0 -1
- data/spec/fixtures/objects/amf0-untyped-object.bin +0 -0
- data/spec/fixtures/objects/amf3-0.bin +0 -0
- data/spec/fixtures/objects/amf3-arrayRef.bin +0 -1
- data/spec/fixtures/objects/amf3-bigNum.bin +0 -0
- data/spec/fixtures/objects/amf3-date.bin +0 -0
- data/spec/fixtures/objects/amf3-datesRef.bin +0 -0
- data/spec/fixtures/objects/amf3-dynObject.bin +0 -2
- data/spec/fixtures/objects/amf3-emptyArray.bin +0 -1
- data/spec/fixtures/objects/amf3-emptyArrayRef.bin +0 -1
- data/spec/fixtures/objects/amf3-emptyStringRef.bin +0 -1
- data/spec/fixtures/objects/amf3-false.bin +0 -1
- data/spec/fixtures/objects/amf3-graphMember.bin +0 -0
- data/spec/fixtures/objects/amf3-hash.bin +0 -2
- data/spec/fixtures/objects/amf3-largeMax.bin +0 -0
- data/spec/fixtures/objects/amf3-largeMin.bin +0 -0
- data/spec/fixtures/objects/amf3-max.bin +0 -1
- data/spec/fixtures/objects/amf3-min.bin +0 -0
- data/spec/fixtures/objects/amf3-mixedArray.bin +0 -11
- data/spec/fixtures/objects/amf3-null.bin +0 -1
- data/spec/fixtures/objects/amf3-objRef.bin +0 -0
- data/spec/fixtures/objects/amf3-primArray.bin +0 -1
- data/spec/fixtures/objects/amf3-string.bin +0 -1
- data/spec/fixtures/objects/amf3-stringRef.bin +0 -0
- data/spec/fixtures/objects/amf3-symbol.bin +0 -1
- data/spec/fixtures/objects/amf3-true.bin +0 -1
- data/spec/fixtures/objects/amf3-typedObject.bin +0 -2
- data/spec/fixtures/request/acknowledge-response.bin +0 -0
- data/spec/fixtures/request/amf0-error-response.bin +0 -0
- data/spec/fixtures/request/commandMessage.bin +0 -0
- data/spec/fixtures/request/remotingMessage.bin +0 -0
- data/spec/fixtures/request/simple-response.bin +0 -0
- data/spec/rack/request_spec.rb +0 -6
- data/spec/rack/response_spec.rb +0 -47
data/spec/amf/serializer_spec.rb
DELETED
@@ -1,328 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
|
-
|
3
|
-
require 'rexml/document'
|
4
|
-
|
5
|
-
describe "when serializing" do
|
6
|
-
before :each do
|
7
|
-
AMF::ClassMapper.reset
|
8
|
-
end
|
9
|
-
|
10
|
-
describe "AMF0" do
|
11
|
-
it "should serialize nils" do
|
12
|
-
output = AMF.serialize(nil, 0)
|
13
|
-
output.should == object_fixture('amf0-null.bin')
|
14
|
-
end
|
15
|
-
|
16
|
-
it "should serialize booleans" do
|
17
|
-
output = AMF.serialize(true, 0)
|
18
|
-
output.should === object_fixture('amf0-boolean.bin')
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should serialize numbers" do
|
22
|
-
output = AMF.serialize(3.5, 0)
|
23
|
-
output.should == object_fixture('amf0-number.bin')
|
24
|
-
end
|
25
|
-
|
26
|
-
it "should serialize strings" do
|
27
|
-
output = AMF.serialize("this is a テスト", 0)
|
28
|
-
output.should == object_fixture('amf0-string.bin')
|
29
|
-
end
|
30
|
-
|
31
|
-
it "should serialize arrays" do
|
32
|
-
output = AMF.serialize(['a', 'b', 'c', 'd'], 0)
|
33
|
-
output.should == object_fixture('amf0-strict-array.bin')
|
34
|
-
end
|
35
|
-
|
36
|
-
it "should serialize references" do
|
37
|
-
class OtherClass
|
38
|
-
attr_accessor :foo, :bar
|
39
|
-
end
|
40
|
-
obj = OtherClass.new
|
41
|
-
obj.foo = "baz"
|
42
|
-
obj.bar = 3.14
|
43
|
-
|
44
|
-
output = AMF.serialize({'0' => obj, '1' => obj}, 0)
|
45
|
-
output.should == object_fixture('amf0-ref-test.bin')
|
46
|
-
end
|
47
|
-
|
48
|
-
it "should serialize dates" do
|
49
|
-
output = AMF.serialize(Time.utc(2003, 2, 13, 5), 0)
|
50
|
-
output.should == object_fixture('amf0-date.bin')
|
51
|
-
end
|
52
|
-
|
53
|
-
it "should serialize hashes" do
|
54
|
-
output = AMF.serialize({:a => 'b', :c => 'd'}, 0)
|
55
|
-
output.should == object_fixture('amf0-hash.bin')
|
56
|
-
end
|
57
|
-
|
58
|
-
it "should serialize unmapped objects" do
|
59
|
-
class RubyClass
|
60
|
-
attr_accessor :foo, :baz
|
61
|
-
end
|
62
|
-
obj = RubyClass.new
|
63
|
-
obj.foo = "bar"
|
64
|
-
|
65
|
-
output = AMF.serialize(obj, 0)
|
66
|
-
output.should == object_fixture('amf0-untyped-object.bin')
|
67
|
-
end
|
68
|
-
|
69
|
-
it "should serialize mapped objects" do
|
70
|
-
class RubyClass
|
71
|
-
attr_accessor :foo, :baz
|
72
|
-
end
|
73
|
-
obj = RubyClass.new
|
74
|
-
obj.foo = "bar"
|
75
|
-
AMF::ClassMapper.define {|m| m.map :as => 'org.rackAMF.ASClass', :ruby => 'RubyClass'}
|
76
|
-
|
77
|
-
output = AMF.serialize(obj, 0)
|
78
|
-
output.should == object_fixture('amf0-typed-object.bin')
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
describe "AMF3" do
|
83
|
-
describe "simple messages" do
|
84
|
-
it "should serialize a null" do
|
85
|
-
expected = object_fixture("amf3-null.bin")
|
86
|
-
output = AMF.serialize(nil, 3)
|
87
|
-
output.should == expected
|
88
|
-
end
|
89
|
-
|
90
|
-
it "should serialize a false" do
|
91
|
-
expected = object_fixture("amf3-false.bin")
|
92
|
-
output = AMF.serialize(false, 3)
|
93
|
-
output.should == expected
|
94
|
-
end
|
95
|
-
|
96
|
-
it "should serialize a true" do
|
97
|
-
expected = object_fixture("amf3-true.bin")
|
98
|
-
output = AMF.serialize(true, 3)
|
99
|
-
output.should == expected
|
100
|
-
end
|
101
|
-
|
102
|
-
it "should serialize integers" do
|
103
|
-
expected = object_fixture("amf3-max.bin")
|
104
|
-
input = AMF::MAX_INTEGER
|
105
|
-
output = AMF.serialize(input, 3)
|
106
|
-
output.should == expected
|
107
|
-
|
108
|
-
expected = object_fixture("amf3-0.bin")
|
109
|
-
output = AMF.serialize(0, 3)
|
110
|
-
output.should == expected
|
111
|
-
|
112
|
-
expected = object_fixture("amf3-min.bin")
|
113
|
-
input = AMF::MIN_INTEGER
|
114
|
-
output = AMF.serialize(input, 3)
|
115
|
-
output.should == expected
|
116
|
-
end
|
117
|
-
|
118
|
-
it "should serialize large integers" do
|
119
|
-
expected = object_fixture("amf3-largeMax.bin")
|
120
|
-
input = AMF::MAX_INTEGER + 1
|
121
|
-
output = AMF.serialize(input, 3)
|
122
|
-
output.should == expected
|
123
|
-
|
124
|
-
expected = object_fixture("amf3-largeMin.bin")
|
125
|
-
input = AMF::MIN_INTEGER - 1
|
126
|
-
output = AMF.serialize(input, 3)
|
127
|
-
output.should == expected
|
128
|
-
end
|
129
|
-
|
130
|
-
it "should serialize BigNums" do
|
131
|
-
expected = object_fixture("amf3-bigNum.bin")
|
132
|
-
input = 2**1000
|
133
|
-
output = AMF.serialize(input, 3)
|
134
|
-
output.should == expected
|
135
|
-
end
|
136
|
-
|
137
|
-
it "should serialize a simple string" do
|
138
|
-
expected = object_fixture("amf3-string.bin")
|
139
|
-
input = "String . String"
|
140
|
-
output = AMF.serialize(input, 3)
|
141
|
-
output.should == expected
|
142
|
-
end
|
143
|
-
|
144
|
-
it "should serialize a symbol as a string" do
|
145
|
-
expected = object_fixture("amf3-symbol.bin")
|
146
|
-
output = AMF.serialize(:foo, 3)
|
147
|
-
output.should == expected
|
148
|
-
end
|
149
|
-
|
150
|
-
it "should serialize Times" do
|
151
|
-
expected = object_fixture("amf3-date.bin")
|
152
|
-
input = Time.utc 1970, 1, 1, 0
|
153
|
-
output = AMF.serialize(input, 3)
|
154
|
-
output.should == expected
|
155
|
-
end
|
156
|
-
|
157
|
-
#BAH! Who sends XML over AMF?
|
158
|
-
it "should serialize a REXML document"
|
159
|
-
end
|
160
|
-
|
161
|
-
describe "objects" do
|
162
|
-
it "should serialize an unmapped object as a dynamic anonymous object" do
|
163
|
-
class NonMappedObject
|
164
|
-
attr_accessor :property_one
|
165
|
-
attr_accessor :property_two
|
166
|
-
attr_accessor :nil_property
|
167
|
-
attr_writer :read_only_prop
|
168
|
-
|
169
|
-
def another_public_property
|
170
|
-
'a_public_value'
|
171
|
-
end
|
172
|
-
|
173
|
-
def method_with_arg arg='foo'
|
174
|
-
arg
|
175
|
-
end
|
176
|
-
end
|
177
|
-
obj = NonMappedObject.new
|
178
|
-
obj.property_one = 'foo'
|
179
|
-
obj.property_two = 1
|
180
|
-
obj.nil_property = nil
|
181
|
-
|
182
|
-
expected = object_fixture("amf3-dynObject.bin")
|
183
|
-
input = obj
|
184
|
-
output = AMF.serialize(input, 3)
|
185
|
-
output.should == expected
|
186
|
-
end
|
187
|
-
|
188
|
-
it "should serialize a hash as a dynamic anonymous object" do
|
189
|
-
hash = {}
|
190
|
-
hash[:answer] = 42
|
191
|
-
hash[:foo] = "bar"
|
192
|
-
|
193
|
-
expected = object_fixture("amf3-hash.bin")
|
194
|
-
input = hash
|
195
|
-
output = AMF.serialize(input, 3)
|
196
|
-
output.should == expected
|
197
|
-
end
|
198
|
-
|
199
|
-
it "should serialize an empty array" do
|
200
|
-
expected = object_fixture("amf3-emptyArray.bin")
|
201
|
-
input = []
|
202
|
-
output = AMF.serialize(input, 3)
|
203
|
-
output.should == expected
|
204
|
-
end
|
205
|
-
|
206
|
-
it "should serialize an array of primatives" do
|
207
|
-
expected = object_fixture("amf3-primArray.bin")
|
208
|
-
input = [1, 2, 3, 4, 5]
|
209
|
-
output = AMF.serialize(input, 3)
|
210
|
-
output.should == expected
|
211
|
-
end
|
212
|
-
|
213
|
-
it "should serialize an array of mixed objects" do
|
214
|
-
h1 = {:foo_one => "bar_one"}
|
215
|
-
h2 = {:foo_two => ""}
|
216
|
-
class SimpleObj
|
217
|
-
attr_accessor :foo_three
|
218
|
-
end
|
219
|
-
so1 = SimpleObj.new
|
220
|
-
so1.foo_three = 42
|
221
|
-
|
222
|
-
expected = object_fixture("amf3-mixedArray.bin")
|
223
|
-
input = [h1, h2, so1, SimpleObj.new, {}, [h1, h2, so1], [], 42, "", [], "", {}, "bar_one", so1]
|
224
|
-
output = AMF.serialize(input, 3)
|
225
|
-
output.should == expected
|
226
|
-
end
|
227
|
-
|
228
|
-
it "should serialize a byte array"
|
229
|
-
end
|
230
|
-
|
231
|
-
describe "and implementing the AMF Spec" do
|
232
|
-
it "should keep references of duplicate strings" do
|
233
|
-
class StringCarrier
|
234
|
-
attr_accessor :str
|
235
|
-
end
|
236
|
-
foo = "foo"
|
237
|
-
bar = "str"
|
238
|
-
sc = StringCarrier.new
|
239
|
-
sc.str = foo
|
240
|
-
|
241
|
-
expected = object_fixture("amf3-stringRef.bin")
|
242
|
-
input = [foo, bar, foo, bar, foo, sc]
|
243
|
-
output = AMF.serialize(input, 3)
|
244
|
-
output.should == expected
|
245
|
-
end
|
246
|
-
|
247
|
-
it "should not reference the empty string" do
|
248
|
-
expected = object_fixture("amf3-emptyStringRef.bin")
|
249
|
-
input = ""
|
250
|
-
output = AMF.serialize([input,input], 3)
|
251
|
-
output.should == expected
|
252
|
-
end
|
253
|
-
|
254
|
-
it "should keep references of duplicate dates" do
|
255
|
-
expected = object_fixture("amf3-datesRef.bin")
|
256
|
-
input = Time.utc 1970, 1, 1, 0
|
257
|
-
output = AMF.serialize([input,input], 3)
|
258
|
-
output.should == expected
|
259
|
-
end
|
260
|
-
|
261
|
-
it "should keep reference of duplicate objects" do
|
262
|
-
class SimpleReferenceableObj
|
263
|
-
attr_accessor :foo
|
264
|
-
end
|
265
|
-
obj1 = SimpleReferenceableObj.new
|
266
|
-
obj1.foo = :bar
|
267
|
-
obj2 = SimpleReferenceableObj.new
|
268
|
-
obj2.foo = obj1.foo
|
269
|
-
|
270
|
-
expected = object_fixture("amf3-objRef.bin")
|
271
|
-
input = [[obj1, obj2], "bar", [obj1, obj2]]
|
272
|
-
output = AMF.serialize(input, 3)
|
273
|
-
output.should == expected
|
274
|
-
end
|
275
|
-
|
276
|
-
it "should keep references of duplicate arrays" do
|
277
|
-
a = [1,2,3]
|
278
|
-
b = %w{ a b c }
|
279
|
-
|
280
|
-
expected = object_fixture("amf3-arrayRef.bin")
|
281
|
-
input = [a, b, a, b]
|
282
|
-
output = AMF.serialize(input, 3)
|
283
|
-
output.should == expected
|
284
|
-
end
|
285
|
-
|
286
|
-
it "should not keep references of duplicate empty arrays unless the object_id matches" do
|
287
|
-
a = []
|
288
|
-
b = []
|
289
|
-
a.should == b
|
290
|
-
a.object_id.should_not == b.object_id
|
291
|
-
|
292
|
-
expected = object_fixture("amf3-emptyArrayRef.bin")
|
293
|
-
input = [a,b,a,b]
|
294
|
-
output = AMF.serialize(input, 3)
|
295
|
-
output.should == expected
|
296
|
-
end
|
297
|
-
|
298
|
-
it "should keep references of duplicate XML and XMLDocuments"
|
299
|
-
it "should keep references of duplicate byte arrays"
|
300
|
-
|
301
|
-
it "should serialize a deep object graph with circular references" do
|
302
|
-
class GraphMember
|
303
|
-
attr_accessor :parent
|
304
|
-
attr_accessor :children
|
305
|
-
|
306
|
-
def initialize
|
307
|
-
self.children = []
|
308
|
-
end
|
309
|
-
|
310
|
-
def add_child child
|
311
|
-
children << child
|
312
|
-
child.parent = self
|
313
|
-
child
|
314
|
-
end
|
315
|
-
end
|
316
|
-
|
317
|
-
parent = GraphMember.new
|
318
|
-
level_1_child_1 = parent.add_child GraphMember.new
|
319
|
-
level_1_child_2 = parent.add_child GraphMember.new
|
320
|
-
|
321
|
-
expected = object_fixture("amf3-graphMember.bin")
|
322
|
-
input = parent
|
323
|
-
output = AMF.serialize(input, 3)
|
324
|
-
output.should == expected
|
325
|
-
end
|
326
|
-
end
|
327
|
-
end
|
328
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
2
|
-
|
3
|
-
describe AMF::Values::AbstractMessage do
|
4
|
-
before :each do
|
5
|
-
@message = AMF::Values::AbstractMessage.new
|
6
|
-
end
|
7
|
-
|
8
|
-
it "should generate conforming uuids" do
|
9
|
-
@message.send(:rand_uuid).should =~ /[A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12}/i
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
describe AMF::Values::ErrorMessage do
|
14
|
-
before :each do
|
15
|
-
@e = Exception.new('Error message')
|
16
|
-
@e.set_backtrace(['Backtrace 1', 'Backtrace 2'])
|
17
|
-
@message = AMF::Values::ErrorMessage.new(nil, @e)
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should serialize as a hash in AMF0" do
|
21
|
-
response = AMF::Response.new
|
22
|
-
response.messages << AMF::Message.new('1/onStatus', '', @message)
|
23
|
-
response.serialize.should == request_fixture('amf0-error-response.bin')
|
24
|
-
end
|
25
|
-
|
26
|
-
it "should extract exception properties correctly" do
|
27
|
-
@message.faultCode.should == 'Exception'
|
28
|
-
@message.faultString.should == 'Error message'
|
29
|
-
@message.faultDetail.should == "Backtrace 1\nBacktrace 2"
|
30
|
-
end
|
31
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
|
Binary file
|
Binary file
|
Binary file
|
@@ -1 +0,0 @@
|
|
1
|
-
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -1 +0,0 @@
|
|
1
|
-
|
Binary file
|
Binary file
|
@@ -1 +0,0 @@
|
|
1
|
-
abc
|
Binary file
|
Binary file
|
Binary file
|
@@ -1 +0,0 @@
|
|
1
|
-
|
@@ -1 +0,0 @@
|
|
1
|
-
|
@@ -1 +0,0 @@
|
|
1
|
-
|
@@ -1 +0,0 @@
|
|
1
|
-
|
Binary file
|
Binary file
|
Binary file
|
@@ -1 +0,0 @@
|
|
1
|
-
����
|
Binary file
|
@@ -1 +0,0 @@
|
|
1
|
-
|
Binary file
|
@@ -1 +0,0 @@
|
|
1
|
-
|
@@ -1 +0,0 @@
|
|
1
|
-
String . String
|
Binary file
|
@@ -1 +0,0 @@
|
|
1
|
-
foo
|
@@ -1 +0,0 @@
|
|
1
|
-
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/spec/rack/request_spec.rb
DELETED
data/spec/rack/response_spec.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
|
-
require 'rack/amf'
|
3
|
-
require 'rack/amf/response'
|
4
|
-
|
5
|
-
describe Rack::AMF::Response do
|
6
|
-
it "should serialize response when converted to string" do
|
7
|
-
response = Rack::AMF::Response.new(create_rack_request('commandMessage.bin'))
|
8
|
-
response.raw_response.should_receive(:serialize).and_return('serialized')
|
9
|
-
response.to_s.should == 'serialized'
|
10
|
-
end
|
11
|
-
|
12
|
-
it "should respond to ping command" do
|
13
|
-
response = Rack::AMF::Response.new(create_rack_request('commandMessage.bin'))
|
14
|
-
response.each_method_call {|method, args| nil}
|
15
|
-
|
16
|
-
r = response.raw_response
|
17
|
-
r.messages.length.should == 1
|
18
|
-
r.messages[0].data.should be_a(AMF::Values::AcknowledgeMessage)
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should handle RemotingMessages properly" do
|
22
|
-
response = Rack::AMF::Response.new(create_rack_request('remotingMessage.bin'))
|
23
|
-
|
24
|
-
response.each_method_call do |method, args|
|
25
|
-
method.should == 'WritesController.save'
|
26
|
-
args.should == [true]
|
27
|
-
true
|
28
|
-
end
|
29
|
-
|
30
|
-
r = response.raw_response
|
31
|
-
r.messages.length.should == 1
|
32
|
-
r.messages[0].data.should be_a(AMF::Values::AcknowledgeMessage)
|
33
|
-
r.messages[0].data.body.should == true
|
34
|
-
end
|
35
|
-
|
36
|
-
it "should catch exceptions properly" do
|
37
|
-
response = Rack::AMF::Response.new(create_rack_request('remotingMessage.bin'))
|
38
|
-
response.each_method_call do |method, args|
|
39
|
-
raise 'Error in call'
|
40
|
-
end
|
41
|
-
|
42
|
-
r = response.raw_response
|
43
|
-
r.messages.length.should == 1
|
44
|
-
r.messages[0].data.should be_a(AMF::Values::ErrorMessage)
|
45
|
-
r.messages[0].target_uri.should =~ /onStatus$/
|
46
|
-
end
|
47
|
-
end
|