Rails/Rspec Faire des tests passent avec l'authentification http de base
Ici mon authentification http de base dans le contrôleur de l'application fichier (application_controller.rb)
before_filter :authenticate
protected
def authenticate
authenticate_or_request_with_http_basic do |username, password|
username == "username" && password == "password"
end
end
et le test par défaut pour l'action " index de ma maison contrôleur (spec/controllers/home_controller_spec.rb)
require 'spec_helper'
describe HomeController do
describe "GET 'index'" do
it "should be successful" do
get 'index'
response.should be_success
end
end
Test ne fonctionne pas en raison de la méthode d'authentification. Je pourrais commenter "before_filter :authentifier" pour les exécuter, mais je voudrais savoir si il existe un moyen de les rendre travaillé avec la méthode.
Merci!
Vous devez vous connecter pour publier un commentaire.
Mise à jour (2013): Matt Connolly a fourni un RÉSUMÉ qui fonctionne également pour la demande et le contrôleur spécifications: http://gist.github.com/4158961
Une autre façon de faire cela si vous avez beaucoup de tests à exécuter et ne veulent pas de l'inclure à chaque fois (Sèche-code):
Créer un /spec/support/auth_helper.rb fichier:
Dans votre test dans le fichier de spécification:
De crédit ici
request
estnil
. Au lieu de cela, vous devez créer un env hachageenv = {}
, mise à jour de votre http_login méthode, puis passer dans l'env explicitement comme dansget '/', {}, env
.get '/repp/v1/contacts', { limit: 1, details: true }, { 'HTTP_AUTHORIZATION' => encoded_auth_key }
Désolé, je n'ai pas cherché assez, la solution semble être la suivante:
Quelques réponses suggèrent de définir
request.env
qui est dangereux, parce que la demande peut êtrenil
et vous allez vous retrouver avecprivate method env' called for nil:NilClass
, en particulier lors de l'exécution à un seul test avecrspec -e
Approche correcte sera:
Lors de l'utilisation de la Rspec pour tester de Raisin Api, la syntaxe suivante œuvres
où valid_session est
et
Ce sont d'excellentes solutions pour la manette et de la demande de spécifications.
Pour les tests de fonctionnalités à l'aide de Capybara, voici une solution pour faire de l'authentification HTTP de Base de travail:
spec/support/when_authenticated.rb
Puis, dans votre spec: