import logging import logstash_formatter import requests import os.path from peewee import MySQLDatabase, SqliteDatabase from data.buildlogs import BuildLogs from data.userevent import UserEventBuilder from test import analytics as fake_analytics from test.testlogs import TestBuildLogs def build_requests_session(): sess = requests.Session() adapter = requests.adapters.HTTPAdapter(pool_connections=100, pool_maxsize=100) sess.mount('http://', adapter) sess.mount('https://', adapter) return sess def logs_init_builder(level=logging.DEBUG, formatter=logstash_formatter.LogstashFormatter()): @staticmethod def init_logs(): handler = logging.StreamHandler() root_logger = logging.getLogger('') root_logger.setLevel(level) handler.setFormatter(formatter) root_logger.addHandler(handler) return init_logs class DefaultConfig(object): # Flask config SECRET_KEY = 'a36c9d7d-25a9-4d3f-a586-3d2f8dc40a83' JSONIFY_PRETTYPRINT_REGULAR = False SESSION_COOKIE_SECURE = False LOGGING_CONFIG = logs_init_builder(formatter=logging.Formatter()) SEND_FILE_MAX_AGE_DEFAULT = 0 POPULATE_DB_TEST_DATA = True PREFERRED_URL_SCHEME = 'http' SERVER_NAME = 'localhost:5000' # Mail config MAIL_SERVER = '' MAIL_USE_TLS = True MAIL_PORT = 587 MAIL_USERNAME = '' MAIL_PASSWORD = '' DEFAULT_MAIL_SENDER = '' MAIL_FAIL_SILENTLY = False TESTING = True # DB config DB_NAME = 'test/data/test.db' DB_CONNECTION_ARGS = { 'threadlocals': True, 'autorollback': True, } DB_DRIVER = SqliteDatabase @staticmethod def create_transaction(db): return db.transaction() DB_TRANSACTION_FACTORY = create_transaction # Data storage STORAGE_TYPE = 'LocalStorage' STORAGE_PATH = 'test/data/registry' # Build logs BUILDLOGS = BuildLogs('logs.quay.io') # Change me # Real-time user events USER_EVENTS = UserEventBuilder('logs.quay.io') # Stripe config STRIPE_SECRET_KEY = 'sk_test_PEbmJCYrLXPW0VRLSnWUiZ7Y' # remove me STRIPE_PUBLISHABLE_KEY = 'pk_test_uEDHANKm9CHCvVa2DLcipGRh' # remove me # Userfiles USERFILES_TYPE = 'LocalUserfiles' USERFILES_PATH = 'test/data/userfiles' # Analytics ANALYTICS = fake_analytics # Github Config GITHUB_TOKEN_URL = 'https://github.com/login/oauth/access_token' GITHUB_USER_URL = 'https://api.github.com/user' GITHUB_USER_EMAILS = GITHUB_USER_URL + '/emails' GITHUB_CLIENT_ID = 'cfbc4aca88e5c1b40679' # remove GITHUB_CLIENT_SECRET = '7d1cc21e17e10cd8168410e2cd1e4561cb854ff9' # remove me # Requests based HTTP client with a large request pool HTTPCLIENT = build_requests_session() # Status tag config STATUS_TAGS = {} for tag_name in ['building', 'failed', 'none', 'ready']: tag_path = os.path.join('buildstatus', tag_name + '.svg') with open(tag_path) as tag_svg: STATUS_TAGS[tag_name] = tag_svg.read() FEATURE_BILLING = False class FakeTransaction(object): def __enter__(self): return self def __exit__(self, exc_type, value, traceback): pass class TestConfig(DefaultConfig): TESTING = True DB_NAME = ':memory:' DB_CONNECTION_ARGS = {} @staticmethod def create_transaction(db): return FakeTransaction() DB_TRANSACTION_FACTORY = create_transaction STORAGE_TYPE = 'FakeStorage' BUILDLOGS = TestBuildLogs('logs.quay.io', 'devtable', 'building', 'deadbeef-dead-beef-dead-beefdeadbeef') USERFILES_TYPE = 'FakeUserfiles'