@@ -522,6 +522,38 @@ module VCAP::CloudController
522522 expect ( mock_logger ) . to have_received ( :error ) . with ( "UAA request for creating a user failed: #{ uaa_error . inspect } " )
523523 end
524524 end
525+
526+ context 'when uaa is rate limited' do
527+ let ( :uaa_error ) { CF ::UAA ::BadResponse . new ( 'invalid status response: 429' ) }
528+ let ( :mock_logger ) { double ( :steno_logger , warn : nil ) }
529+
530+ before do
531+ scim = instance_double ( CF ::UAA ::Scim )
532+ allow ( scim ) . to receive ( :add ) . and_raise ( uaa_error )
533+ allow ( uaa_client ) . to receive_messages ( scim : scim , logger : mock_logger )
534+ end
535+
536+ it 'logs the error and raises UaaRateLimited' do
537+ expect { uaa_client . create_shadow_user ( '[email protected] ' , 'idp.local' ) } . to raise_error ( UaaRateLimited ) 538+ expect ( mock_logger ) . to have_received ( :warn ) . with ( "UAA request for creating a user ran into rate limits: #{ uaa_error . inspect } " )
539+ end
540+ end
541+
542+ context 'when a BadResponse is raised' do
543+ let ( :uaa_error ) { CF ::UAA ::BadResponse . new ( 'invalid status response: 433' ) }
544+ let ( :mock_logger ) { double ( :steno_logger , error : nil ) }
545+
546+ before do
547+ scim = instance_double ( CF ::UAA ::Scim )
548+ allow ( scim ) . to receive ( :add ) . and_raise ( uaa_error )
549+ allow ( uaa_client ) . to receive_messages ( scim : scim , logger : mock_logger )
550+ end
551+
552+ it 'logs and raises the error' do
553+ expect { uaa_client . create_shadow_user ( '[email protected] ' , 'idp.local' ) } . to raise_error ( UaaUnavailable ) 554+ expect ( mock_logger ) . to have_received ( :error ) . with ( "UAA request for creating a user failed: #{ uaa_error . inspect } " )
555+ end
556+ end
525557 end
526558
527559 describe '#id_for_username' do
0 commit comments