def enable_user(email):
    cognito_client = get_boto3_client()
    try:
        response = cognito_client.admin_enable_user(
            UserPoolId=config.env_pool_id(), Username=email)
    except CLIENT_EXCEPTIONS as error:
        LOG.error(error)
        response = {}
    return check_response_status_code(response)
def list_groups_for_user(email):
    cognito_client = get_boto3_client()
    try:
        response = cognito_client.admin_list_groups_for_user(
            UserPoolId=config.env_pool_id(), Username=email)
    except CLIENT_EXCEPTIONS as error:
        LOG.error(error)
        response = {}
    return response
def remove_from_group(email, group_name):
    cognito_client = get_boto3_client()
    try:
        response = cognito_client.admin_remove_user_from_group(
            UserPoolId=config.env_pool_id(),
            Username=email,
            GroupName=group_name)
    except CLIENT_EXCEPTIONS as error:
        LOG.error(error)
        response = {}
    return check_response_status_code(response)
def update_user(email, attributes):
    cognito_client = get_boto3_client()
    try:
        response = cognito_client.admin_update_user_attributes(
            UserPoolId=config.env_pool_id(),
            Username=email,
            UserAttributes=attributes)
    except (ClientError, ParamValidationError) as error:
        LOG.error(error)
        response = {}
    return check_response_status_code(response)
def set_mfa_preferences(email):
    cognito_client = get_boto3_client()
    try:
        response = cognito_client.admin_set_user_mfa_preference(
            UserPoolId=config.env_pool_id(),
            Username=email,
            SMSMfaSettings={
                "Enabled": True,
                "PreferredMfa": True
            },
        )
    except CLIENT_EXCEPTIONS as error:
        LOG.error(error)
        response = {}
    return check_response_status_code(response)
def set_user_settings(email):
    client = get_boto3_client()
    try:
        response = client.admin_set_user_settings(
            UserPoolId=config.env_pool_id(),
            Username=email,
            MFAOptions=[{
                "DeliveryMedium": "SMS",
                "AttributeName": "phone_number"
            }],
        )
    except CLIENT_EXCEPTIONS as error:
        LOG.error(error)
        response = {}
    return check_response_status_code(response)
def add_to_group(email, group_name):
    if group_name is None:
        group_name = "standard-download"
    if group_name not in get_group_map().keys():
        return False

    cognito_client = get_boto3_client()
    try:
        response = cognito_client.admin_add_user_to_group(
            UserPoolId=config.env_pool_id(),
            Username=email,
            GroupName=group_name)
    except CLIENT_EXCEPTIONS as error:
        LOG.error(error)
        response = {}
    return check_response_status_code(response)
def create_user(name, email_address, phone_number, is_la, custom_paths):
    client = get_boto3_client()
    try:
        response = client.admin_create_user(
            UserPoolId=config.env_pool_id(),
            Username=email_address,
            UserAttributes=[
                {
                    "Name": "name",
                    "Value": name
                },
                {
                    "Name": "email",
                    "Value": email_address
                },
                {
                    "Name": "email_verified",
                    "Value": "true"
                },
                {
                    "Name": "phone_number",
                    "Value": phone_number
                },
                {
                    "Name": "phone_number_verified",
                    "Value": "false"
                },
                {
                    "Name": "custom:is_la",
                    "Value": is_la
                },
                {
                    "Name": "custom:paths",
                    "Value": custom_paths
                },
            ],
            ForceAliasCreation=False,
            DesiredDeliveryMediums=["EMAIL"],
        )
    except CLIENT_EXCEPTIONS as error:
        LOG.error(error)
        response = {}
    return "User" in response
def test_env_pool_id_production():
    user_pool_id = stubs.MOCK_COGNITO_USER_POOL_ID
    config.set("app_environment", "production")
    stubber = stubs.mock_cognito_list_pools(env="prod")
    with stubber:
        assert config.env_pool_id() == user_pool_id
def test_env_pool_id_development():
    user_pool_id = stubs.MOCK_COGNITO_USER_POOL_ID
    stubber = stubs.mock_cognito_list_pools()
    with stubber:
        assert config.env_pool_id() == user_pool_id