Beispiel #1
0
def init_app(app, **kwargs):
    # pylint: disable=unused-argument,unused-variable

    # Touch underlying modules
    from . import models, routes  # noqa

    api.add_namespace(routes.ns)
Beispiel #2
0
def create_api(environment_name=None):
    for namespace in NAMESPACES:
        api.add_namespace(namespace)
    app = Flask(__name__)
    #app.config.from_object(config[environment_name])
    app.config.from_object(Config)
    CORS(app)
    with app.app_context():

        db.init_app(app)
        db.create_all()
        migrate.init_app(app, db)
        api.init_app(app)
    return app
Beispiel #3
0
def register_routes(app):
    # Set URL rules for resources
    app.add_url_rule('/', endpoint='index')

    api.add_namespace(mines_api)
    api.add_namespace(parties_api)
    api.add_namespace(permits_api)
    api.add_namespace(document_api)
    api.add_namespace(document_manager_api)

    # Healthcheck endpoint
    @api.route('/health')
    class Healthcheck(Resource):
        def get(self):
            return {'success': 'true'}

    # Default error handler to propagate lower level errors up to the API level
    @api.errorhandler
    def default_error_handler(error):
        _, value, traceback = sys.exc_info()
        return json.loads({"error": str(traceback)})
Beispiel #4
0
def init_app(app):
    from . import resources, models  # noqa: F401
    api.add_namespace(rewards_api)
Beispiel #5
0
def register_routes(app):
    # Set URL rules for resources
    app.add_url_rule('/', endpoint='index')

    api.add_namespace(compliance_api)
    api.add_namespace(mines_api)
    api.add_namespace(parties_api)
    api.add_namespace(download_token_api)
    api.add_namespace(users_api)
    api.add_namespace(search_api)
    api.add_namespace(variances_api)
    api.add_namespace(incidents_api)
    api.add_namespace(reporting_api)
    api.add_namespace(now_sub_api)
    api.add_namespace(now_app_api)
    api.add_namespace(exports_api)
    api.add_namespace(doc_gen_api)
    api.add_namespace(securities_api)
    api.add_namespace(verify_api)
    api.add_namespace(orgbook_api)

    # Healthcheck endpoint
    @api.route('/health')
    class Healthcheck(Resource):
        def get(self):
            return {'status': 'pass'}

    @api.errorhandler(AuthError)
    def jwt_oidc_auth_error_handler(error):
        app.logger.error(str(error))
        app.logger.error('REQUEST\n' + str(request))
        app.logger.error('HEADERS\n ' + str(request.headers))
        return {
            'status': getattr(error, 'status_code', 401),
            'message': str(error),
        }, getattr(error, 'status_code', 401)

    @api.errorhandler(Forbidden)
    def forbidden_error_handler(error):
        app.logger.error(str(error))
        app.logger.error('REQUEST\n' + str(request))
        app.logger.error('HEADERS\n ' + str(request.headers))
        return {
            'status': getattr(error, 'status_code', 403),
            'message': str(error),
        }, getattr(error, 'status_code', 403)

    @api.errorhandler(AssertionError)
    def assertion_error_handler(error):
        app.logger.error(str(error))
        return {
            'status': getattr(error, 'code', 400),
            'message': str(error),
        }, getattr(error, 'code', 400)

    # Recursively add handler to every SQLAlchemy Error
    def sqlalchemy_error_handler(error):
        app.logger.error(str(error))
        app.logger.error(type(error))
        return {
            'status': getattr(error, 'status_code', 400),
            'message': str(error),
        }, getattr(error, 'status_code', 400)

    def _add_sqlalchemy_error_handlers(classname):
        for subclass in classname.__subclasses__():
            (api.errorhandler(subclass))(sqlalchemy_error_handler)

            if len(subclass.__subclasses__()) != 0:
                _add_sqlalchemy_error_handlers(subclass)

    _add_sqlalchemy_error_handlers(SQLAlchemyError)

    @api.errorhandler(Exception)
    def default_error_handler(error):
        app.logger.error(str(error))
        return {
            'status': getattr(error, 'code', 500),
            'message': str(error),
        }, getattr(error, 'code', 500)
Beispiel #6
0
        return user_security.is_restricted()

    @requires_any_of([VIEW_ALL, MINESPACE_PROPONENT])
    def delete(self):
        user_security = auth.get_current_user_security()
        return user_security.is_restricted()

    @requires_any_of([VIEW_ALL, MINESPACE_PROPONENT])
    def put(self):
        user_security = auth.get_current_user_security()
        return user_security.is_restricted()


api = Namespace('authtest')
api.add_resource(DummyAuthResource, '')
app_api.add_namespace(api)


@pytest.fixture(scope="function")
def setup_info(db_session):
    User._test_mode = False
    auth.clear_cache()
    MinespaceUserFactory(email_or_username='******')

    yield

    User._test_mode = True


# Test no role
def test_get_no_auth_user(test_client, db_session, auth_headers, setup_info):
Beispiel #7
0
def init_app(app):
    from . import resources  # noqa: F401
    api.add_namespace(auth_api)
Beispiel #8
0
def register_routes(app):
    # Set URL rules for resources
    app.add_url_rule('/', endpoint='index')

    api.add_namespace(mines_api)
    api.add_namespace(parties_api)
    api.add_namespace(permits_api)
    api.add_namespace(document_api)
    api.add_namespace(document_manager_api)
    api.add_namespace(users_api)
    api.add_namespace(applications_api)
    api.add_namespace(search_api)
    api.add_namespace(variances_api)

    # Healthcheck endpoint
    @api.route('/health')
    class Healthcheck(Resource):
        def get(self):
            return {'success': 'true'}

    @api.errorhandler(AuthError)
    def jwt_oidc_auth_error_handler(error):
        return {
            'status': getattr(error, 'status_code', 401),
            'message': str(error),
        }, getattr(error, 'status_code', 401)

    @api.errorhandler(AssertionError)
    def assertion_error_handler(error):
        return {
            'status': getattr(error, 'code', 400),
            'message': str(error),
        }, getattr(error, 'code', 400)

    @api.errorhandler(Exception)
    def default_error_handler(error):
        if getattr(error, 'code', 500) == 500:
            current_app.logger.error(str(error))

        return {
            'status': getattr(error, 'code', 500),
            'message': str(error),
        }, getattr(error, 'code', 500)
Beispiel #9
0
def register_routes(app):
    # Set URL rules for resources
    app.add_url_rule('/', endpoint='index')

    api.add_namespace(mines_api)
    api.add_namespace(parties_api)
    api.add_namespace(download_token_api)
    api.add_namespace(users_api)
    api.add_namespace(applications_api)
    api.add_namespace(search_api)
    api.add_namespace(variances_api)
    api.add_namespace(incidents_api)
    api.add_namespace(reporting_api)
    api.add_namespace(now_api)

    # Healthcheck endpoint
    @api.route('/health')
    class Healthcheck(Resource):
        def get(self):
            return {'success': 'true'}

    @api.errorhandler(AuthError)
    def jwt_oidc_auth_error_handler(error):
        app.logger.error(str(error))
        return {
            'status': getattr(error, 'status_code', 401),
            'message': str(error),
        }, getattr(error, 'status_code', 401)

    @api.errorhandler(AssertionError)
    def assertion_error_handler(error):
        app.logger.error(str(error))
        return {
            'status': getattr(error, 'code', 400),
            'message': str(error),
        }, getattr(error, 'code', 400)

    # Recursively add handler to every SQLAlchemy Error
    def sqlalchemy_error_handler(error):
        app.logger.error(str(error))
        return {
            'status': getattr(error, 'status_code', 400),
            'message': str('Invalid request.'),
        }, getattr(error, 'status_code', 400)

    def _add_sqlalchemy_error_handlers(classname):
        for subclass in classname.__subclasses__():
            (api.errorhandler(subclass))(sqlalchemy_error_handler)

            if len(subclass.__subclasses__()) != 0:
                _add_sqlalchemy_error_handlers(subclass)

    _add_sqlalchemy_error_handlers(SQLAlchemyError)

    @api.errorhandler(Exception)
    def default_error_handler(error):
        if getattr(error, 'code', 500) == 500:
            app.logger.error(str(error))
        return {
            'status': getattr(error, 'code', 500),
            'message': str(error),
        }, getattr(error, 'code', 500)
Beispiel #10
0
# -*- coding: utf-8 -*-
# import json

# import requests
# from flask import Blueprint, current_app, g, request
from flask import Blueprint

from app import models as m  # noqa
from app.extensions import api  # noqa

from .adv import ns as adv_ns
from .category import ns as category_ns
from .conversion import ns as conversion_ns
from .offer import ns as offer_ns
# import jwt
from .user import ns as user_ns
from .domain import ns as domain_ns

bp = Blueprint('api', __name__, url_prefix='/api/v1.0')

api.add_namespace(ns=user_ns)
api.add_namespace(ns=category_ns)
api.add_namespace(ns=adv_ns)
api.add_namespace(ns=offer_ns)
api.add_namespace(ns=conversion_ns)
api.add_namespace(ns=domain_ns)
Beispiel #11
0
class DummyAuthResource(Resource):

api = Namespace('authtest')
api.add_resource(DummyAuthResource, '')
app_api.add_namespace(api)


@pytest.fixture(scope="function")
def setup_info(db_session):
    User._test_mode = False
    auth.clear_cache()
    MinespaceUserFactory(email='*****@*****.**')

    yield

    User._test_mode = True


# Test no role
def test_get_no_auth_user(test_client, db_session, auth_headers, setup_info):
    resp = test_client.get('/authtest', headers={})
    assert resp.status_code == 403


# Test view
def test_get_view_auth_applies_user(test_client, db_session, auth_headers, setup_info):
    resp = test_client.get('/authtest', headers=auth_headers['view_only_auth_header'])
    assert json.loads(resp.data.decode()) == False


# Test proponent
def test_get_proponent_auth_applies_user(test_client, db_session, auth_headers, setup_info):
    resp = test_client.get('/authtest', headers=auth_headers['proponent_only_auth_header'])
    assert json.loads(resp.data.decode()) == True


# Test no role
def test_put_no_auth_user(test_client, db_session, auth_headers, setup_info):
    resp = test_client.put('/authtest', headers={})
    assert resp.status_code == 403


# Test view
def test_put_view_auth_applies_user(test_client, db_session, auth_headers, setup_info):
    resp = test_client.put('/authtest', headers=auth_headers['view_only_auth_header'])
    assert json.loads(resp.data.decode()) == False


# Test proponent
def test_put_proponent_auth_applies_user(test_client, db_session, auth_headers, setup_info):
    resp = test_client.put('/authtest', headers=auth_headers['proponent_only_auth_header'])
    assert json.loads(resp.data.decode()) == True


# Test no role
def test_post_no_auth_user(test_client, db_session, auth_headers, setup_info):
    resp = test_client.post('/authtest', headers={})
    assert resp.status_code == 403


# Test view
def test_post_view_auth_applies_user(test_client, db_session, auth_headers, setup_info):
    resp = test_client.post('/authtest', headers=auth_headers['view_only_auth_header'])
    assert json.loads(resp.data.decode()) == False


# Test proponent
def test_post_proponent_auth_applies_user(test_client, db_session, auth_headers, setup_info):
    resp = test_client.post('/authtest', headers=auth_headers['proponent_only_auth_header'])
    assert json.loads(resp.data.decode()) == True


# Test no role
def test_delete_no_auth_user(test_client, db_session, auth_headers, setup_info):
    resp = test_client.delete('/authtest', headers={})
    assert resp.status_code == 403


# Test view
def test_delete_view_auth_applies_user(test_client, db_session, auth_headers, setup_info):
    resp = test_client.delete('/authtest', headers=auth_headers['view_only_auth_header'])
    assert json.loads(resp.data.decode()) == False


# Test proponent
def test_delete_proponent_auth_applies_user(test_client, db_session, auth_headers, setup_info):
    resp = test_client.delete('/authtest', headers=auth_headers['proponent_only_auth_header'])
    assert json.loads(resp.data.decode()) == True
def init_app(app):
    from . import resources, models  # noqa 401
    api.add_namespace(restaurant_api)
Beispiel #13
0
def init_app(app):
    from . import resources, models  # noqa: F401
    api.add_namespace(food_request_api)
def init_app(app):
    from . import resources  # noqa: 401
    api.add_namespace(test_api)
def register_routes(app):
    # Set URL rules for resources
    app.add_url_rule('/', endpoint='index')

    api.add_namespace(dsrp_settings_api)
    api.add_namespace(exports_api)
    api.add_namespace(application_api)
    api.add_namespace(download_api)
    api.add_namespace(permit_holder_api)
    api.add_namespace(well_api)
    api.add_namespace(liability_api)
    api.add_namespace(orgbook_api)
    api.add_namespace(authorization)
    api.add_namespace(nominate_well_site_api)

    # Healthcheck endpoint
    @api.route('/health')
    class Healthcheck(Resource):
        def get(self):
            return {'status': 'pass'}

    @api.errorhandler(AuthError)
    def jwt_oidc_auth_error_handler(error):
        app.logger.error(str(error))
        app.logger.error('REQUEST\n' + str(request))
        app.logger.error('HEADERS\n ' + str(request.headers))
        return {
            'status': getattr(error, 'status_code', 401),
            'message': str(error),
        }, getattr(error, 'status_code', 401)

    @api.errorhandler(Forbidden)
    def forbidden_error_handler(error):
        app.logger.error(str(error))
        app.logger.error('REQUEST\n' + str(request))
        app.logger.error('HEADERS\n ' + str(request.headers))
        return {
            'status': getattr(error, 'status_code', 403),
            'message': str(error),
        }, getattr(error, 'status_code', 403)

    @api.errorhandler(AssertionError)
    def assertion_error_handler(error):
        app.logger.error(str(error))
        app.logger.error('REQUEST\n' + str(request))
        app.logger.error('HEADERS\n ' + str(request.headers))
        return {
            'status': getattr(error, 'code', 400),
            'message': str(error),
        }, getattr(error, 'code', 400)

    # Recursively add handler to every SQLAlchemy Error
    def sqlalchemy_error_handler(error):
        app.logger.error(str(error))
        app.logger.error(type(error))
        return {
            'status': getattr(error, 'status_code', 400),
            'message': str(error),
        }, getattr(error, 'status_code', 400)

    def _add_sqlalchemy_error_handlers(classname):
        for subclass in classname.__subclasses__():
            (api.errorhandler(subclass))(sqlalchemy_error_handler)

            if len(subclass.__subclasses__()) != 0:
                _add_sqlalchemy_error_handlers(subclass)

    _add_sqlalchemy_error_handlers(SQLAlchemyError)

    @api.errorhandler(Exception)
    def default_error_handler(error):
        app.logger.error(str(error))
        app.logger.error('REQUEST\n' + str(request))
        app.logger.error('HEADERS\n ' + str(request.headers))
        return {
            'status': getattr(error, 'code', 500),
            'message': str(error),
        }, getattr(error, 'code', 500)