def test_file_storage_preserves_filename_case(tmpdir):
    """
    The storage backend should preserve case of filenames.
    """
    storage = FileSystemStorage(location=str(tmpdir))

    f = storage.open("CaSe_SeNsItIvE", "w")
    f.write("storage contents")
    f.close()

    assert os.path.join(str(tmpdir), "CaSe_SeNsItIvE") == storage.path("CaSe_SeNsItIvE")
def test_file_path(tmpdir):
    """
    File storage returns the full path of a file
    """
    storage = FileSystemStorage(location=str(tmpdir))

    assert not storage.exists("test.file")

    f = io.StringIO("custom contents")
    f_name = storage.save("test.file", f)

    assert storage.path(f_name) == os.path.join(str(tmpdir), f_name)
def test_file_modified_time(tmpdir):
    """
    File storage returns a Datetime object for the last modified time of
    a file.
    """
    storage = FileSystemStorage(location=str(tmpdir))

    assert not storage.exists("test.file")

    f = io.StringIO("custom contents")
    f_name = storage.save("test.file", f)
    mtime = storage.modified_time(f_name)

    assert mtime == datetime.datetime.fromtimestamp(os.path.getmtime(storage.path(f_name)))
    assert datetime.datetime.now() - storage.modified_time(f_name) < datetime.timedelta(seconds=2)