@@ -752,6 +752,96 @@ describe('UserProfileService', () => {
752752 ) . toHaveBeenCalledTimes ( 1 ) ;
753753 } ) ;
754754 } ) ;
755+
756+ describe ( `when security is disabled` , ( ) => {
757+ beforeEach ( ( ) => {
758+ userProfileService = new UserProfileService ( logger ) ;
759+ const license = licenseMock . create ( { allowUserProfileCollaboration : true } ) ;
760+ license . isEnabled . mockReturnValue ( false ) ;
761+ userProfileService . setup ( { authz : mockAuthz , license } ) ;
762+ } ) ;
763+
764+ it ( 'returns `null` for basic auth requests without calling any ES APIs or recording telemetry' , async ( ) => {
765+ ( securityTelemetry . recordGetCurrentProfileInvocation as jest . Mock ) . mockClear ( ) ;
766+
767+ const request = httpServerMock . createKibanaRequest ( {
768+ headers : {
769+ authorization : `basic ${ Buffer . from ( 'user:pass' ) . toString ( 'base64' ) } ` ,
770+ } ,
771+ } ) ;
772+
773+ const startContract = userProfileService . start ( mockStartParams ) ;
774+ await expect ( startContract . getCurrent ( { request } ) ) . resolves . toBeNull ( ) ;
775+
776+ expect (
777+ mockStartParams . clusterClient . asInternalUser . security . activateUserProfile
778+ ) . not . toHaveBeenCalled ( ) ;
779+ expect (
780+ mockStartParams . clusterClient . asInternalUser . security . getUserProfile
781+ ) . not . toHaveBeenCalled ( ) ;
782+ expect ( securityTelemetry . recordGetCurrentProfileInvocation ) . not . toHaveBeenCalled ( ) ;
783+ } ) ;
784+
785+ it ( 'returns `null` for API key requests without calling any ES APIs or recording telemetry' , async ( ) => {
786+ ( securityTelemetry . recordGetCurrentProfileInvocation as jest . Mock ) . mockClear ( ) ;
787+
788+ const testApiKeyId = 'some-api-key-id' ;
789+ const testApiKeyValue = 'some-api-key-value' ;
790+ const request = httpServerMock . createKibanaRequest ( {
791+ headers : {
792+ authorization : `apikey ${ Buffer . from ( `${ testApiKeyId } :${ testApiKeyValue } ` ) . toString (
793+ 'base64'
794+ ) } `,
795+ } ,
796+ } ) ;
797+
798+ const startContract = userProfileService . start ( mockStartParams ) ;
799+ await expect ( startContract . getCurrent ( { request } ) ) . resolves . toBeNull ( ) ;
800+
801+ expect (
802+ mockStartParams . clusterClient . asScoped ( ) . asCurrentUser . security . getApiKey
803+ ) . not . toHaveBeenCalled ( ) ;
804+ expect (
805+ mockStartParams . clusterClient . asInternalUser . security . getUserProfile
806+ ) . not . toHaveBeenCalled ( ) ;
807+ expect ( securityTelemetry . recordGetCurrentProfileInvocation ) . not . toHaveBeenCalled ( ) ;
808+ } ) ;
809+
810+ it ( 'returns `null` for session-authenticated requests without calling any ES APIs or recording telemetry' , async ( ) => {
811+ ( securityTelemetry . recordGetCurrentProfileInvocation as jest . Mock ) . mockClear ( ) ;
812+ mockStartParams . session . getSID . mockResolvedValue ( 'some-session-id' ) ;
813+
814+ const startContract = userProfileService . start ( mockStartParams ) ;
815+ await expect ( startContract . getCurrent ( { request : mockRequest } ) ) . resolves . toBeNull ( ) ;
816+
817+ expect ( mockStartParams . session . getSID ) . not . toHaveBeenCalled ( ) ;
818+ expect ( mockStartParams . session . get ) . not . toHaveBeenCalled ( ) ;
819+ expect (
820+ mockStartParams . clusterClient . asInternalUser . security . getUserProfile
821+ ) . not . toHaveBeenCalled ( ) ;
822+ expect ( securityTelemetry . recordGetCurrentProfileInvocation ) . not . toHaveBeenCalled ( ) ;
823+ } ) ;
824+
825+ it ( 'returns `null` for requests with runas header without calling any ES APIs or recording telemetry' , async ( ) => {
826+ ( securityTelemetry . recordGetCurrentProfileInvocation as jest . Mock ) . mockClear ( ) ;
827+
828+ const request = httpServerMock . createKibanaRequest ( {
829+ headers : { 'es-security-runas-user' : 'some-user' } ,
830+ } ) ;
831+
832+ const startContract = userProfileService . start ( mockStartParams ) ;
833+ await expect ( startContract . getCurrent ( { request } ) ) . resolves . toBeNull ( ) ;
834+
835+ expect ( mockStartParams . session . getSID ) . not . toHaveBeenCalled ( ) ;
836+ expect (
837+ mockStartParams . clusterClient . asInternalUser . security . activateUserProfile
838+ ) . not . toHaveBeenCalled ( ) ;
839+ expect (
840+ mockStartParams . clusterClient . asInternalUser . security . getUserProfile
841+ ) . not . toHaveBeenCalled ( ) ;
842+ expect ( securityTelemetry . recordGetCurrentProfileInvocation ) . not . toHaveBeenCalled ( ) ;
843+ } ) ;
844+ } ) ;
755845 } ) ;
756846
757847 describe ( '#update' , ( ) => {
0 commit comments