def __call__(self, path='/', *a): """Given an URL path, return This only allows you to simulate GET requests with no querystring, so it's limited. But it's a something. Kind of. Almost. """ website = Website(self.argv + list(a)) request = StubRequest(path) request.website = website response = website.handle_safely(request) return response
def test_configuration_script_can_set_renderer_default(): 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, actual
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( '.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, actual
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
, ('.aspen/foo.py', """ def bar(response): response.request """) , ( '.aspen/configure-aspen.py' , 'import foo\nwebsite.hooks.outbound.append(foo.bar)' ) , ('index.html', "raise heck") ) # 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, actual def test_website_doesnt_clobber_outbound(): mk( ( '.aspen/configure-aspen.py' , 'import random\nwebsite.hooks.outbound.append(random.choice)' ) ) project_root = os.path.join(FSFIX, '.aspen') website = Website(['--www_root='+FSFIX, '--project_root='+project_root])
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())