def serve_request(path): """Given an URL path, return response. """ request = StubRequest(path) request.website = test_website response = test_website.handle_safely(request) return response
def serve_request(path, user=None): """Given an URL path, return response. """ request = StubRequest(path) request.website = test_website if user is not None: user = User.from_id(user) # Note that Cookie needs a bytestring. request.headers.cookie[str('session')] = user.session_token response = test_website.handle_safely(request) return response
def test_bad_fails(): request = StubRequest() # once to get a WWW-Authenticate header hook = inbound_responder(_auth_func("username", "password"), realm="*****@*****.**") response = raises(Response, hook, request).value # do something with the header auth_headers = _auth_headers(response) request.headers['Authorization'] = _digest_auth_for(auth_headers, "username", "badpassword") response = raises(Response, hook, request).value assert response.code == 401, response assert not request.auth.authorized()
def test_good_works(): request = StubRequest() # once to get a WWW-Authenticate header hook = inbound_responder(_auth_func("username", "password"), realm="*****@*****.**") response = raises(Response, hook, request).value # do something with the header auth_headers = _auth_headers(response) request.headers['Authorization'] = _digest_auth_for(auth_headers, "username", "password") #print repr(request.headers['Authorization']) response = hook(request) success = request.auth.authorized() assert success assert request.auth.username() == "username", request.auth.username()
def load_request(path): """Given an URL path, return request. """ request = StubRequest(path) request.website = test_website # XXX HACK - aspen.website should be refactored from aspen import dispatcher, sockets test_website.hooks.run('inbound_early', request) dispatcher.dispatch(request) # sets request.fs request.socket = sockets.get(request) test_website.hooks.run('inbound_late', request) return request
def load_simplate(path): """Given an URL path, return resource. """ request = StubRequest(path) request.website = test_website # XXX HACK - aspen.website should be refactored from aspen import gauntlet, sockets test_website.hooks.inbound_early.run(request) gauntlet.run(request) # sets request.fs request.socket = sockets.get(request) test_website.hooks.inbound_late.run(request) return resources.get(request)
def test_configuration_script_can_set_renderer_default(mk): CONFIG = """ website.renderer_default="stdlib_format" """ SIMPLATE = """ name="program" [----] Greetings, {name}! """ mk( ('.aspen/configure-aspen.py', CONFIG), ('index.html.spt', SIMPLATE) ) w = Website(['--www_root', FSFIX, '-p', fix('.aspen'), '--show_tracebacks=yes']) request = StubRequest(b'/') request.website = w response = w.handle_safely(request) actual = response.body.strip() expected = 'Greetings, program!' assert actual == expected
def test_double_failure_still_sets_response_dot_request(mk): mk( '.aspen' , ('.aspen/foo.py', """ def bar(response): response.request """) , ( '.aspen/configure-aspen.py' , 'import foo\nwebsite.hooks.outbound.append(foo.bar)' ) , ('index.html.spt', "raise heck\n[---]\n") ) # Intentionally break the website object so as to trigger a double failure. project_root = os.path.join(FSFIX, '.aspen') website = Website(['--www_root='+FSFIX, '--project_root='+project_root]) del website.renderer_factories response = website.handle_safely(StubRequest()) expected = 500 actual = response.code assert actual == expected
def test_request_line_version_raw_works(): request = StubRequest() actual = request.line.version.raw expected = u"HTTP/1.1" assert actual == expected
def test_is_xhr_true(): request = StubRequest() request.headers['X-Requested-With'] = 'XmlHttpRequest' assert request.is_xhr()
def test_is_xhr_is_case_insensitive(): request = StubRequest() request.headers['X-Requested-With'] = 'xMLhTTPrEQUEST' assert request.is_xhr()
def test_methods_changing_changes(): request = StubRequest() request.line.method = 'POST' expected = "POST" actual = request.line.method assert actual == expected
def test_is_xhr_false(): request = StubRequest() assert not request.is_xhr()
def test_allow_can_handle_lowercase(): request = StubRequest() expected = 405 actual = raises(Response, request.allow, 'post').value.code assert actual == expected
def test_methods_start_with_GET(): request = StubRequest() expected = "GET" actual = request.line.method assert actual == expected
def test_allow_allows_allowed(): request = StubRequest() expected = None actual = request.allow('GET') assert actual is expected
def test_allow_disallows_disallowed(): request = StubRequest() expected = 405 actual = raises(Response, request.allow, 'POST').value.code assert actual == expected
def test_allow_default_method_is_GET(): request = StubRequest() expected = u'GET' actual = request.line.method assert actual == expected
actual = handle('/', '--unavailable=10').headers['Retry-After'] expected = datetime.datetime.utcnow().strftime('%a, %d %b %Y') assert actual.startswith(expected), actual assert actual.endswith(' +0000'), actual def test_double_failure_still_sets_response_dot_request(): mk( '.aspen' , ('.aspen/foo.py', """ def bar(response): response.request """) , ( '.aspen/configure-aspen.py' , 'import foo\nwebsite.hooks.outbound_late.register(foo.bar)' ) , ('index.html', "raise heck") ) # Intentionally break the website object so as to trigger a double failure. website = Website(['--www_root='+FSFIX, '--project_root=.aspen']) del website.renderer_factories response = website.handle_safely(StubRequest()) expected = 500 actual = response.code assert actual == expected, actual attach_teardown(globals())
def test_request_line_version_defaults_to_HTTP_1_1(): request = StubRequest() actual = request.line.version.info expected = (1, 1) assert actual == expected
def test_request_line_raw_works(): request = StubRequest() actual = request.line.raw expected = u"GET / HTTP/1.1" assert actual == expected
def _request_with(authfunc, auth_header): request = StubRequest() if auth_header is not None: request.headers['Authorization'] = auth_header hook = inbound_responder(authfunc) return hook(request)