def setup_intercept(self, callbacks, intercept_api=False): """Setup the WSGI intercepts. `callbacks` have to be provided to call upon request of the intercepted urls. They should be supplied as a dictionary of ((hostname, port), callback). Additionally one extra `default` callback has to be passed in, in the form ('default', callback). The `intercept_api` parameter is used to install the `httplib2` intercepts, used to intercept the lazr.restful api calls. """ self.patch_wsgi_intercept() self.intercepted = [] install_opener() self.intercept_api = intercept_api if intercept_api: install() for key, callback in callbacks.items(): if key == 'default': continue host, port = key add_wsgi_intercept(host, port, callback) self.intercepted.append((host, port))
def test_reset_code_sreg(self): try: import wsgi_intercept from wsgi_intercept.urllib2_intercept import install_opener install_opener() except ImportError: return def _fake_response(): return Response('0') def _no_email_response(): r = Response() r.status = '400 Bad Request' r.body = str(ERROR_NO_EMAIL_ADDRESS) return r config = {'backend': 'services.resetcodes.rc_sreg.ResetCodeSreg', 'sreg_location': 'localhost', 'sreg_path': '', 'sreg_scheme': 'http'} mgr = load_and_configure(config) user = User() user['userid'] = 1 user['username'] = '******' wsgi_intercept.add_wsgi_intercept('localhost', 80, _fake_response) self.assertRaises(AlreadySentError, mgr.generate_reset_code, user) wsgi_intercept.add_wsgi_intercept('localhost', 80, _no_email_response) self.assertRaises(NoEmailError, mgr.generate_reset_code, user)
def __init__(self, port=8000): """Initializes the mock server on localhost port 8000. Use urllib2.urlopen('http://localhost:8000') to reach the test server. The constructor takes a 'port=<int>' argument if you want the server to listen on a different port.""" wsgi_intercept.add_wsgi_intercept('localhost', port, self.interceptor) wsgi_urllib2.install_opener()
def test_reset_code_sreg(self): try: import wsgi_intercept from wsgi_intercept.urllib2_intercept import install_opener install_opener() except ImportError: return def _fake_response(): return Response('0') def _no_email_response(): r = Response() r.status = '400 Bad Request' r.body = str(ERROR_NO_EMAIL_ADDRESS) return r config = { 'backend': 'services.resetcodes.rc_sreg.ResetCodeSreg', 'sreg_location': 'localhost', 'sreg_path': '', 'sreg_scheme': 'http' } mgr = load_and_configure(config) user = User() user['userid'] = 1 user['username'] = '******' wsgi_intercept.add_wsgi_intercept('localhost', 80, _fake_response) self.assertRaises(AlreadySentError, mgr.generate_reset_code, user) wsgi_intercept.add_wsgi_intercept('localhost', 80, _no_email_response) self.assertRaises(NoEmailError, mgr.generate_reset_code, user)
def setUp(self): # Work around circular import. from lp.testing.layers import wsgi_application super(Urllib2Fixture, self).setUp() add_wsgi_intercept('launchpad.dev', 80, lambda: wsgi_application) self.addCleanup(remove_wsgi_intercept, 'launchpad.dev', 80) install_opener() self.addCleanup(uninstall_opener)
def setUp(self): # Work around circular import. from lp.testing.layers import wsgi_application super(Urllib2Fixture, self).setUp() add_wsgi_intercept("launchpad.dev", 80, lambda: wsgi_application) self.addCleanup(remove_wsgi_intercept, "launchpad.dev", 80) install_opener() self.addCleanup(uninstall_opener)
def _setup(): from wsgi_intercept.urllib2_intercept import install_opener install_opener() import wsgi_intercept from kotti_dkbase.maintenance import main settings = { 'kotti_dkbase.maintenance_page': 'kotti_dkbase:static/maintenance.html', } app = main({}, **settings) wsgi_intercept.add_wsgi_intercept('localhost', 5000, lambda: app)
def setUp(self): self.webapi = None self.auth = MockAuth() self.peers = fairywrenMocks.Peers() self.users = MockUsers() self.torrents = MockTorrents() self.swarm = fairywrenMocks.Swarm() install_opener() wsgi_intercept.add_wsgi_intercept('webapi',80,self.getWebapi) self.urlopen = urllib2.urlopen
def setUp(self): self.webapi = None self.auth = MockAuth() self.peers = fairywrenMocks.Peers() self.users = MockUsers() self.torrents = MockTorrents() self.swarm = fairywrenMocks.Swarm() install_opener() wsgi_intercept.add_wsgi_intercept('webapi', 80, self.getWebapi) self.urlopen = urllib2.urlopen
def setUp(self): self._resource_manager = MockResourceManager() self._template_builder = TemplateBuilder(self._resource_manager) self._template_builder.start() self._router = Router(resource_manager=self._resource_manager, template_builder=self._template_builder, login_manager=Mock(), database=Mock(), platform=Mock()) self._router.start() self._app = self._router.get_wsgi_app() install_opener() add_wsgi_intercept("localhost", 8080, lambda: self._app)
def setup(self, *args, **kwargs): urllib2_intercept.install_opener() def response(environ, start_response): response_headers = [('Content-type','text/plain')] if environ['PATH_INFO'].endswith('ephemeral3'): status = '404 Not Found' start_response(status, response_headers) return [] else: status = '200 OK' start_response(status, response_headers) return ['/dev/sdb'] wsgi_intercept.add_wsgi_intercept('169.254.169.254', 80, lambda : response)
def setUp(self): self.tracker = None self.auth = None super(WSGITrackerTest,self).setUp() install_opener() wsgi_intercept.add_wsgi_intercept('tracker',80,self.createTracker) self.urlopen = urllib2.urlopen #Issue a request here to cause 'createTracker' to be called while True: try: urllib2.urlopen('http://tracker/') except urllib2.HTTPError as e: self.assertEqual(404,e.code) break self.assertTrue(False)
def add_urllib2_intercept(appfunc, host='localhost', port=80): '''Add urllib2 intercept. NB: this needs wsgi_intercept code for urllib2. This was in: http://darcs.idyll.org/~t/projects/wsgi_intercept/README.html Now part of wsgi_intercept: easy_install wsgi_intercept @param appfunc: function that returns the WSGI app. ''' from wsgi_intercept.urllib2_intercept import install_opener install_opener() import wsgi_intercept wsgi_intercept.add_wsgi_intercept(host, port, appfunc) wsgi_intercept.add_wsgi_intercept('some_host', 80, appfunc)
def setUp(self): TestCase.setUp(self) self.intercepted = [] self.session = None self.root = app = SimpleLogInRootApp(SESSION_VAR) app = session_scribbler(app, self) app = HTTPExceptionHandler(app) app = SessionHandler(app, SESSION_VAR, SECRET) self.cookie_name = app.cookie_handler.cookie_name self.intercept(config.codehosting.codebrowse_root, app) self.intercept(config.codehosting.secure_codebrowse_root, app) self.intercept(allvhosts.configs['mainsite'].rooturl, dummy_destination) install_opener() self.browser = wsgi_intercept.zope_testbrowser.WSGI_Browser() # We want to pretend we are not a robot, or else mechanize will honor # robots.txt. self.browser.mech_browser.set_handle_robots(False) self.browser.open(config.codehosting.secure_codebrowse_root + '+login')
def setUp(self): TestCase.setUp(self) self.intercepted = [] self.session = None self.root = app = SimpleLogInRootApp(SESSION_VAR) app = session_scribbler(app, self) app = HTTPExceptionHandler(app) app = SessionHandler(app, SESSION_VAR, SECRET) self.cookie_name = app.cookie_handler.cookie_name self.intercept(config.codehosting.codebrowse_root, app) self.intercept(config.codehosting.secure_codebrowse_root, app) self.intercept(allvhosts.configs['mainsite'].rooturl, dummy_destination) install_opener() self.browser = wsgi_intercept.zope_testbrowser.WSGI_Browser() # We want to pretend we are not a robot, or else mechanize will honor # robots.txt. self.browser.mech_browser.set_handle_robots(False) self.browser.open( config.codehosting.secure_codebrowse_root + '+login')
def setUp(self): super(ReadonlyCommandTestCase, self).setUp() self.rm = ReadOnlyManager() # make sure we're clear everything up before leaving self.addCleanup(self.rm.clear_readonly) self.addCleanup(self.rm.clear_failed, 'master') self._stdout = sys.stdout self._stderr = sys.stderr sys.stdout = StringIO.StringIO() sys.stderr = StringIO.StringIO() self.addCleanup(setattr, sys, 'stdout', self._stdout) self.addCleanup(setattr, sys, 'stderr', self._stderr) self.servers = [ {'SERVER_ID': 'localhost', 'HOST': 'localhost', 'PORT': '8000'}, {'SERVER_ID': 'otherhost', 'HOST': 'localhost', 'PORT': '8001'}, ] _APP_SERVERS = settings.APP_SERVERS settings.APP_SERVERS = self.servers self.addCleanup(setattr, settings, 'APP_SERVERS', _APP_SERVERS) _DBFAILOVER_FLAG_DIR = getattr(settings, 'DBFAILOVER_FLAG_DIR', None) settings.DBFAILOVER_FLAG_DIR = tempfile.mkdtemp() self.addCleanup(shutil.rmtree, settings.DBFAILOVER_FLAG_DIR, True) self.addCleanup(setattr, settings, 'DBFAILOVER_FLAG_DIR', _DBFAILOVER_FLAG_DIR) backup_db = copy(settings.DB_CONNECTIONS[0]) backup_db['ID'] = 'backup' settings.DB_CONNECTIONS.append(backup_db) # setup wsgi intercept mechanism to simulate wsgi server urllib2_intercept.install_opener() for server in self.servers: add_wsgi_intercept(server['HOST'], int(server['PORT']), WSGIHandler)
def install(browser): install_opener()
def setUp(self): if DO_TESTS: patch() install_opener()
def test_https_default_port(): # I guess the default port for https is 80 but I thoght it would be 443 urllib2_intercept.install_opener() urllib2.urlopen('https://some_hopefully_nonexistant_domain/') assert test_wsgi_app.success()
#!/usr/bin/env python __author__ = "Abhinav Sarkar <*****@*****.**>" __version__ = "0.2" __license__ = "GNU Lesser General Public License" import unittest import sys, os from wsgi_intercept.urllib2_intercept import install_opener import wsgi_intercept from .wsgi_test_app import create_wsgi_app install_opener() wsgi_intercept.add_wsgi_intercept('ws.audioscrobbler.com', 80, create_wsgi_app) sys.path.append(os.path.dirname(os.path.dirname(__file__))) from lastfm import Api class TestTrack(unittest.TestCase): """ A test class for the Geo module. """ def setUp(self): self.track = api.get_track('Lithium', 'Evanescence') def tearDown(self): pass def testTrackStats(self): self.assertEqual(self.track.stats.listeners, 159098) self.assertEqual(self.track.stats.playcount, 1281349)
def __init__(self, port=9876): install_opener() wsgi_intercept.add_wsgi_intercept('localhost', port, self.interceptor)
def setUp(self): global _CPT _CPT = 0 if DO_TESTS: install_opener()
def install(): mechanize.Browser = Browser install_opener()
def test_https(): urllib2_intercept.install_opener() urllib2.urlopen('https://some_hopefully_nonexistant_domain:443/') assert test_wsgi_app.success()
""" Gives both a test to make sure we're using wsgi_intercept correctly, and shows us how it's done...""" from __future__ import with_statement import unittest from wsgi_intercept.urllib2_intercept import install_opener install_opener() # Does the replacing... #import urllib2 import wsgi_intercept from test_helpers import * def ourResponseFunction(environ, start_response): status = '200 OK' response_headers = [('Content-type','text/plain')] start_response(status, response_headers) return ['Hello world!!\n'] class postTestAndResponseObject(object): def __init__(self): self.postedInfo = "" def __call__(self, environ, start_response): self.postedInfo = environ['wsgi.input'].read() #print start_response #print start_response.__class__ #print start_response.read() status = '200 OK' response_headers = [('Content-type','text/plain')]
#!/usr/bin/env python __author__ = "Abhinav Sarkar <*****@*****.**>" __version__ = "0.2" __license__ = "GNU Lesser General Public License" import unittest import sys, os from wsgi_intercept.urllib2_intercept import install_opener import wsgi_intercept from wsgi_test_app import create_wsgi_app install_opener() wsgi_intercept.add_wsgi_intercept('ws.audioscrobbler.com', 80, create_wsgi_app) sys.path.append(os.path.dirname(os.path.dirname(__file__))) from lastfm import Api class TestArtist(unittest.TestCase): """ A test class for the Artist module. """ def setUp(self): self.artist = api.get_artist("Bon Jovi") def tearDown(self): pass def testArtistStats(self): self.assertEqual(self.artist.stats.listeners, 718040) self.assertEqual(self.artist.stats.playcount, 15353197)
def setUp(self): def create_fn(): return pylons.test.pylonsapp install_opener() wsgi_intercept.add_wsgi_intercept('localhost', 80, create_fn)