Example #1
0
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()
Example #5
0
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
Example #6
0
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
Example #8
0
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
Example #9
0
def test_request_line_version_raw_works():
    request = StubRequest()
    actual = request.line.version.raw
    expected = u"HTTP/1.1"
    assert actual == expected
Example #10
0
def test_is_xhr_true():
    request = StubRequest()
    request.headers['X-Requested-With'] = 'XmlHttpRequest'
    assert request.is_xhr()
Example #11
0
def test_is_xhr_is_case_insensitive():
    request = StubRequest()
    request.headers['X-Requested-With'] = 'xMLhTTPrEQUEST'
    assert request.is_xhr()
Example #12
0
def test_methods_changing_changes():
    request = StubRequest()
    request.line.method = 'POST'
    expected = "POST"
    actual = request.line.method
    assert actual == expected
Example #13
0
def test_is_xhr_false():
    request = StubRequest()
    assert not request.is_xhr()
Example #14
0
def test_allow_can_handle_lowercase():
    request = StubRequest()
    expected = 405
    actual = raises(Response, request.allow, 'post').value.code
    assert actual == expected
Example #15
0
def test_methods_start_with_GET():
    request = StubRequest()
    expected = "GET"
    actual = request.line.method
    assert actual == expected
Example #16
0
def test_allow_allows_allowed():
    request = StubRequest()
    expected = None
    actual = request.allow('GET')
    assert actual is expected
Example #17
0
def test_allow_disallows_disallowed():
    request = StubRequest()
    expected = 405
    actual = raises(Response, request.allow, 'POST').value.code
    assert actual == expected
Example #18
0
def test_allow_default_method_is_GET():
    request = StubRequest()
    expected = u'GET'
    actual = request.line.method
    assert actual == expected
Example #19
0
    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())
Example #20
0
def test_request_line_version_defaults_to_HTTP_1_1():
    request = StubRequest()
    actual = request.line.version.info
    expected = (1, 1)
    assert actual == expected
Example #21
0
def test_request_line_raw_works():
    request = StubRequest()
    actual = request.line.raw
    expected = u"GET / HTTP/1.1"
    assert actual == expected
Example #22
0
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)