Home | History | Annotate | Download | only in tests
      1 # -*- coding: utf-8 -*-
      2 import webapp2
      3 from webapp2_extras import sessions
      4 from webapp2_extras import sessions_memcache
      5 
      6 import test_base
      7 
      8 
      9 app = webapp2.WSGIApplication(config={
     10     'webapp2_extras.sessions': {
     11         'secret_key': 'my-super-secret',
     12     },
     13 })
     14 
     15 
     16 class TestMemcacheSession(test_base.BaseTestCase):
     17     #factory = sessions_memcache.MemcacheSessionFactory
     18 
     19     def test_get_save_session(self):
     20 
     21         # Round 1 -------------------------------------------------------------
     22 
     23         req = webapp2.Request.blank('/')
     24         req.app = app
     25         store = sessions.SessionStore(req)
     26 
     27         session = store.get_session(backend='memcache')
     28 
     29         rsp = webapp2.Response()
     30         # Nothing changed, we want to test anyway.
     31         store.save_sessions(rsp)
     32 
     33         session['a'] = 'b'
     34         session['c'] = 'd'
     35         session['e'] = 'f'
     36 
     37         store.save_sessions(rsp)
     38 
     39         # Round 2 -------------------------------------------------------------
     40 
     41         cookies = rsp.headers.get('Set-Cookie')
     42         req = webapp2.Request.blank('/', headers=[('Cookie', cookies)])
     43         req.app = app
     44         store = sessions.SessionStore(req)
     45 
     46         session = store.get_session(backend='memcache')
     47         self.assertEqual(session['a'], 'b')
     48         self.assertEqual(session['c'], 'd')
     49         self.assertEqual(session['e'], 'f')
     50 
     51         session['g'] = 'h'
     52 
     53         rsp = webapp2.Response()
     54         store.save_sessions(rsp)
     55 
     56         # Round 3 -------------------------------------------------------------
     57 
     58         cookies = rsp.headers.get('Set-Cookie')
     59         req = webapp2.Request.blank('/', headers=[('Cookie', cookies)])
     60         req.app = app
     61         store = sessions.SessionStore(req)
     62 
     63         session = store.get_session(backend='memcache')
     64         self.assertEqual(session['a'], 'b')
     65         self.assertEqual(session['c'], 'd')
     66         self.assertEqual(session['e'], 'f')
     67         self.assertEqual(session['g'], 'h')
     68 
     69     def test_flashes(self):
     70 
     71         # Round 1 -------------------------------------------------------------
     72 
     73         req = webapp2.Request.blank('/')
     74         req.app = app
     75         store = sessions.SessionStore(req)
     76 
     77         session = store.get_session(backend='memcache')
     78         flashes = session.get_flashes()
     79         self.assertEqual(flashes, [])
     80         session.add_flash('foo')
     81 
     82         rsp = webapp2.Response()
     83         store.save_sessions(rsp)
     84 
     85         # Round 2 -------------------------------------------------------------
     86 
     87         cookies = rsp.headers.get('Set-Cookie')
     88         req = webapp2.Request.blank('/', headers=[('Cookie', cookies)])
     89         req.app = app
     90         store = sessions.SessionStore(req)
     91 
     92         session = store.get_session(backend='memcache')
     93 
     94         flashes = session.get_flashes()
     95         self.assertEqual(flashes, [(u'foo', None)])
     96 
     97         flashes = session.get_flashes()
     98         self.assertEqual(flashes, [])
     99 
    100         session.add_flash('bar')
    101         session.add_flash('baz', 'important')
    102 
    103         rsp = webapp2.Response()
    104         store.save_sessions(rsp)
    105 
    106         # Round 3 -------------------------------------------------------------
    107 
    108         cookies = rsp.headers.get('Set-Cookie')
    109         req = webapp2.Request.blank('/', headers=[('Cookie', cookies)])
    110         req.app = app
    111         store = sessions.SessionStore(req)
    112 
    113         session = store.get_session(backend='memcache')
    114 
    115         flashes = session.get_flashes()
    116         self.assertEqual(flashes, [(u'bar', None), (u'baz', 'important')])
    117 
    118         flashes = session.get_flashes()
    119         self.assertEqual(flashes, [])
    120 
    121         rsp = webapp2.Response()
    122         store.save_sessions(rsp)
    123 
    124         # Round 4 -------------------------------------------------------------
    125 
    126         cookies = rsp.headers.get('Set-Cookie')
    127         req = webapp2.Request.blank('/', headers=[('Cookie', cookies)])
    128         req.app = app
    129         store = sessions.SessionStore(req)
    130 
    131         session = store.get_session(backend='memcache')
    132         flashes = session.get_flashes()
    133         self.assertEqual(flashes, [])
    134 
    135 if __name__ == '__main__':
    136     test_base.main()
    137