9 @req = {:msgtime => Time.now,
10 :senderid => "spec test",
11 :requestid => "12345",
14 @req[:body] = {:action => "test",
15 :data => {:foo => "bar", :process_results => true},
18 @ddl = DDL.new("rspec", :agent, false)
20 @request = Request.new(@req, @ddl)
23 describe "#validate!" do
24 it "should validate the request using the supplied DDL" do
25 @ddl.expects(:validate_rpc_request).with("test", {:foo => "bar", :process_results => true})
30 describe "#initialize" do
31 it "should set time" do
32 @request.time.should == @req[:msgtime]
35 it "should set action" do
36 @request.action.should == "test"
39 it "should set data" do
40 @request.data.should == {:foo => "bar", :process_results => true}
43 it "should set sender" do
44 @request.sender.should == "spec test"
47 it "should set agent" do
48 @request.agent.should == "tester"
51 it "should set uniqid" do
52 @request.uniqid.should == "12345"
55 it "should set caller" do
56 @request.caller.should == "rip"
59 it "should set unknown caller if none is supplied" do
60 @req.delete(:callerid)
61 Request.new(@req, @ddl).caller.should == "unknown"
65 describe "#include?" do
66 it "should correctly report on hash contents" do
67 @request.include?(:foo).should == true
70 it "should return false for non hash data" do
71 @req[:body][:data] = "foo"
72 Request.new(@req, @ddl).include?(:foo).should == false
76 describe "#should_respond?" do
77 it "should return true if the header is absent" do
78 @req[:body][:data].delete(:process_results)
79 Request.new(@req, @ddl).should_respond?.should == true
82 it "should return correct value" do
83 @req[:body][:data][:process_results] = false
84 Request.new(@req, @ddl).should_respond?.should == false
89 it "should return nil for non hash data" do
90 @req[:body][:data] = "foo"
91 Request.new(@req, @ddl)["foo"].should == nil
94 it "should return correct data" do
95 @request[:foo].should == "bar"
98 it "should return nil for absent data" do
99 @request[:bar].should == nil
104 it "should return nil for non hash data" do
105 @req[:body][:data] = "foo"
106 Request.new(@req, @ddl)["foo"].should == nil
109 it "should fetch data with the correct default behavior" do
110 @request.fetch(:foo, "default").should == "bar"
111 @request.fetch(:rspec, "default").should == "default"
115 describe "#to_hash" do
116 it "should have the correct keys" do
117 @request.to_hash.keys.sort.should == [:action, :agent, :data]
120 it "should return the correct agent" do
121 @request.to_hash[:agent].should == "tester"
124 it "should return the correct action" do
125 @request.to_hash[:action].should == "test"
128 it "should return the correct data" do
129 @request.to_hash[:data].should == {:foo => "bar",
130 :process_results => true}