Esempio n. 1
0
    def __get__(self, session, type=None):
        """Retrieve the current session, or create one within our stores if missing."""

        if session is None:
            return self

        now = datetime.utcnow()
        sid = str(session._id)

        if sid not in self._sessions:
            if __debug__:
                log.debug("Constructing new in-memory session.")

            self._sessions[sid] = Context()

        elif self._expire and '_expires' in self._sessions[
                sid] and self._sessions[sid]._expires <= now:
            if __debug__:
                log.debug("Recreating expired in-memory session.")

            self._sessions[sid] = Context()

        elif __debug__:
            log.debug("Loading existing in-memory session.")

        session[self.name] = self._sessions[sid]

        return self._sessions[sid]
Esempio n. 2
0
def test_inline_console_disallowed():
	ctx = Context()
	ctx.request = Request.blank('/')
	con = Console(ctx)
	
	with pytest.raises(HTTPNotFound):
		con()
Esempio n. 3
0
def test_inline_console_disallowed():
    ctx = Context()
    ctx.request = Request.blank('/')
    con = Console(ctx)

    with pytest.raises(HTTPNotFound):
        con()
Esempio n. 4
0
	def setUp(self):
		self._ctx = Context(
				request = Request.blank('/foo/bar'),
				extension = Context(signal=Context(dispatch=[])),
				dispatched = False,
				callback = False,
				events = [],
			)
		self.view = self._ctx.view = WebViews(self._ctx)
		self._ctx.environ = self._ctx.request.environ
Esempio n. 5
0
def test_inline_console():
    ctx = Context()
    ctx.request = Request.blank('/')
    ext = DebugExtension()
    ext(ctx, mock_app)

    con = Console(ctx)

    result = con()
    assert 'CONSOLE_MODE = true' in result.text
Esempio n. 6
0
def test_inline_console():
	ctx = Context()
	ctx.request = Request.blank('/')
	ext = DebugExtension()
	ext(ctx, mock_app)
	
	con = Console(ctx)
	
	result = con()
	assert 'CONSOLE_MODE = true' in result.text
Esempio n. 7
0
def test_analytics_extension():
    ctx = Context(response=Context(headers=dict()))
    ext = AnalyticsExtension()

    assert not hasattr(ctx, '_start_time')
    ext.prepare(ctx)

    assert hasattr(ctx, '_start_time')
    ext.before(ctx)
    time.sleep(0.1)

    ext.after(ctx)
    assert 0.1 <= float(ctx.response.headers['X-Generation-Time']) <= 0.2
Esempio n. 8
0
def test_annotation_transformation():
    ext = AnnotationExtension()
    ctx = Context()

    result = ext.transform(ctx, endpoint, 1134)

    assert result == ('int', 1134)
Esempio n. 9
0
def test_existing_thread_local_extension():
	ctx = Context()
	ext = ThreadLocalExtension()
	
	assert not hasattr(local, 'context')
	ext.start(ctx)
	
	assert local.context is ctx
	
	rctx = ctx._promote('RequestContext')
	ext.prepare(rctx)
	
	assert local.context is rctx
	
	ext.done(rctx)
	assert not hasattr(local, 'context')
	
	ext.stop(ctx)
Esempio n. 10
0
def test_debug_extension_console():
    ext = DebugExtension()
    req = Request.blank('/__console__')
    ctx = Context()
    app = ext(ctx, mock_app)

    response = req.get_response(app)

    assert 'debugger.js' in response.text
Esempio n. 11
0
def test_annotation_method():
    ext = AnnotationExtension()
    ctx = Context()
    args = []
    kwargs = {'a': '27', 'b': '42'}

    ext.mutate(ctx, Endpoint().endpoint, args, kwargs)

    assert kwargs == {'a': 27, 'b': 42}
Esempio n. 12
0
def test_existing_thread_local_extension():
    ctx = Context()
    ext = ThreadLocalExtension()

    assert not hasattr(local, 'context')
    ext.start(ctx)

    assert local.context is ctx

    rctx = ctx._promote('RequestContext')
    ext.prepare(rctx)

    assert local.context is rctx

    ext.done(rctx)
    assert not hasattr(local, 'context')

    ext.stop(ctx)
Esempio n. 13
0
def test_annotation_positional():
    ext = AnnotationExtension()
    ctx = Context()
    args = ['27', '42']
    kwargs = {}

    ext.mutate(ctx, endpoint, args, kwargs)

    assert args == [27, 42]
    assert kwargs == {}
Esempio n. 14
0
def test_debug_extension_catches():
    ext = DebugExtension()
    req = Request.blank('/')
    ctx = Context()
    app = ext(ctx, mock_app)

    response = req.get_response(app)

    assert 'CONSOLE_MODE = false' in response.text
    assert 'by zero' in response.text
Esempio n. 15
0
def test_annotation_bare():
    ext = AnnotationExtension()
    ctx = Context()
    args = []
    kwargs = {'a': '27', 'b': '42'}

    ext.mutate(ctx, bare_endpoint, args, kwargs)

    assert kwargs == {'a': '27', 'b': '42'}

    assert ext.transform(ctx, bare_endpoint, None) is None
Esempio n. 16
0
def test_lazy_context_value():
    Ctx = Context(sample=lazy(mock_lazy_value, 'sample'))._promote(
        'MockContext', False)
    ctx = Ctx(count=0, ran=False)

    assert isinstance(Ctx.sample, lazy)
    assert 'sample' not in ctx.__dict__
    assert not ctx.ran
    assert ctx.count == 0
    assert ctx.sample == 42
    assert 'sample' in ctx.__dict__
    assert ctx.sample == 42
    assert ctx.count == 1
Esempio n. 17
0
def test_new_thread_local_extension():
	ctx = Context()
	ext = ThreadLocalExtension('web:local')
	
	assert not hasattr(web, 'local')
	
	ext.start(ctx)
	
	local = web.local
	
	assert local.context is ctx
	
	rctx = ctx._promote('RequestContext')
	ext.prepare(rctx)
	
	assert local.context is rctx
	
	ext.done(rctx)
	assert not hasattr(local, 'context')
	
	ext.stop(ctx)
	
	assert not hasattr(web, 'local')
Esempio n. 18
0
def test_basic_context_operations():
    sample = Context(foo=1, bar=2, _baz=3)

    assert sorted(sample) == ['bar', 'foo']
    assert len(sample) == 2
    assert sample['foo'] == 1

    del sample['bar']

    with pytest.raises(KeyError):
        sample['bar']

    with pytest.raises(KeyError):
        del sample['bar']
Esempio n. 19
0
def test_new_thread_local_extension():
    ctx = Context()
    ext = ThreadLocalExtension('web:local')

    assert not hasattr(web, 'local')

    ext.start(ctx)

    local = web.local

    assert local.context is ctx

    rctx = ctx._promote('RequestContext')
    ext.prepare(rctx)

    assert local.context is rctx

    ext.done(rctx)
    assert not hasattr(local, 'context')

    ext.stop(ctx)

    assert not hasattr(web, 'local')
Esempio n. 20
0
def context():
    """Sometimes, you just need an empty context."""
    yield Context()
Esempio n. 21
0
 def test_reviewer_example_with_role(self, reviewer, context):
     context.user = Context(role={'reviewer'})
     assert reviewer(context) is True
Esempio n. 22
0
 def test_reviewer_example_without_role(self, reviewer, context):
     context.user = Context(role={'peasant'})
     assert reviewer(context) is None
Esempio n. 23
0
 def test_reviewer_example_with_no_role_field(self, reviewer, context):
     context.user = Context()
     assert reviewer(context) is None
Esempio n. 24
0
 def test_admin_example_user_who_is_admin(self, admin, context):
     context.user = Context(admin=True)
     assert admin(context) is True
Esempio n. 25
0
 def test_admin_example_user_who_is_not_admin(self, admin, context):
     context.user = Context(admin=False)
     assert admin(context) is None
Esempio n. 26
0
 def test_admin_example_user_with_no_admin_field(self, admin, context):
     context.user = Context()
     assert admin(context) is None
Esempio n. 27
0
def test_far_future_expires():
    context = Context(response=Context())
    sample.far(context, 'foo.txt')
    assert context.response.cache_expires == 60 * 60 * 24 * 365