2013-11-06 18:22:07 +00:00
|
|
|
import ClientConstants as CC
|
|
|
|
import collections
|
|
|
|
import HydrusConstants as HC
|
|
|
|
import HydrusExceptions
|
|
|
|
import HydrusSessions
|
|
|
|
import os
|
|
|
|
import TestConstants
|
|
|
|
import unittest
|
|
|
|
|
|
|
|
class TestSessions( unittest.TestCase ):
|
|
|
|
|
|
|
|
def test_server( self ):
|
|
|
|
|
2013-11-20 21:12:21 +00:00
|
|
|
discard = HC.app.GetWrite( 'session' ) # just to discard gumph from testserver
|
|
|
|
|
2013-11-06 18:22:07 +00:00
|
|
|
session_key_1 = os.urandom( 32 )
|
2014-08-27 22:15:22 +00:00
|
|
|
service_key = os.urandom( 32 )
|
2013-11-06 18:22:07 +00:00
|
|
|
|
|
|
|
permissions = [ HC.GET_DATA, HC.POST_DATA, HC.POST_PETITIONS, HC.RESOLVE_PETITIONS, HC.MANAGE_USERS, HC.GENERAL_ADMIN, HC.EDIT_SERVICES ]
|
|
|
|
|
|
|
|
account_id = 1
|
|
|
|
account_type = HC.AccountType( 'account', permissions, ( None, None ) )
|
|
|
|
created = HC.GetNow() - 100000
|
2013-12-04 22:44:16 +00:00
|
|
|
expiry = None
|
2013-11-06 18:22:07 +00:00
|
|
|
used_data = ( 0, 0 )
|
|
|
|
|
2013-12-04 22:44:16 +00:00
|
|
|
account = HC.Account( account_id, account_type, created, expiry, used_data )
|
2013-11-06 18:22:07 +00:00
|
|
|
|
|
|
|
expiry = HC.GetNow() - 10
|
|
|
|
|
2014-08-27 22:15:22 +00:00
|
|
|
HC.app.SetRead( 'sessions', [ ( session_key_1, service_key, account, expiry ) ] )
|
2013-11-06 18:22:07 +00:00
|
|
|
|
|
|
|
session_manager = HydrusSessions.HydrusSessionManagerServer()
|
|
|
|
|
|
|
|
with self.assertRaises( HydrusExceptions.SessionException ):
|
|
|
|
|
2014-08-27 22:15:22 +00:00
|
|
|
session_manager.GetAccount( service_key, session_key_1 )
|
2014-05-14 20:46:38 +00:00
|
|
|
|
2013-11-06 18:22:07 +00:00
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
expiry = HC.GetNow() + 10000
|
|
|
|
|
2014-08-27 22:15:22 +00:00
|
|
|
HC.app.SetRead( 'sessions', [ ( session_key_1, service_key, account, expiry ) ] )
|
2013-11-06 18:22:07 +00:00
|
|
|
|
|
|
|
session_manager = HydrusSessions.HydrusSessionManagerServer()
|
|
|
|
|
2014-08-27 22:15:22 +00:00
|
|
|
read_account = session_manager.GetAccount( service_key, session_key_1 )
|
2013-11-06 18:22:07 +00:00
|
|
|
|
|
|
|
self.assertIs( read_account, account )
|
|
|
|
|
|
|
|
#
|
|
|
|
|
2013-12-04 22:44:16 +00:00
|
|
|
expiry = None
|
|
|
|
|
|
|
|
account_2 = HC.Account( 2, account_type, created, expiry, used_data )
|
2013-11-06 18:22:07 +00:00
|
|
|
|
|
|
|
HC.app.SetRead( 'account', account_2 )
|
|
|
|
|
|
|
|
account_identifier = HC.AccountIdentifier( access_key = os.urandom( 32 ) )
|
|
|
|
|
2014-08-27 22:15:22 +00:00
|
|
|
( session_key_2, expiry_2 ) = session_manager.AddSession( service_key, account_identifier )
|
2013-11-06 18:22:07 +00:00
|
|
|
|
|
|
|
[ ( args, kwargs ) ] = HC.app.GetWrite( 'session' )
|
|
|
|
|
2014-08-27 22:15:22 +00:00
|
|
|
( written_session_key, written_service_key, written_account, written_expiry ) = args
|
2013-11-06 18:22:07 +00:00
|
|
|
|
2014-08-27 22:15:22 +00:00
|
|
|
self.assertEqual( ( session_key_2, service_key, account_2, expiry_2 ), ( written_session_key, written_service_key, written_account, written_expiry ) )
|
2013-11-06 18:22:07 +00:00
|
|
|
|
2014-08-27 22:15:22 +00:00
|
|
|
read_account = session_manager.GetAccount( service_key, session_key_2 )
|
2013-11-06 18:22:07 +00:00
|
|
|
|
|
|
|
self.assertIs( read_account, account_2 )
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
HC.app.SetRead( 'account', account )
|
|
|
|
|
|
|
|
account_identifier = HC.AccountIdentifier( access_key = os.urandom( 32 ) )
|
|
|
|
|
2014-08-27 22:15:22 +00:00
|
|
|
( session_key_3, expiry_3 ) = session_manager.AddSession( service_key, account_identifier )
|
2013-11-06 18:22:07 +00:00
|
|
|
|
|
|
|
[ ( args, kwargs ) ] = HC.app.GetWrite( 'session' )
|
|
|
|
|
2014-08-27 22:15:22 +00:00
|
|
|
( written_session_key, written_service_key, written_account, written_expiry ) = args
|
2013-11-06 18:22:07 +00:00
|
|
|
|
2014-08-27 22:15:22 +00:00
|
|
|
self.assertEqual( ( session_key_3, service_key, account, expiry_3 ), ( written_session_key, written_service_key, written_account, written_expiry ) )
|
2013-11-06 18:22:07 +00:00
|
|
|
|
2014-08-27 22:15:22 +00:00
|
|
|
read_account = session_manager.GetAccount( service_key, session_key_3 )
|
2013-11-06 18:22:07 +00:00
|
|
|
|
|
|
|
self.assertIs( read_account, account )
|
|
|
|
|
|
|
|
#
|
|
|
|
|
2013-12-04 22:44:16 +00:00
|
|
|
expiry = None
|
|
|
|
|
|
|
|
updated_account = HC.Account( 1, account_type, created, expiry, ( 1, 1 ) )
|
2013-11-06 18:22:07 +00:00
|
|
|
|
|
|
|
HC.app.SetRead( 'account', updated_account )
|
|
|
|
|
|
|
|
account_identifier = HC.AccountIdentifier( access_key = os.urandom( 32 ) )
|
|
|
|
|
2014-08-27 22:15:22 +00:00
|
|
|
session_manager.RefreshAccounts( service_key, [ account_identifier ] )
|
2013-11-06 18:22:07 +00:00
|
|
|
|
2014-08-27 22:15:22 +00:00
|
|
|
read_account = session_manager.GetAccount( service_key, session_key_1 )
|
2013-11-06 18:22:07 +00:00
|
|
|
|
|
|
|
self.assertIs( read_account, updated_account )
|
|
|
|
|
2014-08-27 22:15:22 +00:00
|
|
|
read_account = session_manager.GetAccount( service_key, session_key_3 )
|
2013-11-06 18:22:07 +00:00
|
|
|
|
|
|
|
self.assertIs( read_account, updated_account )
|
|
|
|
|
|
|
|
#
|
|
|
|
|
2013-12-04 22:44:16 +00:00
|
|
|
expiry = None
|
|
|
|
|
|
|
|
updated_account_2 = HC.Account( 1, account_type, created, expiry, ( 2, 2 ) )
|
2013-11-06 18:22:07 +00:00
|
|
|
|
2014-08-27 22:15:22 +00:00
|
|
|
HC.app.SetRead( 'sessions', [ ( session_key_1, service_key, updated_account_2, expiry ), ( session_key_2, service_key, account_2, expiry ), ( session_key_3, service_key, updated_account_2, expiry ) ] )
|
2013-11-06 18:22:07 +00:00
|
|
|
|
|
|
|
session_manager.RefreshAllAccounts()
|
|
|
|
|
2014-08-27 22:15:22 +00:00
|
|
|
read_account = session_manager.GetAccount( service_key, session_key_1 )
|
2013-11-06 18:22:07 +00:00
|
|
|
|
|
|
|
self.assertIs( read_account, updated_account_2 )
|
|
|
|
|
2014-08-27 22:15:22 +00:00
|
|
|
read_account = session_manager.GetAccount( service_key, session_key_2 )
|
2013-11-06 18:22:07 +00:00
|
|
|
|
|
|
|
self.assertIs( read_account, account_2 )
|
|
|
|
|
2014-08-27 22:15:22 +00:00
|
|
|
read_account = session_manager.GetAccount( service_key, session_key_3 )
|
2013-11-06 18:22:07 +00:00
|
|
|
|
|
|
|
self.assertIs( read_account, updated_account_2 )
|
|
|
|
|