def test_file_uri(tmpdir):
    """
    File storage returns a url to access a given file from the Web.
    """
    storage = FileSystemStorage(location=str(tmpdir), base_uri="/test_media_url/")

    assert storage.uri("test.file") == "".join([storage.base_uri, "test.file"])

    # should encode special chars except ~!*()'
    # like encodeURIComponent() JavaScript function do
    assert storage.uri(r"""~!*()'@#$%^&*abc`+ =.file""") == """/test_media_url/~!*()'%40%23%24%25%5E%26*abc%60%2B%20%3D.file"""

    # should translate os path separator(s) to the url path separator
    assert storage.uri("""a/b\\c.file""") == """/test_media_url/a/b/c.file"""

    storage.base_uri = None

    with pytest.raises(ValueError):
        storage.uri("test.file")