diff options
| -rw-r--r-- | lib/puppet/network/http/handler.rb | 8 | ||||
| -rw-r--r-- | lib/puppet/network/http/mongrel/rest.rb | 5 | ||||
| -rw-r--r-- | lib/puppet/network/http/webrick/rest.rb | 4 | ||||
| -rw-r--r-- | spec/unit/network/http/mongrel/rest.rb | 27 | ||||
| -rw-r--r-- | spec/unit/network/server.rb | 6 |
5 files changed, 44 insertions, 6 deletions
diff --git a/lib/puppet/network/http/handler.rb b/lib/puppet/network/http/handler.rb index 1f63024d6..0d4be3a8d 100644 --- a/lib/puppet/network/http/handler.rb +++ b/lib/puppet/network/http/handler.rb @@ -20,12 +20,12 @@ class Puppet::Network::HTTP::Handler def do_find(request, response) key = request_key(request) || raise(ArgumentError, "Could not locate lookup key in request path [#{path}]") args = params(request) - @model.find(key, args) + encode_result(request, response, @model.find(key, args)) end def do_search(request, response) args = params(request) - @model.search(args) + encode_result(request, response, @model.search(args)) end def do_destroy(request, response) @@ -91,4 +91,8 @@ class Puppet::Network::HTTP::Handler def params(request) raise NotImplementedError end + + def encode_result(request, response, result) + raise NotImplementedError + end end diff --git a/lib/puppet/network/http/mongrel/rest.rb b/lib/puppet/network/http/mongrel/rest.rb index d87f9c733..0d29a822e 100644 --- a/lib/puppet/network/http/mongrel/rest.rb +++ b/lib/puppet/network/http/mongrel/rest.rb @@ -28,4 +28,9 @@ class Puppet::Network::HTTP::MongrelREST < Puppet::Network::HTTP::Handler def params(request) Mongrel::HttpRequest.query_parse(request.params["QUERY_STRING"]) end + + def encode_result(request, response, result) + response.start(200) do |head, body| + end + end end diff --git a/lib/puppet/network/http/webrick/rest.rb b/lib/puppet/network/http/webrick/rest.rb index 33b1ad8dc..1475ed781 100644 --- a/lib/puppet/network/http/webrick/rest.rb +++ b/lib/puppet/network/http/webrick/rest.rb @@ -33,4 +33,8 @@ class Puppet::Network::HTTP::WEBrickREST < Puppet::Network::HTTP::Handler def params(request) request.query end + + def encode_result(request, response, result) + result + end end
\ No newline at end of file diff --git a/spec/unit/network/http/mongrel/rest.rb b/spec/unit/network/http/mongrel/rest.rb index 7df63db14..f5bb867f7 100644 --- a/spec/unit/network/http/mongrel/rest.rb +++ b/spec/unit/network/http/mongrel/rest.rb @@ -56,6 +56,7 @@ describe Puppet::Network::HTTP::MongrelREST, "when receiving a request" do before do @mock_request = mock('mongrel http request') @mock_response = mock('mongrel http response') + @mock_response.stubs(:start) @mock_model_class = mock('indirected model class') Puppet::Indirector::Indirection.stubs(:model).with(:foo).returns(@mock_model_class) @mock_mongrel = mock('mongrel http server') @@ -176,13 +177,35 @@ describe Puppet::Network::HTTP::MongrelREST, "when receiving a request" do @handler.process(@mock_request, @mock_response) end - it "should generate a 200 response when a model find call succeeds" - it "should generate a 200 response when a model search call succeeds" + it "should generate a 200 response when a model find call succeeds" do + @mock_request.stubs(:params).returns({ Mongrel::Const::REQUEST_METHOD => 'GET', + Mongrel::Const::REQUEST_PATH => '/foo/key', + 'QUERY_STRING' => ''}) + @mock_model_class.stubs(:find) + @mock_response.expects(:start).with(200) + @handler.process(@mock_request, @mock_response) + end + + it "should generate a 200 response when a model search call succeeds" do + @mock_request.stubs(:params).returns({ Mongrel::Const::REQUEST_METHOD => 'GET', + Mongrel::Const::REQUEST_PATH => '/foos', + 'QUERY_STRING' => ''}) + @mock_model_class.stubs(:search) + @mock_response.expects(:start).with(200) + @handler.process(@mock_request, @mock_response) + end + it "should generate a 200 response when a model destroy call succeeds" + it "should generate a 200 response when a model save call succeeds" + it "should return a serialized object when a model find call succeeds" + it "should return a list of serialized object matches when a model search call succeeds" + it "should return a serialized success result when a model destroy call succeeds" + it "should return a serialized success result when a model save call succeeds" + it "should serialize a controller exception when an exception is thrown by the handler" end diff --git a/spec/unit/network/server.rb b/spec/unit/network/server.rb index 97ab4443a..48626fe43 100644 --- a/spec/unit/network/server.rb +++ b/spec/unit/network/server.rb @@ -278,5 +278,7 @@ describe Class.new, "put these somewhere" do it "should deny access to clients based upon rules" end - - +describe Puppet::Indirector, "stuff required by HTTP servers" do + it "should provide the model with the ability to serialize to XML" + it "should provide the model with the ability to deserialize from XML" +end |
