Esempio n. 1
0
    def setUpClass(cls, *args, **kwargs):
        ast_logger = logging.getLogger('opencenter.webapp.ast')
        ast_logger.setLevel(logging.INFO)

        cls.app = webapp.WebServer('opencenter',
                                   configfile='tests/test.conf',
                                   debug=True)
        init_db(cls.app.config['database_uri'], migrate=False)
        cls.client = cls.app.test_client()
        cls.logger = cls.app.logger
Esempio n. 2
0
def inject(cls):
    model = getattr(cls, 'base_object', None)

    if model is None:
        raise SyntaxError("missing base object")

    test = lambda self: _test_get_schema(self)
    test.__name__ = 'test_get_primitive_schema'
    setattr(cls, test.__name__, test)

    app = webapp.WebServer('opencenter',
                           configfile='tests/test.conf',
                           debug=True)

    init_db(app.config['database_uri'], migrate=False)
    client = app.test_client()
    logger = app.logger

    resp = client.get('/admin/%ss/schema' % model)
    out = json.loads(resp.data)
    schema = out['schema']

    all_fields = [x for x in schema]
    all_fields.remove('id')
    req_fields = [x for x in schema if (schema[x]['required'] is True) and
                  (schema[x]['primary_key'] is False)]

    for field in req_fields:
        test = lambda self, field=field: _test_missing_create_field(
            self, field, 400)
        test.__name__ = str('test_create_%s_without_%s_returns_%d' %
                            (model, field, 400))

        setattr(cls, test.__name__, test)

    for field in all_fields:
        if field not in req_fields:
            test = lambda self, field=field: _test_missing_create_field(
                self, field, 201)
            test.__name__ = str('test_create_%s_without_%s_returns_%d' %
                                (model, field, 201))

            setattr(cls, test.__name__, test)

    test = lambda self:  _test_request_returns(
        self, 'get', '/admin/%s/999999' % self._pluralize(self.base_object),
        {}, 404)
    test.__name__ = str('test_request_bad_id_returns_404')
    setattr(cls, test.__name__, test)

    return cls
Esempio n. 3
0
def main():
    server = WebServer("opencenter",
                       argv=sys.argv[1:],
                       configfile='local.conf',
                       debug=True)

    @server.after_request
    def allow_cors(response):
        if 'cors_uri' in server.config and \
                'Origin' in request.headers and \
                request.headers['Origin'] in server.config['cors_uri']:
            response.headers['Access-Control-Allow-Origin'] = \
                request.headers['Origin']
            response.headers['Access-Control-Allow-Methods'] = \
                'HEAD,GET,PUT,POST,OPTIONS,DELETE'
            response.headers['Access-Control-Allow-Headers'] = \
                'Content-Type'
        return response

    @server.before_request
    def auth_f():
        if not is_allowed(roles=None):
            return authenticate()

    init_db(server.config['database_uri'])

    if 'key_file' in server.config and 'cert_file' in server.config:
        import ssl
        verification = ssl.CERT_NONE
        ca_certs = None
        if 'ca_cert' in server.config:
            ca_certs = [server.config['ca_cert']]
            verification = ssl.CERT_OPTIONAL
        http_server = WSGIServer(
            (server.config['bind_address'], int(server.config['bind_port'])),
            server,
            keyfile=server.config['key_file'],
            certfile=server.config['cert_file'],
            cert_reqs=verification,
            ca_certs=ca_certs)
    else:
        http_server = WSGIServer((server.config['bind_address'],
                                  int(server.config['bind_port'])), server)
    http_server.serve_forever()
Esempio n. 4
0
    import opencenter.db.database
    from opencenter.db import api as db_api
    from opencenter.db.database import init_db

    from sqlalchemy.orm import sessionmaker, create_session, scoped_session
    from sqlalchemy.ext.declarative import declarative_base

    from opencenterclient.client import OpenCenterEndpoint

    from opencenter.webapp.ast import FilterBuilder, FilterTokenizer
    from opencenter.webapp.solver import Solver

    ep = OpenCenterEndpoint()

    init_db('sqlite:///opencenter.db')
    db_session = scoped_session(lambda: create_session(autocommit=False,
                                                       autoflush=False,
                                                       bind=engine))

    Base = declarative_base()
    Base.query = db_session.query_property()

    ##########################

    ast_logger = logging.getLogger('opencenter.webapp.ast')
    ast_logger.setLevel(logging.WARNING)

    expr1 = 'facts.woof = "goober"'
    expr2 = 'facts.arf = "woof"'
Esempio n. 5
0
##############################################################################

import os
import sys

from migrate.versioning.shell import main

from opencenter.db.database import init_db
from opencenter.webapp import Thing

foo = Thing("opencenter",
            argv=sys.argv[1:],
            configfile='local.conf',
            debug=True)

init_db(foo.config['database_uri'])
# try multiple repo paths, for when devving locally versus package
for prefixes in ['/usr/share/pyshared', '.']:
    repo = os.path.join(*(prefixes.split('/') +
                          ['opencenter', 'db', 'migrate_repo']))
    if os.path.exists(repo):
        break

    repo = '/' + repo
    if os.path.exists(repo):
        break

if not os.path.exists(repo):
    print 'cannot find repo.'
    sys.exit(1)