2010-05-12 18 views
1

Je dois tester un système de connexion en deux étapes qui vous demande d'abord votre adresse e-mail et votre mot de passe, puis présente à l'utilisateur deux listes de sélection contenant [a-zA-Z0-9]. Les étiquettes à côté de la liste déroulante sont de la forme «Sélectionner le caractère X de votre phrase de sécurité», où X est un index de caractères aléatoires d'une phrase de sécurité connue. Je préfèrerais ne pas remplacer le code pour un test d'acceptation, donc est-il possible d'écrire un matcher dans le concombre qui, étant donné que nous connaissons la phrase entière, sélectionne le caractère requis dans chacune des deux listes?Comment puis-je tester un formulaire qui nécessite l'entrée de deux caractères aléatoires dans une phrase de sécurité?

Voici le scénario que j'ai à ce jour et les étapes:

Scenario: valid login email, password and secret phrase takes me to the dashboard 
    Given I am not logged in 
    When I log in as "[email protected]" 
    Then I should be on the dashboard page 
    And I should see "Your Dashboard" 

When /^I log in as "([^\"]*)"$/ do |login| 
    visit path_to('Login page') 
    fill_in "Email", :with => login 
    fill_in "Password", :with => "Password123" 
    click_button "Log in" 
    response.should contain("Please verify some characters from your security phrase") 
    select "a", :from => "Select character X of your security phrase" 
    select "b", :from => "Select character Y of your security phrase" 
    click_button "Submit" 
end 

Par exemple, si l'expression de sécurité est « Secret123 », X = 3 et Y = 8, mentionnée plus haut devront produire l'équivalent de:

select "c", :from => "Select character 3 of your security phrase" 
select "2", :from => "Select character 8 of your security phrase" 

les nombres X et Y dans la page réelle est portée à l'intérieur # svc_1 et la durée # svc_2 respectivement.

Merci,

Répondre

1

Après beaucoup de vous embêter j'ai finalement compris. Documenter ici pour aider quelqu'un d'autre dans la même situation. En general_steps.rb:

When /^I log in as "([^\"]*)"$/ do |email| 
    visit path_to('Login page') 
    fill_in "Email", :with => email 
    fill_in "Password", :with => "password" 
    click_button "Log in" 
    response.should contain("Please verify some characters from your secret phrase") 
    select_correct_secret_phrase_char("span#sec_1") 
    select_correct_secret_phrase_char("span#sec_2") 
    click_button "Submit" 
end 

def select_correct_secret_phrase_char(css_selector) 
    response.should have_selector(css_selector) do |scope| 
    select "Secret1"[(scope.text.to_i)-1].chr, :from => "Select character #{scope.text} of your security phrase" 
    end 
end