如何使用黄瓜在sinatra应用程序中测试身份验证?

时间:2012-10-24 00:07:23

标签: ruby authentication cucumber sinatra

我正在编写我的sinatra应用程序的BDD / TDD方法。我想添加身份验证。我目前有一个如下所示的功能文件:

Scenario: Unauthenticated redirects to login page
  Given I am not logged in
  When I go to the homepage
  Then I should be redirected to the login page

我的步骤如下:

Given /^I am not logged in$/ do
  # not sure how to ensure this
end

When /^I go to the homepage$/ do
  visit '/'
end

Then /^I should be redirected to the login page$/ do
  current_path.should == '/auth/login'
end

我已在support/env.rb中设置我的应用:

require 'capybara/cucumber'
Capybara.app = MySintraApp

我的应用程序看起来像这样:

class MySinatraApp < Sinatra::Base
  get '/' do
    redirect '/auth/login' #todo: unless logged_in?
    haml :index
  end

  get '/auth/login' do
    haml :login
  end
end

如何实施确保“未登录”的步骤?我将如何以BDD / TDD风格的方式开始实现登录功能?

1 个答案:

答案 0 :(得分:0)

我检查用户未登录的一种方法是检查页面是否显示“登录”链接/按钮(以及相关功能)。您可以执行相反操作以查看用户是否已登录。例如,用户的名称是否显示在页面的横幅部分中。

这对我来说似乎是最好的方式,因为这是用户如何确定它,而这完全取决于他们的行为。