from decorators import *
from dummy import *

def setup_module(mod):
    pass

def return1(r):
    return 1

def test_preparesite():
    r = FakeRequest('/foo')
    assert preparesite()(return1)(r) == 1
    assert r.headers_out['X-Application'] == 'mod_deco v0.1 unreleased'
    assert r.form == {} # see dummy.py

def test_OPTIONS():
    r = FakeRequest('/foo', method='OPTIONS')
    o = ['GET', 'HEAD', 'POST', 'PUT']
    assert OPTIONS(o)(return1)(r) == apache.OK
    assert r.headers_out['Allow'] == ','.join(o)
    assert r.content_length == 0
    r = FakeRequest('/foo', method='FOO')
    assert OPTIONS(o)(return1)(r) == apache.HTTP_NOT_IMPLEMENTED
    assert r.headers_out['Allow'] == ','.join(o)
    r = FakeRequest('/foo', method='GET')
    assert OPTIONS(o)(return1)(r) == 1

def test_responsewriter():
    r = FakeRequest('/foo')
    assert responsewriter()(return1)(r) == 1
    r = FakeRequest('/foo')
    assert responsewriter()(lambda r: 'foo')(r) == apache.OK
    assert r.written() == 'foo'
    r = FakeRequest('/foo')
    assert responsewriter()(lambda r: None)(r) == apache.OK
    assert r.written() == 'None'
    r = FakeRequest('/foo')
    assert responsewriter()(lambda r: doesntexist())(r) == apache.OK
    assert r.written().startswith('An exception occurred')

def test_PUTsupport():
    pass # XXX 

def test_treetostring():
    r = FakeRequest('/foo')
    assert treetostring()(return1)(r) == 1
    r = FakeRequest('/foo')
    from templess.templess import elnode, textnode
    foo = elnode('foo', {}, None, None)
    textnode('bar', foo)
    assert treetostring()(lambda r: foo)(r) == '<foo>bar</foo>'

def test_auth():
    pass # XXX


