97 lines
2.8 KiB
Python
97 lines
2.8 KiB
Python
import unittest
|
|
|
|
from httmock import all_requests
|
|
|
|
from hydrus.client import ClientDefaults
|
|
from hydrus.client.networking import ClientNetworking
|
|
from hydrus.client.networking import ClientNetworkingBandwidth
|
|
from hydrus.client.networking import ClientNetworkingDomain
|
|
from hydrus.client.networking import ClientNetworkingLogin
|
|
from hydrus.client.networking import ClientNetworkingSessions
|
|
|
|
from hydrus.test import TestController
|
|
|
|
MISSING_RESPONSE = '404, bad result'
|
|
ERROR_RESPONSE = '500, it done broke'
|
|
|
|
EMPTY_RESPONSE = '''<html>
|
|
<head>
|
|
<title>results</title>
|
|
</head>
|
|
<body>
|
|
</body>
|
|
</html>'''
|
|
|
|
@all_requests
|
|
def catch_all( url, request ):
|
|
|
|
raise Exception( 'An unexpected request for ' + url + ' came through in testing.' )
|
|
|
|
def get_good_response( urls_to_place ):
|
|
|
|
response = '''<html>
|
|
<head>
|
|
<title>results</title>
|
|
</head>
|
|
<body>'''
|
|
|
|
for url in urls_to_place:
|
|
|
|
response += ''' <span class="thumb">
|
|
<a href="'''
|
|
|
|
response += url
|
|
|
|
response += '''">
|
|
<img src="blah" />
|
|
</a>
|
|
</span>'''
|
|
|
|
|
|
response += ''' </body>
|
|
</html>'''
|
|
|
|
return response
|
|
|
|
class TestSubscription( unittest.TestCase ):
|
|
|
|
def _PrepEngine( self ):
|
|
|
|
mock_controller = TestController.MockController()
|
|
bandwidth_manager = ClientNetworkingBandwidth.NetworkBandwidthManager()
|
|
session_manager = ClientNetworkingSessions.NetworkSessionManager()
|
|
domain_manager = ClientNetworkingDomain.NetworkDomainManager()
|
|
login_manager = ClientNetworkingLogin.NetworkLoginManager()
|
|
|
|
ClientDefaults.SetDefaultDomainManagerData( domain_manager )
|
|
|
|
engine = ClientNetworking.NetworkEngine( mock_controller, bandwidth_manager, session_manager, domain_manager, login_manager )
|
|
|
|
mock_controller.CallToThread( engine.MainLoop )
|
|
|
|
return ( mock_controller, engine )
|
|
|
|
|
|
def test_initial_sync( self ):
|
|
|
|
# wait until I have searcher in here, so I can roll it all into domain_manager etc... rather than hitting db for gallery init and all that
|
|
|
|
# use safebooru (i.e. gelb 0.2.0) for examples. pseudo html documents here that work with the parsers
|
|
|
|
# 404 all file pages for now
|
|
|
|
# refer to testclientnetworking for useful httmock examples
|
|
|
|
# test:
|
|
# initial is good to go with right stuff set up
|
|
# a 404 gallery on initial
|
|
# a 500 gallery on initial
|
|
# a 200 gallery but empty result on initial
|
|
# a 200 gallery typical good initial sync involving several pages
|
|
# a subsequent 50 catch-up involving two pages
|
|
# a user cancel on init
|
|
# a user cancel on catch-up
|
|
|
|
pass
|
|
|