rack-amf 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.
- data/README.rdoc +55 -0
- data/Rakefile +54 -0
- data/lib/amf/class_mapping.rb +210 -0
- data/lib/amf/common.rb +28 -0
- data/lib/amf/constants.rb +46 -0
- data/lib/amf/pure/deserializer.rb +353 -0
- data/lib/amf/pure/io_helpers.rb +94 -0
- data/lib/amf/pure/remoting.rb +120 -0
- data/lib/amf/pure/serializer.rb +218 -0
- data/lib/amf/pure.rb +14 -0
- data/lib/amf/values/array_collection.rb +9 -0
- data/lib/amf/values/messages.rb +133 -0
- data/lib/amf/values/typed_hash.rb +13 -0
- data/lib/amf/version.rb +9 -0
- data/lib/amf.rb +17 -0
- data/lib/rack/amf/application.rb +32 -0
- data/lib/rack/amf/request.rb +15 -0
- data/lib/rack/amf/response.rb +54 -0
- data/lib/rack/amf/service_manager.rb +35 -0
- data/lib/rack/amf.rb +17 -0
- data/spec/amf/class_mapping_set_spec.rb +34 -0
- data/spec/amf/class_mapping_spec.rb +109 -0
- data/spec/amf/deserializer_spec.rb +301 -0
- data/spec/amf/remoting_spec.rb +37 -0
- data/spec/amf/serializer_spec.rb +254 -0
- data/spec/amf/values/array_collection_spec.rb +6 -0
- data/spec/amf/values/messages_spec.rb +27 -0
- data/spec/rack/request_spec.rb +5 -0
- data/spec/rack/response_spec.rb +46 -0
- data/spec/rack/service_manager_spec.rb +26 -0
- data/spec/spec_helper.rb +24 -0
- metadata +97 -0
@@ -0,0 +1,27 @@
|
|
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.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"
|
21
|
+
|
22
|
+
it "should extract exception properties correctly" do
|
23
|
+
@message.faultCode.should == 'Exception'
|
24
|
+
@message.faultString.should == 'Error message'
|
25
|
+
@message.faultDetail.should == "Backtrace 1\nBacktrace 2"
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
|
+
require 'rack/amf'
|
3
|
+
|
4
|
+
describe Rack::AMF::Response do
|
5
|
+
it "should serialize response when converted to string" do
|
6
|
+
response = Rack::AMF::Response.new(create_rack_request('commandMessage.bin'))
|
7
|
+
response.raw_response.should_receive(:serialize).and_return('serialized')
|
8
|
+
response.to_s.should == 'serialized'
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should respond to ping command" do
|
12
|
+
response = Rack::AMF::Response.new(create_rack_request('commandMessage.bin'))
|
13
|
+
response.each_method_call {|method, args| nil}
|
14
|
+
|
15
|
+
r = response.raw_response
|
16
|
+
r.messages.length.should == 1
|
17
|
+
r.messages[0].data.should be_a(AMF::Values::AcknowledgeMessage)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should handle RemotingMessages properly" do
|
21
|
+
response = Rack::AMF::Response.new(create_rack_request('remotingMessage.bin'))
|
22
|
+
|
23
|
+
response.each_method_call do |method, args|
|
24
|
+
method.should == 'WritesController.save'
|
25
|
+
args.should == [true]
|
26
|
+
true
|
27
|
+
end
|
28
|
+
|
29
|
+
r = response.raw_response
|
30
|
+
r.messages.length.should == 1
|
31
|
+
r.messages[0].data.should be_a(AMF::Values::AcknowledgeMessage)
|
32
|
+
r.messages[0].data.body.should == true
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should catch exceptions properly" do
|
36
|
+
response = Rack::AMF::Response.new(create_rack_request('remotingMessage.bin'))
|
37
|
+
response.each_method_call do |method, args|
|
38
|
+
raise 'Error in call'
|
39
|
+
end
|
40
|
+
|
41
|
+
r = response.raw_response
|
42
|
+
r.messages.length.should == 1
|
43
|
+
r.messages[0].data.should be_a(AMF::Values::ErrorMessage)
|
44
|
+
r.messages[0].target_uri.should =~ /onStatus$/
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
|
+
require 'rack/amf'
|
3
|
+
|
4
|
+
describe Rack::AMF::ServiceManager do
|
5
|
+
before :each do
|
6
|
+
@manager = Rack::AMF::ServiceManager.new
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should support mapped services" do
|
10
|
+
service = mock "Service"
|
11
|
+
@manager.register('path.Service', service)
|
12
|
+
service.should_receive('respond_to?').with('test').and_return(true)
|
13
|
+
service.should_receive('test').with('arg1', 'arg2').and_return('success')
|
14
|
+
|
15
|
+
@manager.send(:handle_method, 'path.Service.test', ['arg1', 'arg2']).should == 'success'
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should map '' to no path method calls" do
|
19
|
+
service = mock "Service"
|
20
|
+
@manager.register('', service)
|
21
|
+
service.should_receive('respond_to?').with('test').and_return(true)
|
22
|
+
service.should_receive('test').and_return('success')
|
23
|
+
|
24
|
+
@manager.send(:handle_method, 'test', []).should == 'success'
|
25
|
+
end
|
26
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
begin
|
2
|
+
require 'spec'
|
3
|
+
rescue LoadError
|
4
|
+
require 'rubygems'
|
5
|
+
gem 'rspec'
|
6
|
+
require 'spec'
|
7
|
+
end
|
8
|
+
require 'spec/autorun'
|
9
|
+
|
10
|
+
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
11
|
+
require 'amf'
|
12
|
+
|
13
|
+
def request_fixture(binary_path)
|
14
|
+
File.open(File.dirname(__FILE__) + '/fixtures/request/' + binary_path).read
|
15
|
+
end
|
16
|
+
|
17
|
+
def object_fixture(binary_path)
|
18
|
+
File.open(File.dirname(__FILE__) + '/fixtures/objects/' + binary_path).read
|
19
|
+
end
|
20
|
+
|
21
|
+
def create_rack_request(binary_path)
|
22
|
+
env = {'rack.input' => StringIO.new(request_fixture(binary_path))}
|
23
|
+
Rack::AMF::Request.new(env)
|
24
|
+
end
|
metadata
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rack-amf
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Tony Hillerson
|
8
|
+
- Stephen Augenstein
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2009-10-03 00:00:00 -04:00
|
14
|
+
default_executable:
|
15
|
+
dependencies: []
|
16
|
+
|
17
|
+
description:
|
18
|
+
email: perl.programmer@gmail.com
|
19
|
+
executables: []
|
20
|
+
|
21
|
+
extensions: []
|
22
|
+
|
23
|
+
extra_rdoc_files:
|
24
|
+
- README.rdoc
|
25
|
+
files:
|
26
|
+
- README.rdoc
|
27
|
+
- Rakefile
|
28
|
+
- lib/amf/class_mapping.rb
|
29
|
+
- lib/amf/common.rb
|
30
|
+
- lib/amf/constants.rb
|
31
|
+
- lib/amf/pure/deserializer.rb
|
32
|
+
- lib/amf/pure/io_helpers.rb
|
33
|
+
- lib/amf/pure/remoting.rb
|
34
|
+
- lib/amf/pure/serializer.rb
|
35
|
+
- lib/amf/pure.rb
|
36
|
+
- lib/amf/values/array_collection.rb
|
37
|
+
- lib/amf/values/messages.rb
|
38
|
+
- lib/amf/values/typed_hash.rb
|
39
|
+
- lib/amf/version.rb
|
40
|
+
- lib/amf.rb
|
41
|
+
- lib/rack/amf/application.rb
|
42
|
+
- lib/rack/amf/request.rb
|
43
|
+
- lib/rack/amf/response.rb
|
44
|
+
- lib/rack/amf/service_manager.rb
|
45
|
+
- lib/rack/amf.rb
|
46
|
+
- spec/amf/class_mapping_set_spec.rb
|
47
|
+
- spec/amf/class_mapping_spec.rb
|
48
|
+
- spec/amf/deserializer_spec.rb
|
49
|
+
- spec/amf/remoting_spec.rb
|
50
|
+
- spec/amf/serializer_spec.rb
|
51
|
+
- spec/amf/values/array_collection_spec.rb
|
52
|
+
- spec/amf/values/messages_spec.rb
|
53
|
+
- spec/rack/request_spec.rb
|
54
|
+
- spec/rack/response_spec.rb
|
55
|
+
- spec/rack/service_manager_spec.rb
|
56
|
+
- spec/spec_helper.rb
|
57
|
+
has_rdoc: true
|
58
|
+
homepage: http://github.com/warhammerkid/rack-amf
|
59
|
+
licenses: []
|
60
|
+
|
61
|
+
post_install_message:
|
62
|
+
rdoc_options:
|
63
|
+
- --line-numbers
|
64
|
+
- --main
|
65
|
+
- README.rdoc
|
66
|
+
require_paths:
|
67
|
+
- lib
|
68
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: "0"
|
73
|
+
version:
|
74
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: "0"
|
79
|
+
version:
|
80
|
+
requirements: []
|
81
|
+
|
82
|
+
rubyforge_project:
|
83
|
+
rubygems_version: 1.3.5
|
84
|
+
signing_key:
|
85
|
+
specification_version: 3
|
86
|
+
summary: AMF serializer/deserializer and AMF gateway packaged as a rack middleware
|
87
|
+
test_files:
|
88
|
+
- spec/amf/class_mapping_set_spec.rb
|
89
|
+
- spec/amf/class_mapping_spec.rb
|
90
|
+
- spec/amf/deserializer_spec.rb
|
91
|
+
- spec/amf/remoting_spec.rb
|
92
|
+
- spec/amf/serializer_spec.rb
|
93
|
+
- spec/amf/values/array_collection_spec.rb
|
94
|
+
- spec/amf/values/messages_spec.rb
|
95
|
+
- spec/rack/request_spec.rb
|
96
|
+
- spec/rack/response_spec.rb
|
97
|
+
- spec/rack/service_manager_spec.rb
|