def test_smtp_ssl_tls(self): defaults = init_defaults(APP, 'mail.smtp') defaults['mail.smtp']['ssl'] = True defaults['mail.smtp']['tls'] = True defaults['mail.smtp']['port'] = 25 with mock.patch('smtplib.SMTP_SSL') as mock_smtp: self.app = self.make_app(APP, config_defaults=defaults, extensions=['smtp'], mail_handler='smtp', argv=[], ) self.app.setup() self.app.run() self.app.mail.send('TEST MESSAGE', to=['me@localhost'], from_addr='noreply@localhost', ) instance = mock_smtp.return_value if int(sys.version[0]) >= 3: self.eq(instance.send_message.call_count, 1) else: self.eq(instance.sendmail.call_count, 1) self.eq(instance.starttls.call_count, 1)
def test_load_order_presedence_four(self): # Multiple plugin configs, first plugin conf defines it as enabled, # but last read should make it disabled. defaults = init_defaults(APP, 'myplugin') f = open(os.path.join(self.tmp_dir, 'a.conf'), 'w') f.write(CONF) # enabled config f.close() f = open(os.path.join(self.tmp_dir, 'b.conf'), 'w') f.write(CONF2) # disabled config f.close() f = open(os.path.join(self.tmp_dir, 'myplugin.py'), 'w') f.write(PLUGIN) f.close() app = self.make_app( APP, config_defaults=defaults, config_files=[], plugin_config_dir=self.tmp_dir, plugin_dir=self.tmp_dir, plugin_bootstrap=None, ) app.setup() res = 'myplugin' in app.plugin._disabled_plugins self.ok(res) res = 'myplugin' not in app.plugin._enabled_plugins self.ok(res)
def test_load_plugins_from_config(self): f = open(os.path.join(self.tmp_dir, 'myplugin.py'), 'w') f.write(PLUGIN) f.close() defaults = init_defaults() defaults['myplugin'] = dict() defaults['myplugin']['enable_plugin'] = True defaults['myplugin2'] = dict() defaults['myplugin2']['enable_plugin'] = False app = self.make_app(APP, config_defaults=defaults, config_files=[], plugin_config_dir=self.tmp_dir, plugin_dir=self.tmp_dir, plugin_bootstrap=None, ) app.setup() han = app.handler.get('output', 'test_output_handler')() self.eq(han._meta.label, 'test_output_handler') # some more checks res = 'myplugin' in app.plugin.get_enabled_plugins() self.ok(res) res = 'myplugin' in app.plugin.get_loaded_plugins() self.ok(res) res = 'myplugin2' in app.plugin.get_disabled_plugins() self.ok(res) res = 'myplugin2' not in app.plugin.get_enabled_plugins() self.ok(res) res = 'myplugin2' not in app.plugin.get_loaded_plugins() self.ok(res)
def test_load_order_presedence_four(self): # Multiple plugin configs, first plugin conf defines it as enabled, # but last read should make it disabled. defaults = init_defaults(APP, 'myplugin') f = open(os.path.join(self.tmp_dir, 'a.conf'), 'w') f.write(CONF) # enabled config f.close() f = open(os.path.join(self.tmp_dir, 'b.conf'), 'w') f.write(CONF2) # disabled config f.close() f = open(os.path.join(self.tmp_dir, 'myplugin.py'), 'w') f.write(PLUGIN) f.close() app = self.make_app(APP, config_defaults=defaults, config_files=[], plugin_config_dir=self.tmp_dir, plugin_dir=self.tmp_dir, plugin_bootstrap=None, ) app.setup() res = 'myplugin' in app.plugin._disabled_plugins self.ok(res) res = 'myplugin' not in app.plugin._enabled_plugins self.ok(res)
def test_core_meta_override(): defaults = init_defaults("test-app") defaults["test-app"]["mail_handler"] = "smtp" defaults["test-app"]["extensions"] = "smtp" with TestApp(label="test-app", config_defaults=defaults) as app: app.run() assert app._meta.mail_handler == "smtp"
def test_defaults(): defaults = misc.init_defaults('section1', 'section2') defaults['section1']['debug'] = True defaults['section2']['foo'] = 'bar' with TestApp(config_defaults=defaults) as app: assert app.config.get('section1', 'debug') is True assert app.config.get_section_dict('section2') == {'foo': 'bar'}
def test_alternate_namespaces(tmp): log_file = os.path.join(tmp.dir, 'test.log') defaults = init_defaults('log.logging') defaults['log.logging']['to_console'] = False defaults['log.logging']['file'] = log_file defaults['log.logging']['level'] = 'debug' with TestApp(config_defaults=defaults) as app: app.log.info('TEST', extra=dict(namespace=__name__)) app.log.warning('TEST', extra=dict(namespace=__name__)) app.log.error('TEST', extra=dict(namespace=__name__)) app.log.fatal('TEST', extra=dict(namespace=__name__)) app.log.debug('TEST', extra=dict(namespace=__name__)) app.log.info('TEST', __name__, extra=dict(foo='bar')) app.log.warning('TEST', __name__, extra=dict(foo='bar')) app.log.error('TEST', __name__, extra=dict(foo='bar')) app.log.fatal('TEST', __name__, extra=dict(foo='bar')) app.log.debug('TEST', __name__, extra=dict(foo='bar')) app.log.info('TEST', __name__) app.log.warning('TEST', __name__) app.log.error('TEST', __name__) app.log.fatal('TEST', __name__) app.log.debug('TEST', __name__) assert os.path.exists(log_file) with open(log_file, 'r') as f: logs = f.readlines() for log in logs: assert __name__ in log
def test_colorize_console_log(tmp): # first test with colorize_file_log=true log_file = os.path.join(tmp.dir, 'test.log') defaults = init_defaults() defaults['log.colorlog'] = dict( file=log_file, level='DEBUG', colorize_console_log=True, ) with ColorlogApp(config_defaults=defaults) as app: app.run() app.log.info('this is an info message') _format = app.log._meta.console_format klass = app.log._get_console_formatter(_format) assert isinstance(klass, ColoredFormatter) # then test with colorize_file_log=false defaults['log.colorlog']['colorize_console_log'] = False with ColorlogApp(config_defaults=defaults) as app: app.run() app.log.info('this is an info message') _format = app.log._meta.console_format klass = app.log._get_console_formatter(_format) assert isinstance(klass, logging.Formatter)
def test_alternate_namespaces(tmp): log_file = os.path.join(tmp.dir, "test.log") defaults = init_defaults("log.logging") defaults["log.logging"]["to_console"] = False defaults["log.logging"]["file"] = log_file defaults["log.logging"]["level"] = "debug" with TestApp(config_defaults=defaults) as app: app.log.info("TEST", extra=dict(namespace=__name__)) app.log.warning("TEST", extra=dict(namespace=__name__)) app.log.error("TEST", extra=dict(namespace=__name__)) app.log.fatal("TEST", extra=dict(namespace=__name__)) app.log.debug("TEST", extra=dict(namespace=__name__)) app.log.info("TEST", __name__, extra=dict(foo="bar")) app.log.warning("TEST", __name__, extra=dict(foo="bar")) app.log.error("TEST", __name__, extra=dict(foo="bar")) app.log.fatal("TEST", __name__, extra=dict(foo="bar")) app.log.debug("TEST", __name__, extra=dict(foo="bar")) app.log.info("TEST", __name__) app.log.warning("TEST", __name__) app.log.error("TEST", __name__) app.log.fatal("TEST", __name__) app.log.debug("TEST", __name__) assert os.path.exists(log_file) with open(log_file) as f: logs = f.readlines() for log in logs: assert __name__ in log
class Meta: label = 'eb' base_controller = base.EbBaseController defaults = init_defaults('eb', 'log.logging') defaults['log.logging']['level'] = 'WARN' config_defaults = defaults exit_on_close = True
def test_load_order_presedence_one(self): # App config defines it as enabled, even though the plugin config has # it disabled... app trumps defaults = init_defaults(APP, 'myplugin') defaults['myplugin']['enable_plugin'] = True tmpdir = mkdtemp() f = open(os.path.join(tmpdir, 'myplugin.conf'), 'w') f.write(CONF2) f.close() f = open(os.path.join(tmpdir, 'myplugin.py'), 'w') f.write(PLUGIN) f.close() app = self.make_app(APP, config_defaults=defaults, config_files=[], plugin_config_dir=tmpdir, plugin_dir=tmpdir, plugin_bootstrap=None, ) app.setup() try: res = 'myplugin' in app.plugin._enabled_plugins self.ok(res) res = 'myplugin' not in app.plugin._disabled_plugins self.ok(res) finally: shutil.rmtree(tmpdir)
def test_load_order_presedence_one(self): # App config defines it as enabled, even though the plugin config has # it disabled... app trumps defaults = init_defaults(APP, 'myplugin') defaults['myplugin']['enable_plugin'] = True f = open(os.path.join(self.tmp_dir, 'myplugin.conf'), 'w') f.write(CONF2) f.close() f = open(os.path.join(self.tmp_dir, 'myplugin.py'), 'w') f.write(PLUGIN) f.close() app = self.make_app( APP, config_defaults=defaults, config_files=[], plugin_config_dir=self.tmp_dir, plugin_dir=self.tmp_dir, plugin_bootstrap=None, ) app.setup() try: res = 'myplugin' in app.plugin._enabled_plugins self.ok(res) res = 'myplugin' not in app.plugin._disabled_plugins self.ok(res) finally: shutil.rmtree(self.tmp_dir)
def test_colorize_file_log(self): # first test with colorize_file_log=true log_file = os.path.join(self.tmp_dir, '%s.log' % APP) defaults = init_defaults() defaults['log.colorlog'] = dict( file=log_file, level='DEBUG', colorize_file_log=True, ) app = self.make_app( APP, config_defaults=defaults, extensions=['colorlog'], log_handler='colorlog', ) with app: app.run() app.log.info('this is an info message') klass = app.log._get_file_formatter(app.log._meta.file_format) self.ok(isinstance(klass, ColoredFormatter)) # then test with colorize_file_log=false self.reset_backend() defaults['log.colorlog']['colorize_file_log'] = False app = self.make_app( APP, config_defaults=defaults, extensions=['colorlog'], log_handler='colorlog', ) with app: app.run() app.log.info('this is an info message') klass = app.log._get_file_formatter(app.log._meta.file_format) self.ok(isinstance(klass, logging.Formatter))
def test_smtp_defaults(self): defaults = init_defaults(APP, 'mail.smtp') defaults['mail.smtp']['to'] = 'nobody@localhost' defaults['mail.smtp']['from_addr'] = 'nobody@localhost' defaults['mail.smtp']['cc'] = 'nobody@localhost' defaults['mail.smtp']['bcc'] = 'nobody@localhost' defaults['mail.smtp']['subject'] = 'Test Email To nobody@localhost' defaults['mail.smtp']['subject_prefix'] = 'PREFIX >' with mock.patch('smtplib.SMTP') as mock_smtp: self.app = self.make_app(APP, config_defaults=defaults, extensions=['smtp'], mail_handler='smtp', argv=[], ) self.app.setup() self.app.run() self.app.mail.send('TEST MESSAGE') instance = mock_smtp.return_value if int(sys.version[0]) >= 3: self.eq(instance.send_message.call_count, 1) else: self.eq(instance.sendmail.call_count, 1)
def test_core_meta_override(): defaults = init_defaults('test-app') defaults['test-app']['mail_handler'] = 'smtp' defaults['test-app']['extensions'] = 'smtp' with TestApp(label='test-app', config_defaults=defaults) as app: app.run() assert app._meta.mail_handler == 'smtp'
def test_memcache_str_type_config(): defaults = init_defaults('tests', 'cache.memcached') defaults['cache.memcached']['hosts'] = "%s,%s" % (memcached_host, memcached_host) with MemcachedApp(config_defaults=defaults) as app: assert app.config.get('cache.memcached', 'hosts') == \ [memcached_host, memcached_host]
def test_smtp_auth(self): defaults = init_defaults(APP, 'mail.smtp') defaults[APP]['debug'] = True defaults['mail.smtp']['auth'] = True defaults['mail.smtp']['username'] = '******' defaults['mail.smtp']['password'] = '******' with mock.patch('smtplib.SMTP') as mock_smtp: self.app = self.make_app(APP, config_defaults=defaults, extensions=['smtp'], mail_handler='smtp', argv=[], ) self.app.setup() self.app.run() self.app.mail.send('TEST MESSAGE', to=['me@localhost'], from_addr='noreply@localhost', ) instance = mock_smtp.return_value self.eq(instance.login.call_count, 1) if int(sys.version[0]) >= 3: self.eq(instance.send_message.call_count, 1) else: self.eq(instance.sendmail.call_count, 1)
def test_colorize_console_log(self): # first test with colorize_file_log=true log_file = os.path.join(self.tmp_dir, '%s.log' % APP) defaults = init_defaults() defaults['log.colorlog'] = dict( file=log_file, level='DEBUG', colorize_console_log=True, ) app = self.make_app(APP, config_defaults=defaults, extensions=['colorlog'], log_handler='colorlog', ) with app: app.run() app.log.info('this is an info message') format = app.log._meta.console_format klass = app.log._get_console_formatter(format) self.ok(isinstance(klass, ColoredFormatter)) # then test with colorize_file_log=false self.reset_backend() defaults['log.colorlog']['colorize_console_log'] = False app = self.make_app(APP, config_defaults=defaults, extensions=['colorlog'], log_handler='colorlog', ) with app: app.run() app.log.info('this is an info message') klass = app.log._get_console_formatter(format) self.ok(isinstance(klass, logging.Formatter))
def test_load_order_presedence_two(self): # App config defines it as false, even though the plugin config has # it enabled... app trumps defaults = init_defaults(APP, 'myplugin') defaults['myplugin']['enable_plugin'] = False f = open(os.path.join(self.tmp_dir, 'myplugin.conf'), 'w') f.write(CONF) f.close() f = open(os.path.join(self.tmp_dir, 'myplugin.py'), 'w') f.write(PLUGIN) f.close() app = self.make_app(APP, config_defaults=defaults, config_files=[], plugin_config_dir=self.tmp_dir, plugin_dir=self.tmp_dir, plugin_bootstrap=None, ) app.setup() res = 'myplugin' in app.plugin._disabled_plugins self.ok(res) res = 'myplugin' not in app.plugin._enabled_plugins self.ok(res)
def test_bad_level(self): defaults = init_defaults() defaults['log'] = dict( level='BOGUS' ) app = self.make_app(config_defaults=defaults) app.setup() self.eq(app.log.get_level(), 'INFO')
def test_defaults(self): defaults = misc.init_defaults("APPp", "section2", "section3") defaults["APPp"]["debug"] = True defaults["section2"]["foo"] = "bar" self.app = self.make_app("APPp", config_defaults=defaults) self.app.setup() self.eq(self.app.config.get("APPp", "debug"), True) self.ok(self.app.config.get_section_dict("section2"))
def test_defaults(self): defaults = misc.init_defaults('myapp', 'section2', 'section3') defaults['myapp']['debug'] = True defaults['section2']['foo'] = 'bar' self.app = self.make_app('myapp', config_defaults=defaults) self.app.setup() self.eq(self.app.config.get('myapp', 'debug'), True) self.ok(self.app.config.get_section_dict('section2'))
class Meta: label = 'ebp' base_controller = base.EbBaseController defaults = init_defaults('ebp', 'log.logging') defaults['log.logging']['level'] = 'WARN' config_defaults = defaults base_controller.Meta.description = strings['ebpbase.info'] base_controller.Meta.epilog = strings['ebpbase.epilog']
def test_missing_log_dir(self): if os.path.exists(self.tmp_dir): shutil.rmtree(self.tmp_dir) defaults = init_defaults() defaults["log.logging"] = dict(file=os.path.join(self.tmp_dir, "%s.log" % APP)) app = self.make_app(config_defaults=defaults) app.setup()
def test_bad_level(): defaults = init_defaults() defaults['log.logging'] = dict( level='BOGUS', to_console=False, ) with TestApp(config_defaults=defaults) as app: assert app.log.get_level() == 'INFO'
def test_bad_level(self): defaults = init_defaults() defaults['log.logging'] = dict( level='BOGUS', to_console=False, ) app = self.make_app(config_defaults=defaults) app.setup() self.eq(app.log.get_level(), 'INFO')
def test_missing_log_dir(self): _, tmp_path = mkstemp() if os.path.exists(tmp_path): os.remove(tmp_path) defaults = init_defaults() defaults['log'] = dict(file=os.path.join(tmp_path, 'myapp.log'), ) app = self.make_app(config_defaults=defaults) app.setup()
def test_missing_log_dir(self): if os.path.exists(self.tmp_dir): shutil.rmtree(self.tmp_dir) defaults = init_defaults() defaults['log.logging'] = dict(file=os.path.join( self.tmp_dir, '%s.log' % APP), ) app = self.make_app(config_defaults=defaults) app.setup()
def test_meta(tmp): log_file = os.path.join(tmp.dir, "test.log") defaults = init_defaults() defaults["log.colorlog"] = dict(file=log_file, level="DEBUG", colorize_console_log=True) with ColorlogApp(config_defaults=defaults) as app: app.run() app.log.info(title="this is a title message")
def test_missing_log_dir(tmp): if os.path.exists(tmp.dir): shutil.rmtree(tmp.dir) defaults = init_defaults("log.logging") defaults["log.logging"] = dict(file=os.path.join(tmp.dir, "test.log")) # extension generates the dir if it is missing with TestApp(config_defaults=defaults): assert os.path.exists(tmp.dir)
def setUp(self): self.key = "cement-tests-random-key-%s" % random() defaults = init_defaults('tests', 'cache.memcached') defaults['cache.memcached']['hosts'] = '127.0.0.1, localhost' self.app = self.make_app('tests', config_defaults=defaults, extensions=['memcached'], cache_handler='memcached', ) self.app.setup()
def test_logging(self): defaults = init_defaults() defaults['log'] = dict(file='/dev/null', to_console=True) app = self.make_app(config_defaults=defaults) app.setup() app.log.info('Info Message') app.log.warn('Warn Message') app.log.error('Error Message') app.log.fatal('Fatal Message') app.log.debug('Debug Message')
def test_logging(self): defaults = init_defaults() defaults["log"] = dict(file="/dev/null", to_console=True) app = self.make_app(config_defaults=defaults) app.setup() app.log.info("Info Message") app.log.warn("Warn Message") app.log.error("Error Message") app.log.fatal("Fatal Message") app.log.debug("Debug Message")
def test_missing_log_dir(self): _, tmp_path = mkstemp() if os.path.exists(tmp_path): os.remove(tmp_path) defaults = init_defaults() defaults['log.logging'] = dict( file=os.path.join(tmp_path, '%s.log' % APP), ) app = self.make_app(config_defaults=defaults) app.setup()
def test_dummy_mail_with_subject_prefix(self): defaults = init_defaults(APP, 'mail.dummy') defaults['mail.dummy']['subject_prefix'] = 'TEST PREFIX' app = self.make_app(APP, config_defaults=defaults) app.setup() app.run() res = app.mail.send("Test", to=['me@localhost'], from_addr='me@localhost', ) self.ok(res)
def test_memcache_str_type_config(self): defaults = init_defaults('tests', 'cache.memcached') defaults['cache.memcached']['hosts'] = '127.0.0.1, localhost' self.app = self.make_app('tests', config_defaults=defaults, extensions=['memcached'], cache_handler='memcached', ) self.app.setup() self.eq(self.app.config.get('cache.memcached', 'hosts'), ['127.0.0.1', 'localhost'])
def test_dummy_mail_with_subject_prefix(): defaults = init_defaults('mail.dummy') defaults['mail.dummy']['subject_prefix'] = 'TEST PREFIX' with TestApp(config_defaults=defaults) as app: app.run() res = app.mail.send("Test", to=['me@localhost'], from_addr='me@localhost', ) assert res
def test_missing_log_dir(tmp): if os.path.exists(tmp.dir): shutil.rmtree(tmp.dir) defaults = init_defaults('log.logging') defaults['log.logging'] = dict( file=os.path.join(tmp.dir, 'test.log'), ) # extension generates the dir if it is missing with TestApp(config_defaults=defaults): assert os.path.exists(tmp.dir)
def test_dummy_mail_with_subject_prefix(self): defaults = init_defaults(APP, 'mail.dummy') defaults['mail.dummy']['subject_prefix'] = 'TEST PREFIX' app = self.make_app(APP, config_defaults=defaults) app.setup() app.run() res = app.mail.send( "Test", to=['me@localhost'], from_addr='me@localhost', ) self.ok(res)
def test_log_level_argument(): meta = init_defaults('log.logging') meta['log.logging']['log_level_argument'] = ['-l', '--level'] with TestApp(meta_defaults=meta, argv=['--level', 'debug']) as app: app.run() assert app.debug is True assert app.log.get_level() == 'DEBUG' # again without the argument (disabled by default) with raises(SystemExit): with TestApp(argv=['-l', 'debug']) as app: app.run()
def test_log_level_argument(): meta = init_defaults("log.logging") meta["log.logging"]["log_level_argument"] = ["-l", "--level"] with TestApp(meta_defaults=meta, argv=["--level", "debug"]) as app: app.run() assert app.debug is True assert app.log.get_level() == "DEBUG" # again without the argument (disabled by default) with raises(SystemExit): with TestApp(argv=["-l", "debug"]) as app: app.run()
def setUp(self): super(RedisExtTestCase, self).setUp() self.key = "cement-tests-random-key-%s" % random() defaults = init_defaults('tests', 'cache.redis') defaults['cache.redis']['host'] = '127.0.0.1' defaults['cache.redis']['port'] = 6379 defaults['cache.redis']['db'] = 0 self.app = self.make_app('tests', config_defaults=defaults, extensions=['redis'], cache_handler='redis', ) self.app.setup()
def setUp(self): super(ColorLogExtTestCase, self).setUp() log_file = os.path.join(self.tmp_dir, '%s.log' % APP) defaults = init_defaults() defaults['log.colorlog'] = dict( file=log_file, level='DEBUG', ) self.app = self.make_app(APP, config_defaults=defaults, extensions=['colorlog'], log_handler='colorlog', )
def test_logging(self): defaults = init_defaults() defaults['log.logging'] = dict( file='/dev/null', to_console=True ) app = self.make_app(config_defaults=defaults) app.setup() app.log.info('Info Message') app.log.warn('Warn Message') app.log.error('Error Message') app.log.fatal('Fatal Message') app.log.debug('Debug Message')
def test_has_key(self): defaults = init_defaults('test') defaults['test']['foo'] = 'bar' app = self.make_app(config_defaults=defaults) app.setup() self.eq(app.config.has_key('test', 'bogus'), False) self.eq(app.config.has_key('test', 'foo'), True) # same thing but ignore deprecation warning app = self.make_app(config_defaults=defaults, ignore_deprecation_warnings=True) app.setup() self.eq(app.config.has_key('test', 'bogus'), False)
def test_debug(): # default with TestApp() as app: assert app.debug is False # meta overricde with TestApp(argv=['--debug']) as app: assert app.debug is True # config defaults override defaults = init_defaults('my-app-test') defaults['my-app-test']['debug'] = True with TestApp('my-app-test', config_defaults=defaults) as app: assert app.debug is True