Guest
Public paste!

root

By: a guest | Jan 29th, 2010 | Syntax: None | Size: 9.94 KB | Hits: 85 | Expires: Never
Copy text to clipboard
  1. diff -r dd9036263c5c pokersocial/auth.py
  2. --- a/pokersocial/auth.py       Mon Jan 25 16:46:09 2010 +0000
  3. +++ b/pokersocial/auth.py       Fri Jan 29 16:27:58 2010 +0100
  4.  -39,7 +39,7 @@
  5.      session = request.getSession()
  6.      if info:
  7.          if site.verbose >= 3:
  8. -            site.message("pokersocial: TWISTED " + session.uid + " / serial " + str(serial))
  9. +            site.message("pokersocial: AUTH " + session.auth + " / UID " + session.uid + " / serial " + str(serial))
  10.          #
  11.          # Login if not logged in already
  12.          #
  13.  -62,7 +62,7 @@
  14.              session.avatar.relogin(serial)
  15.      else:
  16.          if site.verbose >= 3:
  17. -            site.message("pokersocial: TWISTED " + session.uid + " / anonymous")
  18. +            site.message("pokersocial: AUTH " + session.auth + " / UID " + session.uid + " / serial " + str(serial))
  19.          #
  20.          # logout so that the request is processed anonymously
  21.          #
  22. diff -r dd9036263c5c tests/test.py
  23. --- a/tests/test.py     Mon Jan 25 16:46:09 2010 +0000
  24. +++ b/tests/test.py     Fri Jan 29 16:27:58 2010 +0100
  25.  -51,12 +51,19 @@
  26.  from pokersocial import auth, core
  27.  from pokersocial.core import Pokersocial
  28.  
  29. +class PokerAvatarCollection:
  30. +      def add(self, serial, avatar):
  31. +            pass
  32. +      def remove(self, serial, avatar):
  33. +            pass
  34. +
  35.  class PokerServiceMockup:
  36.  
  37.        def __init__(self):
  38.              self.verbose = 6
  39.              self.dirs = []
  40.              self.serial2client = {}
  41. +            self.avatar_collection = PokerAvatarCollection()
  42.  
  43.        def getPlayerPlaces(self, serial):
  44.              return PacketPokerPlayerPlaces(serial = serial)
  45.  -75,6 +82,9 @@
  46.        def message(self, string):
  47.              pass
  48.  
  49. +      def packet2resthost(self, packet):
  50. +            return None, None
  51. +
  52.  class Transport:
  53.        def getPeer(self):
  54.              return None
  55.  -153,8 +163,8 @@
  56.              container['context'] = self.social
  57.              
  58.        def test01_load_true(self):
  59. -            """ before: user is logged, no TWISTED_SESSION
  60. -            after: TWISTED_SESSION exists, users record exists, memcache is logged, session expired
  61. +            """ before: opensocial viewed_id == owner_id, memcache not logged
  62. +            after: users record exists, memcache is logged, new session
  63.              """
  64.              r = pokersite.Request(Channel(self.site), True)
  65.              r.site = r.channel.site
  66.  -162,6 +172,8 @@
  67.              r.gotLength(len(input))
  68.              r.handleContentChunk(input)
  69.              d = r.notifyFinish()
  70. +            auth = 'aaaa'
  71. +            uid = 'bbbb'
  72.              def finish(result):
  73.                    #
  74.                    # database state
  75.  -179,35 +191,35 @@
  76.                    # memcache state
  77.                    #
  78.                    session = r.getSession()
  79. -                  self.assertTrue(session.expired)
  80. -                  self.assertSubstring('TWISTED_SESSION', r.cookies[0])
  81. -                  self.assertEquals(self.social.serial, r.site.memcache.get(session.uid))
  82. -                  self.assertEquals(session.uid, r.site.memcache.get(self.social.serial))
  83. +                  self.assertEquals(False, session.expired)
  84. +                  self.assertEquals(self.social.serial, r.site.memcache.get(session.auth))
  85. +                  session.expire()
  86.                    
  87.              d.addCallback(finish)
  88. -            r.requestReceived('GET', '/?xoauth_signature_publickey=http%3A%2F%2Fshindig.opensocial.dachary.org%2Fpublic.cer&opensocial_viewer_id=' + self.social.serial + '&opensocial_owner_id=' + self.social.serial, 'HTTP/1.0')
  89. +            r.requestReceived('GET', '/?xoauth_signature_publickey=http%3A%2F%2Fshindig.opensocial.dachary.org%2Fpublic.cer&opensocial_viewer_id=' + self.social.serial + '&opensocial_owner_id=' + self.social.serial + '&auth=aaaa&uid=bbbb', 'HTTP/1.0')
  90.              return d
  91.  
  92.        def test02_load_false(self):
  93. -            """ before: user is not logged, TWISTED_SESSION exists, memcache is logged, session expired
  94. -            after: TWISTED_SESSION exists, memcache logged out, session expired
  95. +            """ before: opensocial viewer_id != owner_id, memcache is logged
  96. +            after: memcache logged out, new session
  97.              """
  98.              r = pokersite.Request(Channel(self.site), True)
  99.              r.site = r.channel.site
  100.              input = '{"type": "PacketPing"}'
  101.              r.gotLength(len(input))
  102.              r.handleContentChunk(input)
  103. -            sessionCookie = 'aaaa'
  104. -            r.received_cookies['TWISTED_SESSION'] = sessionCookie
  105. -            r.site.memcache.set(sessionCookie, self.social.serial)
  106. -            r.site.memcache.set(self.social.serial, sessionCookie)
  107. +            auth = 'aaaa'
  108. +            uid = 'bbbb'
  109. +            r.site.memcache.set(auth, self.social.serial)
  110.              d = r.notifyFinish()
  111.              def finish(result):
  112.                    self.assertSubstring('\r\n\r\n[]', r.transport.getvalue())
  113. -                  self.assertEquals('0', r.site.memcache.get(sessionCookie))
  114. -                  self.assertEquals(None, r.site.memcache.get(self.social.serial))
  115. +                  self.assertEquals('0', r.site.memcache.get(auth))
  116. +                  session = r.getSession()
  117. +                  self.assertEquals(False, session.expired)
  118. +                  session.expire()
  119.              d.addCallback(finish)
  120. -            r.requestReceived('GET', '/?xoauth_signature_publickey=http%3A%2F%2Fshindig.opensocial.dachary.org%2Fpublic.cer&opensocial_viewer_id=0&opensocial_owner_id=' + self.social.serial, 'HTTP/1.0')
  121. +            r.requestReceived('GET', '/?xoauth_signature_publickey=http%3A%2F%2Fshindig.opensocial.dachary.org%2Fpublic.cer&opensocial_viewer_id=0&opensocial_owner_id=' + self.social.serial + '&auth=aaaa&uid=bbbb', 'HTTP/1.0')
  122.              return d
  123.  
  124.        def test03_opensocial_owner_id_unset(self):
  125.  -281,9 +293,7 @@
  126.              container['context'] = self.social
  127.              self.container = container
  128.  
  129. -      def createRequest(self, owner_id = '20', twisted_session = 'twisted_session'):
  130. -            if twisted_session:
  131. -                  self.site.memcache.set(twisted_session, '0')
  132. +      def createRequest(self, owner_id = '20'):
  133.              r = pokersite.Request(Channel(self.site), True)
  134.              r.site = r.channel.site
  135.              def process():
  136.  -292,22 +302,22 @@
  137.              input = '{"type": "PacketPing"}'
  138.              r.gotLength(len(input))
  139.              r.handleContentChunk(input)
  140. -            if twisted_session:
  141. -                  r.received_cookies['TWISTED_SESSION'] = twisted_session
  142.              if owner_id == '':
  143.                    viewer_id = '0'
  144.                    owner_id = '20'
  145.              else:
  146.                    viewer_id = owner_id
  147. -            r.requestReceived('GET', '/?xoauth_signature_publickey=http%3A%2F%2Fshindig.opensocial.dachary.org%2Fpublic.cer&opensocial_viewer_id=' + viewer_id + '&opensocial_owner_id=' + owner_id, 'HTTP/1.0')
  148. +            r.requestReceived('GET', '/?xoauth_signature_publickey=http%3A%2F%2Fshindig.opensocial.dachary.org%2Fpublic.cer&opensocial_viewer_id=' + viewer_id + '&opensocial_owner_id=' + owner_id + '&auth=auth_hash&uid=uid_hash', 'HTTP/1.0')
  149.              return r
  150.  
  151.        def test01_duplicate_name(self):
  152.              """ It is ok to have the same name with different serials
  153.              """
  154.              serial = '10'
  155. +            self.site.memcache.set('auth_hash', 10)
  156.              auth.update_session(self.site, self.createRequest(serial)).expire()
  157.              other_serial = '20'
  158. +            self.site.memcache.set('auth_hash', 20)
  159.              auth.update_session(self.site, self.createRequest(other_serial)).expire()
  160.              cursor = self.service.db.cursor(DictCursor)
  161.              cursor.execute("SELECT name FROM users WHERE serial = %s", serial)
  162.  -323,7 +333,8 @@
  163.              """ create user in the database and memcache session, based on a opensocial_owner_id
  164.              """
  165.              serial = '20'
  166. -            r = self.createRequest(owner_id = serial, twisted_session = None)
  167. +            r = self.createRequest(owner_id = serial)
  168. +            self.site.memcache.set('auth_hash', serial)
  169.              user_info = Pokersocial.importUser(self.service, self.container, int(serial))
  170.              signature = md5.new(str(user_info)).hexdigest()
  171.              session = auth.update_session(self.site, r)
  172.  -338,16 +349,15 @@
  173.              #
  174.              # memcache state
  175.              #
  176. -            self.assertSubstring('TWISTED_SESSION', r.cookies[0])
  177. -            self.assertEquals(serial, self.site.memcache.get(session.uid))
  178. -            self.assertEquals(session.uid, self.site.memcache.get(serial))
  179. +            self.assertEquals(serial, self.site.memcache.get(session.auth))
  180.              session.expire()
  181.  
  182.        def test04_relogin_same_user(self):
  183.              """ a user already logged in is confirmed
  184.              """
  185.              serial = '30'
  186. -            r = self.createRequest(owner_id = serial, twisted_session = None)
  187. +            r = self.createRequest(owner_id = serial)
  188. +            self.site.memcache.set('auth_hash', serial)
  189.              r.getSession().avatar.relogin(int(serial))
  190.              session = auth.update_session(self.site, r)
  191.              self.assertTrue(hasattr(r, 'pokersocial_same_user'))
  192.  -357,7 +367,8 @@
  193.              """ a user already logged and memcache session says serial changed
  194.              """
  195.              serial = '30'
  196. -            r = self.createRequest(owner_id = serial, twisted_session = None)
  197. +            r = self.createRequest(owner_id = serial)
  198. +            self.site.memcache.set('auth_hash', int(serial)+1)
  199.              r.getSession().avatar.relogin(int(serial) + 1)
  200.              session = auth.update_session(self.site, r)
  201.              self.assertEquals(int(serial), r.getSession().avatar.getSerial())
  202.  -369,6 +380,7 @@
  203.              r = self.createRequest(owner_id = '')
  204.              session = r.getSession()
  205.              session.avatar.relogin(5)
  206. +            self.site.memcache.set('auth_hash', 5)
  207.              self.assertTrue(session.avatar.isLogged())
  208.              auth.update_session(self.site, r)
  209.              self.assertFalse(session.avatar.isLogged())