2013-04-26 9 views
9

Piszę niektóre testy jednostkowe dla mojej aplikacji internetowej Flask i próbuję przetestować różnice w odpowiedzi między żądaniem złożonym przez anonimowego użytkownika a zalogowanym w użytkowniku.test jednostki kolb: jak przetestować żądanie od zalogowanego użytkownika

Używam rozszerzenia Flask-Login do implementacji logowania/wylogowania użytkownika.

Oczywiście jestem w stanie wykonać anonimowe żądanie, ale w jaki sposób mogę zasymulować żądanie od zalogowanego użytkownika?

Myślałem, że wystarczy wysłać nagłówki pliku cookie session, ale to nie działa.

headers = Headers({'Cookie':['WEBSITE_ID=%s; Domain=adsabs.harvard.edu; expires=Thu, 25-Apr-2213 16:53:22 GMT; Path=/' % cookie_value, 
          'WEBSITE_ID=%s; Domain=.adsabs.harvard.edu; expires=Thu, 25-Apr-2213 16:53:22 GMT; Path=/' % cookie_value, 
          'session="A VERY LONG STRING"; Path=/; HttpOnly', 
       ]}) 
rv = app.test_client().get('/', headers=headers) 

Gdzie wartość cookie sesji jest wartością uzyskaną z rzeczywistego logowania w przeglądarce.

Czego mi brakuje?

Odpowiedz

17

Kolba Login szuka user_id w sesji, można ustawić to w testach wykorzystujących session_transaction:

with app.test_client() as c: 
    with c.session_transaction() as sess: 
     sess['user_id'] = 'myuserid' 
     sess['_fresh'] = True # https://flask-login.readthedocs.org/en/latest/#fresh-logins 
    resp = c.get('/someurl') 

Gdzie myuserid jest identyfikator Twojego user object.

+1

Czy wiesz, dlaczego po wysłaniu pliku cookie w żądaniu po modyfikacji sesji aplikacja go nie wyświetla? Czy to dlatego, że kiedy modyfikuję sesję, już wysyłam jakieś nagłówki lub co? –

Powiązane problemy