コード例 #1
0
ファイル: memory.py プロジェクト: marrow/web.session
    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]
コード例 #2
0
ファイル: test_debug.py プロジェクト: marrow/WebCore
def test_inline_console_disallowed():
	ctx = Context()
	ctx.request = Request.blank('/')
	con = Console(ctx)
	
	with pytest.raises(HTTPNotFound):
		con()
コード例 #3
0
ファイル: test_debug.py プロジェクト: maximest-pierre/WebCore
def test_inline_console_disallowed():
    ctx = Context()
    ctx.request = Request.blank('/')
    con = Console(ctx)

    with pytest.raises(HTTPNotFound):
        con()
コード例 #4
0
ファイル: test_views.py プロジェクト: maximest-pierre/WebCore
	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
コード例 #5
0
ファイル: test_debug.py プロジェクト: maximest-pierre/WebCore
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
コード例 #6
0
ファイル: test_debug.py プロジェクト: marrow/WebCore
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
コード例 #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
コード例 #8
0
def test_annotation_transformation():
    ext = AnnotationExtension()
    ctx = Context()

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

    assert result == ('int', 1134)
コード例 #9
0
ファイル: test_local.py プロジェクト: marrow/WebCore
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)
コード例 #10
0
ファイル: test_debug.py プロジェクト: maximest-pierre/WebCore
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
コード例 #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}
コード例 #12
0
ファイル: test_local.py プロジェクト: maximest-pierre/WebCore
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)
コード例 #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 == {}
コード例 #14
0
ファイル: test_debug.py プロジェクト: maximest-pierre/WebCore
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
コード例 #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
コード例 #16
0
ファイル: test_util.py プロジェクト: maximest-pierre/WebCore
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
コード例 #17
0
ファイル: test_local.py プロジェクト: marrow/WebCore
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')
コード例 #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']
コード例 #19
0
ファイル: test_local.py プロジェクト: maximest-pierre/WebCore
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')
コード例 #20
0
def context():
    """Sometimes, you just need an empty context."""
    yield Context()
コード例 #21
0
 def test_reviewer_example_with_role(self, reviewer, context):
     context.user = Context(role={'reviewer'})
     assert reviewer(context) is True
コード例 #22
0
 def test_reviewer_example_without_role(self, reviewer, context):
     context.user = Context(role={'peasant'})
     assert reviewer(context) is None
コード例 #23
0
 def test_reviewer_example_with_no_role_field(self, reviewer, context):
     context.user = Context()
     assert reviewer(context) is None
コード例 #24
0
 def test_admin_example_user_who_is_admin(self, admin, context):
     context.user = Context(admin=True)
     assert admin(context) is True
コード例 #25
0
 def test_admin_example_user_who_is_not_admin(self, admin, context):
     context.user = Context(admin=False)
     assert admin(context) is None
コード例 #26
0
 def test_admin_example_user_with_no_admin_field(self, admin, context):
     context.user = Context()
     assert admin(context) is None
コード例 #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