/* * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. */ import { AccountFilter, AccountInfo, Logger, PerformanceCallbackFunction, } from "@azure/msal-common/browser"; import { RedirectRequest } from "../request/RedirectRequest.js"; import { PopupRequest } from "../request/PopupRequest.js"; import { SilentRequest } from "../request/SilentRequest.js"; import { SsoSilentRequest } from "../request/SsoSilentRequest.js"; import { EndSessionRequest } from "../request/EndSessionRequest.js"; import { BrowserConfigurationAuthErrorCodes, createBrowserConfigurationAuthError, } from "../error/BrowserConfigurationAuthError.js"; import { WrapperSKU } from "../utils/BrowserConstants.js"; import { INavigationClient } from "../navigation/INavigationClient.js"; import { EndSessionPopupRequest } from "../request/EndSessionPopupRequest.js"; import { AuthorizationCodeRequest } from "../request/AuthorizationCodeRequest.js"; import { BrowserConfiguration } from "../config/Configuration.js"; import { AuthenticationResult } from "../response/AuthenticationResult.js"; import { EventCallbackFunction } from "../event/EventMessage.js"; import { ClearCacheRequest } from "../request/ClearCacheRequest.js"; import { InitializeApplicationRequest } from "../request/InitializeApplicationRequest.js"; import { EventType } from "../event/EventType.js"; import { HandleRedirectPromiseOptions } from "../request/HandleRedirectPromiseOptions.js"; export interface IPublicClientApplication { // TODO: Make request mandatory in the next major version? initialize(request?: InitializeApplicationRequest): Promise; acquireTokenPopup(request: PopupRequest): Promise; acquireTokenRedirect(request: RedirectRequest): Promise; acquireTokenSilent( silentRequest: SilentRequest ): Promise; acquireTokenByCode( request: AuthorizationCodeRequest ): Promise; addEventCallback( callback: EventCallbackFunction, eventTypes?: Array ): string | null; removeEventCallback(callbackId: string): void; addPerformanceCallback(callback: PerformanceCallbackFunction): string; removePerformanceCallback(callbackId: string): boolean; getAccount(accountFilter: AccountFilter): AccountInfo | null; getAllAccounts(accountFilter?: AccountFilter): AccountInfo[]; handleRedirectPromise( options?: HandleRedirectPromiseOptions ): Promise; loginPopup(request?: PopupRequest): Promise; loginRedirect(request?: RedirectRequest): Promise; logoutRedirect(logoutRequest?: EndSessionRequest): Promise; logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise; ssoSilent(request: SsoSilentRequest): Promise; getLogger(): Logger; setLogger(logger: Logger): void; setActiveAccount(account: AccountInfo | null): void; getActiveAccount(): AccountInfo | null; initializeWrapperLibrary(sku: WrapperSKU, version: string): void; setNavigationClient(navigationClient: INavigationClient): void; /** @internal */ getConfiguration(): BrowserConfiguration; hydrateCache( result: AuthenticationResult, request: | SilentRequest | SsoSilentRequest | RedirectRequest | PopupRequest ): Promise; clearCache(logoutRequest?: ClearCacheRequest): Promise; } export const stubbedPublicClientApplication: IPublicClientApplication = { initialize: () => { return Promise.reject( createBrowserConfigurationAuthError( BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled ) ); }, acquireTokenPopup: () => { return Promise.reject( createBrowserConfigurationAuthError( BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled ) ); }, acquireTokenRedirect: () => { return Promise.reject( createBrowserConfigurationAuthError( BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled ) ); }, acquireTokenSilent: () => { return Promise.reject( createBrowserConfigurationAuthError( BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled ) ); }, acquireTokenByCode: () => { return Promise.reject( createBrowserConfigurationAuthError( BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled ) ); }, getAllAccounts: () => { return []; }, getAccount: () => { return null; }, handleRedirectPromise: () => { return Promise.reject( createBrowserConfigurationAuthError( BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled ) ); }, loginPopup: () => { return Promise.reject( createBrowserConfigurationAuthError( BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled ) ); }, loginRedirect: () => { return Promise.reject( createBrowserConfigurationAuthError( BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled ) ); }, logoutRedirect: () => { return Promise.reject( createBrowserConfigurationAuthError( BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled ) ); }, logoutPopup: () => { return Promise.reject( createBrowserConfigurationAuthError( BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled ) ); }, ssoSilent: () => { return Promise.reject( createBrowserConfigurationAuthError( BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled ) ); }, addEventCallback: () => { return null; }, removeEventCallback: () => { return; }, addPerformanceCallback: () => { return ""; }, removePerformanceCallback: () => { return false; }, getLogger: () => { throw createBrowserConfigurationAuthError( BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled ); }, setLogger: () => { return; }, setActiveAccount: () => { return; }, getActiveAccount: () => { return null; }, initializeWrapperLibrary: () => { return; }, setNavigationClient: () => { return; }, getConfiguration: () => { throw createBrowserConfigurationAuthError( BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled ); }, hydrateCache: () => { return Promise.reject( createBrowserConfigurationAuthError( BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled ) ); }, clearCache: () => { return Promise.reject( createBrowserConfigurationAuthError( BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled ) ); }, };