class TestWebFileStore(unittest.TestCase, SimpleUrlKVTest):
    def setUp(self):
        self.tmpdir = tempfile.mkdtemp()
        self.url_prefix = 'http://some/url/root/'
        self.store = WebFilesystemStore(self.tmpdir, self.url_prefix)

    def tearDown(self):
        shutil.rmtree(self.tmpdir)

    def test_url(self):
        key = 'some_key'
        expected = self.url_prefix + 'some_key'
        self.assertEqual(self.store.url_for(key), expected)

    def test_url_callable(self):
        prefix = 'http://some.prefix.invalid/'
        mock_callable = Mock(return_value=prefix)

        self.store = WebFilesystemStore(self.tmpdir, mock_callable)

        key = 'mykey'
        expected = prefix + key
        self.assertEqual(self.store.url_for(key), expected)

        mock_callable.assert_called_with(self.store, key)
Exemple #2
0
    def __init__(self, path, storage_url_prefix=None):
        if not os.path.exists(path):
            raise RuntimeError('Path {} does not exist'.format(path))

        if storage_url_prefix is None:
            self.store = FilesystemStore(path)
        else:
            self.store = WebFilesystemStore(path, storage_url_prefix)
    def test_url_callable(self, tmpdir, key):
        prefix = 'http://some.prefix.invalid/'
        mock_callable = Mock(return_value=prefix)

        store = WebFilesystemStore(tmpdir, mock_callable)

        expected = prefix + url_quote(key)
        assert store.url_for(key) == expected

        mock_callable.assert_called_with(store, key)
    def test_url_callable(self, tmpdir, key):
        prefix = 'http://some.prefix.invalid/'
        mock_callable = Mock(return_value=prefix)

        store = WebFilesystemStore(tmpdir, mock_callable)

        expected = prefix + url_quote(key)
        assert store.url_for(key) == expected

        mock_callable.assert_called_with(store, key)
Exemple #5
0
class FilesystemStorage(Storage):
    def __init__(self, path, storage_url_prefix=None):
        if not os.path.exists(path):
            raise RuntimeError('Path {} does not exist'.format(path))

        if storage_url_prefix is None:
            self.store = FilesystemStore(path)
        else:
            self.store = WebFilesystemStore(path, storage_url_prefix)

    def _store_file(self, hash, file):
        self.store.put_file(hash, file)

    def get_download_url(self, file):
        if hasattr(self.store, 'url_for'):
            return self.store.url_for(file.hash)
    def test_url_callable(self):
        prefix = 'http://some.prefix.invalid/'
        mock_callable = Mock(return_value=prefix)

        self.store = WebFilesystemStore(self.tmpdir, mock_callable)

        key = 'mykey'
        expected = prefix + key
        self.assertEqual(self.store.url_for(key), expected)

        mock_callable.assert_called_with(self.store, key)
 def store(self, tmpdir, url_prefix):
     return WebFilesystemStore(tmpdir, url_prefix)
Exemple #8
0
from flask_app.middleware import *
from flask_app.middleware.csrf import CSRFProtectionExtension

load_dotenv()
# get environment variables
configure_logging()
# configure loggers before starting app

app = Flask(__name__)
app.config.update(**config)

# Configure Session using standard web session files,
# more store types available in simplekv package
# Hash Decorator provides session id
session_store = HashDecorator(
    WebFilesystemStore(os.getenv("FLASK_SESSION_FILE_PATH"),
                       os.getenv("FLASK_SESSION_URL_PREFIX")))
KVSessionExtension(session_store, app)

# Add CSRFProtect extension to flask app
# NOTE: this extends flask_wtf.CSRFProtect class; see class definition for details
CSRFProtectionExtension(app)

# Create Api blueprint and add resources (routes)
api_blueprint = Blueprint('api', __name__)
api = ElectroAPI(api_blueprint, catch_all_404s=True)
# contains custom error handler
api.add_resource(BillResource, "/bills", "/bills/<int:id>", endpoint="bill")
api.add_resource(UserResource, "/login", "/logout", endpoint="login")

# Register blueprint to app
app.register_blueprint(api_blueprint, url_prefix="/api")
 def setUp(self):
     self.tmpdir = tempfile.mkdtemp()
     self.url_prefix = 'http://some/url/root/'
     self.store = WebFilesystemStore(self.tmpdir, self.url_prefix)