media-scientific - IT Blog

the backend developers blog

Rails - Testen ob Cookies aktiviert sind…

Vorlesen mit webReader

Bei dem Aufrauf einer herkömmlichen Webseite die mit Rails entwicklet wurde, treten keine Probleme auf, wenn der User Cookies deaktiviert hat.

Sobald jedoch das authenticity-Token eine Rolle Spielt (beispielsweise bei Formularen), wird eine Exception ausgelöst, da das erforderliche Token nicht erfolgreich validiert werden konnte.

Nun gilt es zu prüfen, ob Cookies aktiviert sind und ggf. den User darüber zu informieren.

Dies kann Applikationsweit über den ApplicationController durchgeführt werden:

def set_test_cookie
    cookies[:cookies_allowed] = {
    :value => 'OK',
    :expires => 2.hours.from_now
    }
 end

Nun muss nur noch im betroffenen Controller der before_filter auf :set_test_cookie gesetzt werden und in der gewünschten Action geprüft werden, ob der Cookie “cookies_allowed” auch den Wert “true” besitzt. Ist der Inhalt des Cookie ungleich “true”, kann eine entsprechende Fehlermeldung ausgegeben werden und der Zugriff auf die betroffene Action verwährt werden. Zum Beispiel so:

if not cookies[:cookies_allowed].eql?(”OK”)
      flash[:alert] = “Sie müssen Cookies zulassen!”
      render :action => 'index' and return
end

Um dieses Verhalten auch in den functional-Testst berücksichtigen zu können, muss der Cookie vor dem post oder get im jeweiligem Test gesetzt werden.

test "irgend ein test" do
    @request.cookies['cookies_allowed'] = “OK”
    get :method, :id => 784548
    assert_response 302
    assert_redirected_to :action => "index"
  end

Leave a Reply

You must be logged in to post a comment.