你如何在Sinatra中指定一个摘要?

时间:2012-07-17 22:34:59

标签: ruby authentication rspec sinatra digest-authentication

我有一个digest auth设置,就像sinatrarb网站上的例子一样。

#config.ru
require './main'

app = Rack::Auth::Digest::MD5.new(Sinatra::Application) do |username|
  {'foo' => 'bar'}[username]
end
app.realm = 'Protected Area'
app.opaque = 'secretkey'

run app

我想知道是否有人知道如何或可以指向我指导这个。 感谢。

1 个答案:

答案 0 :(得分:4)

Sinatra FAQ有一个使用Test :: Unit和Basic Auth的例子。我从来没有将RSpec与Sinatra一起使用,但是从Test :: Unit中翻译这个例子应该很容易。

即使示例使用Basic Auth,Digest Auth也可以采用相同的方式进行测试。唯一的区别是你需要使用Rack :: Test的digest_authorize方法。例如,FAQ中的最后一个测试将成为:

def test_with_proper_credentials
  digest_authorize 'admin', 'admin'
  get '/protected'
  assert_equal 200, last_response.status
  assert_equal "You're welcome", last_response.body
end