spec/functional/resource/remote_file_spec.rb in microwave-1.0.4 vs spec/functional/resource/remote_file_spec.rb in microwave-11.400.2
- old
+ new
@@ -22,11 +22,17 @@
describe Chef::Resource::RemoteFile do
include_context Chef::Resource::File
let(:file_base) { "remote_file_spec" }
let(:source) { 'http://localhost:9000/nyan_cat.png' }
- let(:expected_content) { IO.read(File.join(CHEF_SPEC_DATA, 'remote_file', 'nyan_cat.png')) }
+ let(:expected_content) do
+ content = File.open(File.join(CHEF_SPEC_DATA, 'remote_file', 'nyan_cat.png'), "rb") do |f|
+ f.read
+ end
+ content.force_encoding(Encoding::BINARY) if content.respond_to?(:force_encoding)
+ content
+ end
def create_resource
node = Chef::Node.new
events = Chef::EventDispatch::Dispatcher.new
run_context = Chef::RunContext.new(node, {}, events)
@@ -37,22 +43,41 @@
let!(:resource) do
create_resource
end
+ let(:default_mode) do
+ # TODO: Lots of ugly here :(
+ # RemoteFile uses FileUtils.cp. FileUtils does a copy by opening the
+ # destination file and writing to it. Before 1.9.3, it does not preserve
+ # the mode of the copied file. In 1.9.3 and after, it does. So we have to
+ # figure out what the default mode ought to be via heuristic.
+
+ t = Tempfile.new("get-the-mode")
+ path = t.path
+ path_2 = t.path + "fileutils-mode-test"
+ FileUtils.cp(path, path_2)
+ t.close
+ m = File.stat(path_2).mode
+ (07777 & m).to_s(8)
+ end
+
before(:all) do
- Thin::Logging.silent = false
@server = TinyServer::Manager.new
@server.start
@api = TinyServer::API.instance
@api.clear
@api.get("/nyan_cat.png", 200) {
- IO.read(File.join(CHEF_SPEC_DATA, 'remote_file', 'nyan_cat.png'))
+ File.open(File.join(CHEF_SPEC_DATA, 'remote_file', 'nyan_cat.png'), "rb") do |f|
+ f.read
+ end
}
end
after(:all) do
@server.stop
end
it_behaves_like "a file resource"
+
+ it_behaves_like "a securable resource with reporting"
end