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
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
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()
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"'
############################################################################## 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)