hydrus/include/TestHydrusSessions.py

140 lines
5.5 KiB
Python
Raw Normal View History

2019-01-09 22:59:03 +00:00
from . import ClientConstants as CC
2013-11-06 18:22:07 +00:00
import collections
2019-01-09 22:59:03 +00:00
from . import HydrusConstants as HC
from . import HydrusExceptions
from . import HydrusNetwork
from . import HydrusSessions
2013-11-06 18:22:07 +00:00
import os
import unittest
2019-01-09 22:59:03 +00:00
from . import HydrusData
from . import HydrusGlobals as HG
2013-11-06 18:22:07 +00:00
class TestSessions( unittest.TestCase ):
def test_server( self ):
2017-05-10 21:33:58 +00:00
discard = HG.test_controller.GetWrite( 'session' ) # just to discard gumph from testserver
2013-11-20 21:12:21 +00:00
2015-07-01 22:02:07 +00:00
session_key_1 = HydrusData.GenerateKey()
service_key = HydrusData.GenerateKey()
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 ]
2015-07-01 22:02:07 +00:00
access_key = HydrusData.GenerateKey()
account_key = HydrusData.GenerateKey()
2018-03-07 22:48:29 +00:00
account_type = HydrusNetwork.AccountType.GenerateAdminAccountType( HC.SERVER_ADMIN )
2015-03-25 22:04:19 +00:00
created = HydrusData.GetNow() - 100000
expires = HydrusData.GetNow() + 300
2014-09-10 22:37:38 +00:00
2018-03-07 22:48:29 +00:00
account = HydrusNetwork.Account( account_key, account_type, created, expires )
2013-11-06 18:22:07 +00:00
2015-03-25 22:04:19 +00:00
expires = HydrusData.GetNow() - 10
2013-11-06 18:22:07 +00:00
2017-05-10 21:33:58 +00:00
HG.test_controller.SetRead( 'sessions', [ ( session_key_1, service_key, account, expires ) ] )
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
2014-09-10 22:37:38 +00:00
# test fetching a session already in db, after bootup
2013-11-06 18:22:07 +00:00
2015-03-25 22:04:19 +00:00
expires = HydrusData.GetNow() + 300
2013-11-06 18:22:07 +00:00
2017-05-10 21:33:58 +00:00
HG.test_controller.SetRead( 'sessions', [ ( session_key_1, service_key, account, expires ) ] )
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 )
2014-09-10 22:37:38 +00:00
# test adding a session
2019-02-13 22:26:43 +00:00
HG.test_controller.ClearWrites( 'session' )
2015-03-25 22:04:19 +00:00
expires = HydrusData.GetNow() + 300
2013-11-06 18:22:07 +00:00
2015-07-01 22:02:07 +00:00
account_key_2 = HydrusData.GenerateKey()
2013-12-04 22:44:16 +00:00
2018-03-07 22:48:29 +00:00
account_2 = HydrusNetwork.Account( account_key_2, account_type, created, expires )
2013-11-06 18:22:07 +00:00
2017-05-10 21:33:58 +00:00
HG.test_controller.SetRead( 'account_key_from_access_key', account_key_2 )
HG.test_controller.SetRead( 'account', account_2 )
2013-11-06 18:22:07 +00:00
2014-10-01 22:58:32 +00:00
( session_key_2, expires_2 ) = session_manager.AddSession( service_key, access_key )
2013-11-06 18:22:07 +00:00
2017-05-10 21:33:58 +00:00
[ ( args, kwargs ) ] = HG.test_controller.GetWrite( 'session' )
2013-11-06 18:22:07 +00:00
2014-10-01 22:58:32 +00:00
( written_session_key, written_service_key, written_account_key, written_expires ) = args
2013-11-06 18:22:07 +00:00
2014-10-01 22:58:32 +00:00
self.assertEqual( ( session_key_2, service_key, account_key_2, expires_2 ), ( written_session_key, written_service_key, written_account_key, written_expires ) )
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 )
2014-09-10 22:37:38 +00:00
# test adding a new session for an account already in the manager
2013-11-06 18:22:07 +00:00
2017-05-10 21:33:58 +00:00
HG.test_controller.SetRead( 'account_key_from_access_key', account_key )
HG.test_controller.SetRead( 'account', account )
2013-11-06 18:22:07 +00:00
2014-10-01 22:58:32 +00:00
( session_key_3, expires_3 ) = session_manager.AddSession( service_key, access_key )
2013-11-06 18:22:07 +00:00
2017-05-10 21:33:58 +00:00
[ ( args, kwargs ) ] = HG.test_controller.GetWrite( 'session' )
2013-11-06 18:22:07 +00:00
2014-10-01 22:58:32 +00:00
( written_session_key, written_service_key, written_account_key, written_expires ) = args
2013-11-06 18:22:07 +00:00
2014-10-01 22:58:32 +00:00
self.assertEqual( ( session_key_3, service_key, account_key, expires_3 ), ( written_session_key, written_service_key, written_account_key, written_expires ) )
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 )
2014-09-10 22:37:38 +00:00
read_account_original = session_manager.GetAccount( service_key, session_key_1 )
self.assertIs( read_account, read_account_original )
2013-11-06 18:22:07 +00:00
2014-09-10 22:37:38 +00:00
# test individual account refresh
2013-12-04 22:44:16 +00:00
2015-03-25 22:04:19 +00:00
expires = HydrusData.GetNow() + 300
2013-11-06 18:22:07 +00:00
2018-03-07 22:48:29 +00:00
updated_account = HydrusNetwork.Account( account_key, account_type, created, expires )
2014-09-10 22:37:38 +00:00
2017-05-10 21:33:58 +00:00
HG.test_controller.SetRead( 'account', updated_account )
2013-11-06 18:22:07 +00:00
2014-10-01 22:58:32 +00:00
session_manager.RefreshAccounts( service_key, [ account_key ] )
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 )
2014-09-10 22:37:38 +00:00
# test all account refresh
2015-03-25 22:04:19 +00:00
expires = HydrusData.GetNow() + 300
2013-12-04 22:44:16 +00:00
2018-03-07 22:48:29 +00:00
updated_account_2 = HydrusNetwork.Account( account_key, account_type, created, expires )
2013-11-06 18:22:07 +00:00
2017-05-10 21:33:58 +00:00
HG.test_controller.SetRead( 'sessions', [ ( session_key_1, service_key, updated_account_2, expires ), ( session_key_2, service_key, account_2, expires ), ( session_key_3, service_key, updated_account_2, expires ) ] )
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 )
2017-05-10 21:33:58 +00:00