All files / commands login-microsoft-auth-provider.ts

81.81% Statements 9/11
100% Branches 4/4
100% Functions 1/1
81.81% Lines 9/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27        1x     3x 3x 3x   3x 1x   1x   2x   2x                
import * as vscode from 'vscode';
import { MicrosoftAuthService } from '@src/services/core/microsoft-auth-service';
import { CredentialFactory } from '@src/services/core/credential-factory';
 
export const loginMicrosoftAuthProvider = {
    id: 'mentor.command.loginMicrosoftAuthProvider',
    handler: async (authScopes?: string[]) => {
        try {
            const scopes = authScopes ?? ['https://graph.microsoft.com/.default'];
            const session = await new MicrosoftAuthService().getSession(scopes, true);
 
            if (session) {
                vscode.window.showInformationMessage(`Successfully authenticated with Microsoft Entra.`);
 
                return CredentialFactory.createMicrosoftAuthCredential(scopes, session.id, session.accessToken);
            } else {
                vscode.window.showWarningMessage(`Microsoft Entra authentication was cancelled.`);
                
                return null;
            }
        } catch (error: any) {
            vscode.window.showErrorMessage(`Microsoft Entra authentication failed: ${error.message}`);
 
            return null;
        }
    }
};