Exemplo n.º 1
0
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')
Exemplo n.º 2
0
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',
            }
        }
    }
Exemplo n.º 3
0
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',
    )
Exemplo n.º 4
0
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']))
Exemplo n.º 5
0
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',
    )
Exemplo n.º 6
0
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
Exemplo n.º 7
0
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,
    }
Exemplo n.º 8
0
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,
            }
        })
Exemplo n.º 9
0
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',
        }
Exemplo n.º 10
0
def test_event_user_override(mock_s3_user, override_users_event):
    cfg = config.load(override_users_event)
    assert cfg.users[0].email == '*****@*****.**'
Exemplo n.º 11
0
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'
Exemplo n.º 12
0
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'
Exemplo n.º 13
0
def test_load_env_overrides_default(no_override_event, mock_s3, env_override):
    cfg = config.load(no_override_event)
    assert cfg.sender_email == '1'
Exemplo n.º 14
0
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'