2012-10-22 16 views
7

Kiedy mogę się zalogować do mojego app serwer wysyła mnie z powrotem cookies (poświadczeń i niektórych aplikacji cookie):Testowanie Response z rspec V.1

Response sent 170 bytes of Cookie data: 
Set-Cookie: user_credentials=val; path=/; HttpOnly; Secure 

Response sent 554 bytes of Cookie data: 
Set-Cookie: _app_session=otherVal; path=/; HttpOnly; Secure 

... a następnie przekierowuje do strony głównej;

Pliki cookie obejmują niektóre flagi: np. httpOnly, Secure, itp.

Jak mogę sprawdzić, czy pliki cookie zawierają te flagi z Rspec?

Co najmniej gdzie mogę znaleźć te pliki cookie?

it "should generate cookies with proper flags" do  
    params = Factory.attributes_for(:user, 
     :username => "uname", 
     :password => "upass" 
    ) 
    # login 
    post 'create', params 

    response.should redirect_to home_url # => pass 

    puts "response cookie = #{response.cookies.inspect}" # => {} // no cookies in response, why? 
end 

Odpowiedz

6

specyfikacje Controller nie generują/wywołać prawdziwe żądań HTTP, po prostu skonfigurować kontroler badanego i wywołać żądany działania na nim. Nie jest wykonywane żądanie http i generowana jest odpowiedź http http: //www.http://www.google.com/support/library/default.html. Możesz więc przetestować wewnętrzne działanie kontrolera Rails na bardziej abstrakcyjnym poziomie.

Manipulacja cookies w tych specyfikacji jest raczej prosty, ustawienie cookies w działaniu jak ten:

def set_cookies 
    cookies[:foo] = 'bar' 
    cookies[:lorem] = {:value => 'ipsum', :expires => 3.days.from_now} 

    render :nothing => true 
end 

wyniki w następujących wartości podane w specyfikacji:

it "should set some cookie values" do 
    get :set_cookies 

    # response.cookies looks like this: 
    # {'foo' => 'bar', 'lorem' => 'ipsum'}  

    response.cookies['foo'].should == 'bar' 
    response.cookies['lorem'].should == 'ipsum' 
end 

Aby przetestować ten rodzaj o flagach plików cookie, które widzisz w swoich odpowiedziach, musiałbyś użyć czegoś, co wymaga autentycznychhttp. Może możesz użyć do tego klejnotu kapibara?

+0

Hmm ... w rzeczywistości 'kapibara' jest poza zakresem mojej pracy, ale nadal dziękuję; – ted

+0

W jaki sposób są konfigurowane pliki cookie? Czy robisz to w kontrolerze? – severin

+0

jeden z nich jest ustawiany przez klejnot "Authlogic", a inny przez "ActionController" wierzę, – ted

Powiązane problemy