def test_load_config_prefix(override_all_event, mock_s3, env_vars): cfg = config.load(override_all_event) assert 'test_var_1' not in cfg assert 'test_var_2' not in cfg assert 'test_var_3' in cfg assert cfg.test_var_3 == '3' mock_s3.get_object.assert_called_once_with(Bucket='test', Key='test')
def test_deeply_nested_merge(mock_s3): cfg = config.load( dict(config=dict(logging=dict(loggers=dict(pycbc=dict( level='DEBUG')))))) assert cfg.logging == { 'version': 1, 'formatters': { 'default': { 'format': '%(asctime)-15s - %(levelname)-7s - %(message)s', }, }, 'handlers': { 'console': { 'class': 'logging.StreamHandler', 'formatter': 'default', 'level': 'DEBUG', 'stream': 'ext://sys.stderr', }, }, 'loggers': { 'pycbc': { 'handlers': ['console'], 'level': 'DEBUG', } } }
def test_override_precedence(override_s3_filename, mock_s3_with_values): cfg = config.load(override_s3_filename) assert cfg.sender_email == 'test' mock_s3_with_values.get_object.assert_called_once_with( Bucket='test', Key='1', )
def handler(event, context): config = load(event) logging.config.dictConfig(config.logging) log.info(f'Event: {event}') for record in event['Records']: notify_users(config, json.loads(record['Sns']['Message']))
def test_load_config(no_override_event, mock_s3, env_vars): cfg = config.load(no_override_event) assert 'test_var_1' in cfg assert cfg.test_var_1 == '1' assert 'test_var_2' in cfg assert cfg.test_var_2 == '2' assert 'test_var_3' not in cfg mock_s3.get_object.assert_called_once_with( Bucket='pycbc', Key='pycbc-config.yaml', )
def handler(event, context): config = load(event) logging.config.dictConfig(config.logging) log.info(f'Event: {event}') data = available_timeslots(event) if data and config.get('sns_topic'): for service in data: sns.publish(config.sns_topic, service) else: log.info('No SNS topic configured') return data
def handler(event, context): config = load(event) logging.config.dictConfig(config.logging) return { 'statusCode': 200, 'body': _generate_icon(config, event), 'headers': { 'Content-Type': 'image/png' }, 'isBase64Encoded': True, }
def config(user_data, email, encrypt_key, api_gateway): with patch('pycbc.config.s3') as s3_mock: s3_mock.get_object.return_value = {'Body': StringIO('{}')} yield pycbc_config.load({ 'config': { 'users': [ d(user_data, filters=d(services=['learners'], days=['saturday', 'sunday'], branches=['Burnaby'])) ], 'encrypt_key': encrypt_key, 'api_gateway': api_gateway, 'sender_email': email, } })
def handler(event, context): config = load(event) logging.config.dictConfig(config.logging) try: query_params = event['queryStringParameters'] query_token = query_params.pop('token') payload = token.decrypt(config.encrypt_key, query_token, ttl=3600) except InvalidToken: return { 'statusCode': 400, 'body': 'token expired', } except Exception as exc: log.exception(exc) return { 'statusCode': 401, 'body': 'UNAUTHORIZED', } log.info(f'Payload: {payload}') branch = d(branch_id=query_params['branch_id'], date=query_params['date'], time=query_params['time']) try: reservation = reserve(payload.service, branch, payload.user) return { 'statusCode': 200, 'body': json.dumps(reservation), } except Exception as exc: log.exception(exc) return { 'statusCode': 500, 'body': 'failed to book appointment', }
def test_event_user_override(mock_s3_user, override_users_event): cfg = config.load(override_users_event) assert cfg.users[0].email == '*****@*****.**'
def test_load_event_override(mock_s3_with_values, env_override): cfg = config.load(dict(config=dict(sender_email='override'))) assert cfg.sender_email == 'override'
def test_load_env_overrides_s3(no_override_event, mock_s3_with_values, env_override): cfg = config.load(no_override_event) assert cfg.sender_email == '1'
def test_load_env_overrides_default(no_override_event, mock_s3, env_override): cfg = config.load(no_override_event) assert cfg.sender_email == '1'
def test_load_s3_overrides_default(no_override_event, mock_s3_with_values): cfg = config.load(no_override_event) assert 'sender_email' in cfg assert cfg.sender_email == 'test'