2013-01-09 54 views
0

我有以下RSpec的代碼來測試二進制文件的上傳和下載的二進制文件。我知道我可以檢查「內涵式」來驗證文件是否正確上傳和下載。但是,如何根據以下內容運行MD5,以確保它們實際上是相同的文件。測試Sinatra的上傳和使用Rspec的

it "should upload a file" do 
    file = Rack::Test::UploadedFile.new("./HelloWorld.bin", "application/octet-stream") 
    json = {:md5sum => "0cd74c7a3cf2207ffd68d43177681e6b", :config => "./testconfig.yaml"}.to_json 

    post "/upload", :json => json, :file => file 
    last_response.should be_ok 
    (JSON.parse(last_response.body)["status"]).should be_true 
    (JSON.parse(last_response.body)["filename"]).should eq("HelloWorld.bin") 
end 

it "download a file successfully" do 
    filename = "HelloWorld.bin" 
    get '/download/' + filename 
    last_response.should be_ok 
    last_response.headers['Content-Type'].should eq "application/octet-stream" 
end 

能否'last_response.body'被指定爲在得到一個二進制文件 '/下載'

+0

請將您的一些問題標記爲已回答。 – sunnyrjuneja

回答

0

由於last_response.body是一個字符串,你總是可以直接在一根繩子上運行MD5校驗。

(Digest::MD5.hexdigest(last_response.body)).should eq ("a1cba6369d668ed0ae5e97658c30979a")