コード例 #1
0
    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))
コード例 #2
0
    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)
コード例 #3
0
 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)
コード例 #5
0
ファイル: mock_http.py プロジェクト: Maseli/fixofx
 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()
コード例 #6
0
    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))
コード例 #7
0
 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)
コード例 #8
0
ファイル: fixture.py プロジェクト: vitaminmoo/unnaturalcode
    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)
コード例 #9
0
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)
コード例 #10
0
ファイル: testWebApi.py プロジェクト: Magnil/fairywren
	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
コード例 #11
0
    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
コード例 #12
0
 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)
コード例 #13
0
 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)
コード例 #14
0
ファイル: testTracker.py プロジェクト: yangs1202/fairywren
	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)
コード例 #15
0
ファイル: test_plot.py プロジェクト: rufuspollock/econ
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)
コード例 #16
0
ファイル: test_plot.py プロジェクト: okfn/econ
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)
コード例 #17
0
 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')
コード例 #18
0
 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')
コード例 #19
0
    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()
コード例 #22
0
ファイル: wsgi_browser.py プロジェクト: Maseli/fixofx
def install(browser):
    install_opener()
コード例 #23
0
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()
コード例 #24
0
ファイル: test_track.py プロジェクト: tek/python-lastfm
#!/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)
        
コード例 #25
0
 def __init__(self, port=9876):
     install_opener()
     wsgi_intercept.add_wsgi_intercept('localhost', port, self.interceptor)
コード例 #26
0
 def setUp(self):
     global _CPT
     _CPT = 0
     if DO_TESTS:
         install_opener()
 def setUp(self):
     global _CPT
     _CPT = 0
     if DO_TESTS:
         install_opener()
コード例 #28
0
def install():
    mechanize.Browser = Browser
    install_opener()
コード例 #29
0
def test_https():
    urllib2_intercept.install_opener()
    urllib2.urlopen('https://some_hopefully_nonexistant_domain:443/')
    assert test_wsgi_app.success()
コード例 #30
0
""" 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')]
コード例 #31
0
ファイル: mock_ofx_server.py プロジェクト: Maseli/fixofx
 def __init__(self, port=9876):
     install_opener()
     wsgi_intercept.add_wsgi_intercept('localhost', port, self.interceptor)
コード例 #32
0
#!/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)
コード例 #33
0
 def setUp(self):
     def create_fn():
         return pylons.test.pylonsapp
     install_opener()
     wsgi_intercept.add_wsgi_intercept('localhost', 80, create_fn)
コード例 #34
0
ファイル: test_wsgi_urllib2.py プロジェクト: Maseli/fixofx
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()
コード例 #35
0
ファイル: test_wsgi_urllib2.py プロジェクト: Maseli/fixofx
def test_https():
    urllib2_intercept.install_opener()
    urllib2.urlopen('https://some_hopefully_nonexistant_domain:443/')
    assert test_wsgi_app.success()