diff options
-rw-r--r-- | lib/puppet/file_serving/content.rb | 16 | ||||
-rw-r--r-- | lib/puppet/network/http/mongrel/rest.rb | 2 | ||||
-rw-r--r-- | lib/puppet/network/http/webrick/rest.rb | 2 | ||||
-rwxr-xr-x | spec/unit/file_serving/content.rb | 12 | ||||
-rwxr-xr-x | spec/unit/network/http/mongrel/rest.rb | 6 | ||||
-rwxr-xr-x | spec/unit/network/http/webrick/rest.rb | 6 |
6 files changed, 34 insertions, 10 deletions
diff --git a/lib/puppet/file_serving/content.rb b/lib/puppet/file_serving/content.rb index f13fcaa72..b30070dd6 100644 --- a/lib/puppet/file_serving/content.rb +++ b/lib/puppet/file_serving/content.rb @@ -14,9 +14,19 @@ class Puppet::FileServing::Content < Puppet::FileServing::Base extend Puppet::Indirector indirects :file_content, :extend => Puppet::FileServing::IndirectionHooks - attr_reader :path + def self.supported_formats + [:raw] + end + + def self.from_raw(content) + instance = new("eh") + instance.content = content + instance + end + # Collect our data. def collect + content end # Read the content of our file in. @@ -29,4 +39,8 @@ class Puppet::FileServing::Content < Puppet::FileServing::Base end @content end + + def to_raw + content + end end diff --git a/lib/puppet/network/http/mongrel/rest.rb b/lib/puppet/network/http/mongrel/rest.rb index d265dde86..45d21ea62 100644 --- a/lib/puppet/network/http/mongrel/rest.rb +++ b/lib/puppet/network/http/mongrel/rest.rb @@ -35,7 +35,7 @@ class Puppet::Network::HTTP::MongrelREST < Mongrel::HttpHandler # return the key included in the request path def request_key(request) # LAK:NOTE See http://snurl.com/21zf8 [groups_google_com] - x = request.params[Mongrel::Const::REQUEST_PATH].split('/')[2] + x = request.params[Mongrel::Const::REQUEST_PATH].split('/', 3)[2] end # return the request body diff --git a/lib/puppet/network/http/webrick/rest.rb b/lib/puppet/network/http/webrick/rest.rb index 13f795fb2..f06914365 100644 --- a/lib/puppet/network/http/webrick/rest.rb +++ b/lib/puppet/network/http/webrick/rest.rb @@ -36,7 +36,7 @@ class Puppet::Network::HTTP::WEBrickREST < WEBrick::HTTPServlet::AbstractServlet def request_key(request) # LAK:NOTE See http://snurl.com/21zf8 [groups_google_com] - x = request.path.split('/')[2] + x = request.path.split('/', 3)[2] end def body(request) diff --git a/spec/unit/file_serving/content.rb b/spec/unit/file_serving/content.rb index a63f7efab..5441dff53 100755 --- a/spec/unit/file_serving/content.rb +++ b/spec/unit/file_serving/content.rb @@ -28,7 +28,8 @@ describe Puppet::FileServing::Content do File.stubs(:lstat).returns(stub("stat", :ftype => "file")) File.expects(:read).with("/path").returns result content.collect - content.content.should equal(result) + + content.instance_variable_get("@content").should_not be_nil end end @@ -58,4 +59,13 @@ describe Puppet::FileServing::Content, "when returning the contents" do File.expects(:read).with(@path).returns(:mycontent) @content.content.should == :mycontent end + + it "should cache the returned contents" do + File.expects(:stat).with(@path).returns stub("stat", :ftype => "file") + File.expects(:read).with(@path).returns(:mycontent) + @content.content + + # The second run would throw a failure if the content weren't being cached. + @content.content + end end diff --git a/spec/unit/network/http/mongrel/rest.rb b/spec/unit/network/http/mongrel/rest.rb index 3b248dcfe..9dbc1c9ab 100755 --- a/spec/unit/network/http/mongrel/rest.rb +++ b/spec/unit/network/http/mongrel/rest.rb @@ -53,9 +53,9 @@ describe "Puppet::Network::HTTP::MongrelREST" do @handler.path(@request).should == "/foo" end - it "should use the second part of the request path as the request key" do - @params.expects(:[]).with(Mongrel::Const::REQUEST_PATH).returns "/foo/bar" - @handler.request_key(@request).should == "bar" + it "should use the remainder of the request path as the request key" do + @params.expects(:[]).with(Mongrel::Const::REQUEST_PATH).returns "/foo/bar/baz" + @handler.request_key(@request).should == "bar/baz" end it "should return nil as the request key if no second field is present" do diff --git a/spec/unit/network/http/webrick/rest.rb b/spec/unit/network/http/webrick/rest.rb index 620201472..1f4ccbe29 100755 --- a/spec/unit/network/http/webrick/rest.rb +++ b/spec/unit/network/http/webrick/rest.rb @@ -47,9 +47,9 @@ describe Puppet::Network::HTTP::WEBrickREST do @handler.path(@request).should == "/foo" end - it "should return the second field in the path as the request key" do - @request.expects(:path).returns "/foo/bar" - @handler.request_key(@request).should == "bar" + it "should return the remainder of the path as the request key" do + @request.expects(:path).returns "/foo/bar/baz" + @handler.request_key(@request).should == "bar/baz" end it "should return nil as the request key if there is no second field" do |