def test_trailing_slash_redirects_trailing_slash(): mk('foo') response = assert_raises(Response, check_trailing_slash, '/foo') expected = 301 actual = response.code assert actual == expected, actual
def test_trailing_slash_redirects_trailing_slash_to_the_right_place(): mk('foo') response = assert_raises(Response, check_trailing_slash, '/foo') expected = 'http://localhost/foo/' actual = response.headers.one('Location') assert actual == expected, actual
def test_packet_with_odd_frames_tells_you_that(): Packet_ = lambda s: list(Packet(s)) # assert_raises chokes on generator packet = FFFD+'4'+FFFD+'0:::'+FFFD exc = assert_raises(SyntaxError, Packet_, packet) expected = "There are an odd number of frames in this packet: %s" % packet actual = exc.args[0] assert actual == expected, actual
def test_get_app_doc_example_bar_no_slash(): mk('__', '__/etc', ('__/etc/apps.conf', EXAMPLE)) environ = dict() environ['wsgi.url_scheme'] = 'http' environ['HTTP_HOST'] = 'foo' environ['PATH_INFO'] = '/bar' err = assert_raises(Response, Website().get_app, environ) assert err.code == 301, err.code
def test_event_data_without_name_raises_ValueError(): exc = assert_raises( ValueError , Message.from_bytes , '5:::{"noom": "bar", "args": []}' ) expected = "An event message must have a 'name' key." actual = exc.args[0] assert actual == expected, actual
def test_raise_response_works(): expected = 404 response = assert_raises( Response , check , "from aspen import Response; raise Response(404)" ) actual = response.code assert actual == expected, actual
def test_event_data_with_reserved_name_raises_ValueError(): exc = assert_raises( ValueError , Message.from_bytes , '5:::{"name": "connect", "args": []}' ) expected = "That event name is reserved: connect." actual = exc.args[0] assert actual == expected, actual
def test_contested_url_path_trailing_second(): mk('__/etc', ('__/etc/apps.conf', """ /foo random:choice /foo/ random:sample """)) err = assert_raises(AppsConfError, Loader().load_apps) assert err.msg == "URL path is contested: '/foo/'", err.msg
def test_section_not_callable(): mk('__/etc', ('__/etc/handlers.conf', """ foo random:choice [string:digits] foo """)) err = assert_raises(HandlersConfError, Loader().load_handlers) assert err.msg == "'string:digits' is not callable", err.msg
def test_find_default_dir_no_default(): mk('fsfix') err = assert_raises(Response, u.find_default, ['index.htm'], 'fsfix') assert err.code == 403, err.code
def test_json_doesnt_handle_non_ascii_bytestrings(): assert_raises( UnicodeDecodeError , check , "response.body = {'Greetings': chr(181)}" , filename="foo.json" )
def test_must_be_callable(): mk('__/etc', ('__/etc/middleware.conf', 'string:digits')) err = assert_raises(MiddlewareConfError, Loader().load_middleware) assert err.msg == "'string:digits' is not callable"
def test_must_be_callable(): mk('.aspen', ('.aspen/hooks.conf', 'string:digits')) err = assert_raises(ConfFileError, load) assert err.msg == ("'string:digits' is not callable. [fsfix/.aspen" "/hooks.conf, line 1]"), err.msg
def test_from_bytes_too_few_colons_raises_SyntaxError(): exc = assert_raises(SyntaxError, Message.from_bytes, '3:') expected = "This message has too few colons: 3:." actual = exc.args[0] assert actual == expected, actual
def test_allow_can_handle_lowercase(): request = StubRequest() expected = 405 actual = assert_raises(Response, request.allow, 'post').code assert actual == expected, actual
def test_tornado_utf8_breaks_with_whitespace(): template = Template(u" {{ text }}") assert_raises(UnicodeDecodeError, template.generate, text=unichr(1758))
def test_section_no_rules_yet(): mk('__/etc', ('__/etc/handlers.conf', '[foo]')) err = assert_raises(HandlersConfError, Loader().load_handlers) assert err.msg == "no rules specified yet", err.msg
def test_section_bad_section_header(): mk('__/etc', ('__/etc/handlers.conf', '[foo')) err = assert_raises(HandlersConfError, Loader().load_handlers) assert err.msg == "missing end-bracket", err.msg
def test_anon_not_callable(): mk('__/etc', ('__/etc/handlers.conf', 'foo string:digits')) err = assert_raises(HandlersConfError, Loader().load_handlers) assert err.msg == "'string:digits' is not callable", err.msg
def test_anon_bad_line(): mk('__/etc', ('__/etc/handlers.conf', 'foo\n[foo]')) err = assert_raises(HandlersConfError, Loader().load_handlers) assert err.msg == "malformed line (no space): 'foo'", err.msg
def test_callback_root_fails_when_directory_doesnt_exist(): assert_raises(ConfigurationError, callback_root, None, None, 'fsfix', None)
def test_to_diesel_raises_AttributeError(): # This is because _to_diesel actually pushes bits, but we have no loop response = Response() assert_raises(AttributeError, response._to_diesel, DieselReq)
def test_virtual_path_raises_404_on_bad_typecast(): mk(('%year.int/foo.html', "Greetings, program!")) response = assert_raises(Response, check_virtual_paths, '/I am not a year./foo.html') expected = 404 actual = response.code assert actual == expected, actual
def test_virtual_path_raises_404_on_direct_access(): mk() response = assert_raises(Response, check_virtual_paths, '/%name/foo.html') expected = 404 actual = response.code assert actual == expected, actual
def test_virtual_path_raises_on_bad_typecast(): mk(('%year.int/foo.html', "Greetings, program!")) assert_raises(Response, check, '/I am not a year./foo.html')
def test_find_root_fails_when_directory_doesnt_exist(): assert_raises(ConfigurationError, find_root, ["fsfix"])
def test_virtual_path_raises_404_on_bad_typecast(): mk(('%year.int/foo.html', "Greetings, program!")) response = assert_raises(Response, check, '/I am not a year./foo.html') expected = 404 actual = response.code assert actual == expected, actual
def test_ConfigurationError_raised_if_no_cwd(): mk() os.chdir('fsfix') os.rmdir(os.getcwd()) c = Configurable() assert_raises(ConfigurationError, c.configure, [])
def test_virtual_path_raises_on_direct_access(): assert_raises(Response, check, '/%name/foo.html')
def test_intercept_socket_protects_direct_access(): request = Request(url="/foo.sock") assert_raises(Response, gauntlet.intercept_socket, request)
def test_virtual_path_raises_404_on_direct_access(): response = assert_raises(Response, check, '/%name/foo.html') expected = 404 actual = response.code assert actual == expected, actual
def test_bad_line(): mk('__/etc', ('__/etc/apps.conf', 'godisnowhere')) err = assert_raises(AppsConfError, Loader().load_apps) assert err.msg == "malformed line (no space): 'godisnowhere'", err.msg
def test_json_cant_have_more_than_one_page_break(): assert_raises(LoadError, check, "", filename="foo.json")
def test_bad_urlpath(): mk('__/etc', ('__/etc/apps.conf', 'foo string:digits')) err = assert_raises(AppsConfError, Loader().load_apps) assert err.msg == "URL path not specified absolutely: 'foo'", err.msg
def test_json_raises_TypeError_on_unknown_types(): assert_raises( TypeError , check , "class Foo: passresponse.body = Foo()" , filename="foo.json" )
def test_not_callable(): mk('__/etc', ('__/etc/apps.conf', '/ string:digits')) err = assert_raises(AppsConfError, Loader().load_apps) assert err.msg == "'string:digits' is not callable", err.msg
def test_virtual_path_raises_on_bad_typecast(): mk(('%year.int/foo.html', "Greetings, program!")) assert_raises(Response, check_virtual_paths, '/I am not a year./foo.html')
def test_from_bytes_non_digit_type_raises_ValueError(): exc = assert_raises(ValueError, Message.from_bytes, 'foo:::') expected = "The message type is not in 0..8: foo." actual = exc.args[0] assert actual == expected, actual
def test_virtual_path_raises_on_direct_access(): mk() assert_raises(Response, check_virtual_paths, '/%name/foo.html')
def test_blank_by_default(): assert_raises(AttributeError, lambda: Request().version)
def test_from_bytes_type_too_big_raises_ValueError(): exc = assert_raises(ValueError, Message.from_bytes, '9:::') expected = "The message type is not in 0..8: 9." actual = exc.args[0] assert actual == expected, actual
def test_allow_disallows_disallowed(): request = make_request() expected = 405 actual = assert_raises(Response, request.allow, 'POST').code assert actual == expected, actual
def test_response_body_cannot_be_unicode(): exc = assert_raises(TypeError, Response, body=u"Greetings, program!")
def test_allow_can_handle_lowercase(): request = make_request() expected = 405 actual = assert_raises(Response, request.allow, 'post').code assert actual == expected, actual
def test_allow_disallows_disallowed(): request = StubRequest() expected = 405 actual = assert_raises(Response, request.allow, 'POST').code assert actual == expected, actual
def test_channel_raises_AssertionError_on_double_add(): mk(('echo.sock', '')) socket = make_socket() channel = Channel('foo', ThreadedBuffer) channel.add(socket) assert_raises(AssertionError, channel.add, socket)
def test_packet_with_odd_frames_raises_SyntaxError(): Packet_ = lambda s: list(Packet(s)) # assert_raises chokes on generator assert_raises(SyntaxError, Packet_, FFFD+'4'+FFFD+'0:::'+FFFD)