Rails - Testen ob Cookies aktiviert sind…
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.