Skip to content

Instantly share code, notes, and snippets.

@sauloarruda
Created March 15, 2010 18:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sauloarruda/333167 to your computer and use it in GitHub Desktop.
Save sauloarruda/333167 to your computer and use it in GitHub Desktop.
# language: pt
Funcionalidade: Autenticar Usuário
Para acesso à área administrativa do sistema
Como visitante
Quero autenticar com um usuário já cadastrado
Cenário: Autenticação com sucesso
Dado que estou na página de autenticação
Quando digito "25757687649" no campo "CPF"
E digito "secret" no campo "Senha"
E clico no botão "Entrar"
Então vejo o texto "Jose das Couves" na tela
Cenário: CPF inválido
Dado que estou na página de autenticação
Quando digito "11111111111" no campo "CPF"
E digito "secret" no campo "Senha"
E clico no botão "Entrar"
Então vejo o texto "CPF inválido" na tela
Cenário: Senha inválida
Dado que estou na página de autenticação
Quando digito "25757687649" no campo "CPF"
E digito "incorreta" no campo "Senha"
E clico no botão "Entrar"
Então vejo o texto "Senha inválida" na tela
Cenário: CPF não cadastrado
Dado que estou na página de autenticação
Quando digito "68300828389" no campo "CPF"
E digito "secret" no campo "Senha"
E clico no botão "Entrar"
Então vejo o texto "CPF não cadastrado" na tela
Cenário: CPF mascarado
Dado que estou na página de autenticação
Quando digito "257.576.876-49" no campo "CPF"
E digito "secret" no campo "Senha"
E clico no botão "Entrar"
Então vejo o texto "Jose das Couves" na tela
Cenário: CPF em branco
Dado que estou na página de autenticação
Quando digito "" no campo "CPF"
E digito "" no campo "Senha"
E clico no botão "Entrar"
Então vejo o texto "CPF inválido" na tela
# RSpec
require 'spec/expectations'
# Webrat
require 'webrat'
require 'rubygems'
gem 'mechanize', '= 0.9.0'
require 'test/unit/assertions'
World(Test::Unit::Assertions)
Webrat.configure do |config|
config.mode = :mechanize
end
World do
session = Webrat::Session.new
session.extend(Webrat::Methods)
session.extend(Webrat::Matchers)
session
end
# Helper method for running shell commands
def run(command, verbose = false, message = nil)
if verbose then
puts "#{message}"
puts command
result = `#{command}`
puts result
return result
else
`#{command}`
end
end
module Webrat
# For some reason we are getting duplicated GET params on the current_url, so monkeypatch to fix it
class Link
def absolute_href
if href =~ /^\?/
"#{@session.current_url.gsub(/\?.*/,"")}#{href}"
elsif href !~ %r{^https?://} && (href !~ /^\//)
"#{@session.current_url}/#{href}"
else
href
end
end
end
# For extra debug info we monkeypatch this in
module Locators
class Locator # :nodoc:
def locate!
locate || raise(NotFoundError.new(error_message))
rescue Webrat::NotFoundError => e
filepath = '/tmp/webrat_debug.html'
File.open(filepath, "w") do |file|
file.puts @session.send(:response_body)
end
raise "#{e.message}\n#{@session.send(:response_body).gsub(/\n/, "\n ")}\nURL: #{@session.current_url}\nResponse saved: #{filepath}"
end
end
end
end
module NavigationHelpers
def path_to(page_name)
"http://cucumber.local" +
case page_name
when /anúncio/
'/anuncio'
when /autenticação/
'/login'
else
raise "Can't find mapping from \"#{page_name}\" to a path.\n" +
"Now, go and add a mapping in #{__FILE__}"
end
end
def field_for(field_name)
case field_name
when /Ano\/Modelo/
'ano_modelo'
else
field_name
end
end
def button_for(button_name)
case button_name
when ''
raise 'Digite um nome para o botão'
else
button_name
end
end
end
World(NavigationHelpers)
require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths"))
# Commonly used webrat steps
# http://github.com/brynary/webrat
Given /^Debug$/ do
puts response_body
filepath = '/tmp/webrat_debug.html'
File.open(filepath, "w") do |file|
file.puts response_body
end
raise "Debugged! Current URL: #{current_url}\nResponse saved: #{filepath}"
end
Given /^que(?: eu)* estou na página(?: de) (.+)$/ do |page_name|
visit path_to(page_name)
end
When /^clico no botão "([^\"]*)"$/ do |button|
click_button(button_for(button))
end
When /^digito "([^\"]*)" no campo "([^\"]*)"$/ do |value, field|
fill_in(field_for(field), :with => value)
end
When /^escolho "([^\"]*)" no campo "([^\"]*)"$/ do |value, field|
select(value, :from => field_for(field))
end
When /^escolho o arquivo "([^\"]*)" para o campo "([^\"]*)"$/ do |path, field|
attach_file(field_for(field), path)
end
Then /^vejo o texto "(.*)" na tela$/ do |text|
assert !!(response_body =~ /#{Regexp.escape text}/m), response_body
end
Then /^recebo o aviso "([^\"]*)"$/ do |alert|
pending # express the regexp above with the code you wish you had
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment