def test_list_users_failure(patch):
    """Test Users List - FAILURE"""
    api = v1.UMAPI('http://example.com/failure', "N/A", retry_max_attempts=1)
    pytest.raises(v1.UMAPIError, api.users, None)
    patch.return_value = retry_response
    api = v1.UMAPI('http://example.com/retry', "N/A", retry_max_attempts=1)
    pytest.raises(v1.UMAPIRetryError, api.users, None)
def test_user_create_failure(patch):
    """Test User Creation - FAILURE"""
    action = v1.Action(user_key="*****@*****.**").do(
        addAdobeID={"email": "*****@*****.**"})
    api = v1.UMAPI('http://example.com/failure', "N/A", retry_max_attempts=1)
    pytest.raises(v1.UMAPIError, api.action, None, action)
    patch.return_value = retry_response
    api = v1.UMAPI('http://example.com/retry', "N/A", retry_max_attempts=1)
    pytest.raises(v1.UMAPIRetryError, api.action, None, action)
def test_user_create_error(_):
    """Test User Creation - ERROR"""
    api = v1.UMAPI('http://example.com/error', "N/A", retry_max_attempts=1)

    action = v1.Action(user_key="*****@*****.**").do(
        addAdobeID={"email": "*****@*****.**"})
    pytest.raises(v1.UMAPIRequestError, api.action, None, action)
def test_helper_retry_logging(_, log_stream, reduce_attempts):
    api = v1.UMAPI('', None)
    assert v1.paginate(api.users, 'retrySecs') == ["user1", "user2"]
    log_stream.flush()
    log = log_stream.getvalue(
    )  # save as a local so can do pytest -l to see exact log
    assert log == '''UMAPI service temporarily unavailable (attempt 1) -- 429
def test_user_create_success(_):
    """Test User Creation - SUCCESS"""
    api = v1.UMAPI('http://example.com/success', "N/A", retry_max_attempts=1)

    action = v1.Action(user_key="*****@*****.**").do(
        addAdobeID={"email": "*****@*****.**"})

    assert api.action(None, action) == {"result": "success"}
def test_product_add(_):
    """Test Product Add - SUCCESS"""
    api = v1.UMAPI('http://example.com/success', "N/A", retry_max_attempts=1)

    action = v1.Action(user_key="*****@*****.**").do(
        add=["product1", "product2"])

    assert api.action(None, action) == {"result": "success"}
def test_list_groups_success(_):
    """Test Groups List - SUCCESS"""
    api = v1.UMAPI('http://example.com/success', "N/A", retry_max_attempts=1)
    assert api.groups(None) == {"result": "success"}
def test_list_users_error(_):
    """Test Users List - ERROR"""
    api = v1.UMAPI('http://example.com/error', "N/A", retry_max_attempts=1)
    pytest.raises(v1.UMAPIRequestError, api.users, None)
def test_helper_retry_noheader(_, reduce_delay, reduce_attempts):
    api = v1.UMAPI('', None)
    assert v1.paginate(api.users, 'retryNull') == ["user1", "user2"]
def test_helper_fail_date(_, reduce_attempts):
    api = v1.UMAPI('', None)
    assert v1.paginate(api.users, 'retryTime') == ["user1", "user2"]
def test_helper_retry_seconds(_, reduce_attempts):
    api = v1.UMAPI('', None)
    assert v1.paginate(api.users, 'retrySecs') == ["user1", "user2"]
def test_helper_success(_):
    api = v1.UMAPI('', None)
    assert v1.paginate(api.users, 'success') == ["user0", "user1", "user2"]
def test_action_format_error(_):
    """Test v1.Action Format Error"""
    api = v1.UMAPI('http://example.com/success', "N/A", retry_max_attempts=1)
    action = ''
    pytest.raises(v1.ActionFormatError, api.action, None, action)