title: Nosegae Unit Tests with gae-session on a Python Google App Engine Project
body: <p>I can't get <a href="https://github.com/dound/gae-sessions/wiki" rel="nofollow">gae-sessions</a> to work when I use unit tests. I'm not sure if it's a cookie issue or an internal gae-sessions issue (it uses memcache/the datastore for persistance). It works fine on the actual app when accessed through a browser.</p>
  
  <p>I'm using Python 2.5 on Mac OS 10.6.6, Google App Engine SDK 1.4.2, nosetests version 1.0.0, NoseGAE-0.1.7 and gae-sessions v1.06.</p>
  
  <p>Here's my code:</p>
  
  <hr>
  
  <p>web app implementation:</p>
  
  <pre><code>from google.appengine.ext import webapp
  from gaesessions import get_current_session
  
  class cookietest(webapp.RequestHandler):
      def get(self):
          s = get_current_session()
          if not 'message' in s:
              self.response.out.write('No session value')
              s['message'] = 'This value is stored in a session'
          else:
              self.response.out.write("Message found: %s" % s['message'])
  
  application = webapp.WSGIApplication([(r'/cookietest', cookietest)])
  </code></pre>
  
  <hr>
  
  <p>Unit test implementation:</p>
  
  <pre><code>def test_cookietest(self):
      from gaesessions import SessionMiddleware
      app_with_sessions = SessionMiddleware(application, cookie_key=os.urandom(64)) # random key
      self.app = TestApp(app_with_sessions)
  
      resp = self.app.get('/cookietest')
      cookie = resp.headers['Set-Cookie']
      assert cookie
      resp = self.app.get('/cookietest', headers={'Cookie': cookie})
      print resp
      assert 'This value is stored in a session' in resp
  </code></pre>
  
  <hr>
  
  <p>The relevant output is:</p>
  
  <pre><code>FAIL: test_cookietest (tests.test.TestUser)
  ----------------------------------------------------------------------
  Traceback (most recent call last):
    File "/Users/Asad/.../test.py", line 33, in test_cookietest
      assert 'This value is stored in a session' in resp
  AssertionError: 
  -------------------- &gt;&gt; begin captured stdout &lt;&lt; ---------------------
  Response: 200 OK
  Cache-Control: no-cache
  Content-Type: text/html; charset=utf-8
  Expires: Fri, 01 Jan 1990 00:00:00 GMT
  Set-Cookie:  DgU00="DQjpTdhQsKYYGhvNr/CLm+v835QV5V1jTX9T4wMULhI=1301034363_89b1c1007a6159e85828ab9a7673759cgAJ9cQB9cQFVB21lc3NhZ2VxAlUhVGhpcyB2YWx1ZSBpcyBzdG9yZWQgaW4gYSBzZXNzaW9ucQNzhnEELg=="; expires=Fri, 25-Mar-2011 06:26:03 GMT; Path=/; HttpOnly
  No session value
  
  --------------------- &gt;&gt; end captured stdout &lt;&lt; ----------------------
  -------------------- &gt;&gt; begin captured logging &lt;&lt; --------------------
  root: WARNING: Could not read datastore data from /var/folders/pt/ptPaW5O7E-eLIrfFhhczbU+++TI/-Tmp-/nosegae.datastore
  root: INFO: zipimporter('/Library/Python/2.5/site-packages/NoseGAE-0.1.7-py2.5.egg', '')
  root: INFO: zipimporter('/Library/Python/2.5/site-packages/WebTest-1.2.3-py2.5.egg', '')
  root: INFO: zipimporter('/Library/Python/2.5/site-packages/WebOb-1.0-py2.5.egg', '')
  root: INFO: zipimporter('/Library/Python/2.5/site-packages/mock-0.7.0b4-py2.5.egg', '')
  root: DEBUG: Could not import "strop": Disallowed C-extension or built-in module
  --------------------- &gt;&gt; end captured logging &lt;&lt; ---------------------
  
  ----------------------------------------------------------------------
  Ran 10 tests in 0.284s
  
  FAILED (failures=1)
  </code></pre>