Как отключить или обойти проверку подлинности MSAL при выполнении тестов Angular e2e? - PullRequest
1 голос
/ 14 июня 2019

Я хочу настроить некоторые сквозные тесты для моего приложения Angular, которое требует использования библиотеки MSAL для аутентификации в некоторых нисходящих сервисах. Когда я пытаюсь запустить свои тесты e2e локально, библиотека MSAL заставляет меня проходить аутентификацию с именем пользователя / паролем.

Это проблема, потому что в нашем тестировании CI / CD e2e не должно быть вмешательства человека; поэтому я ищу способ обойти аутентификацию MSAL или настроить учетную запись службы для входа в систему. К сожалению, документации по MSAL для Angular не так много (особенно когда речь идет о тестировании e2e), но это кажется общей проблемой, с которой могут столкнуться другие.

Я пытался отключить MsalModule из нашего файла app.module.ts, но мне все равно предлагается войти в систему, когда я пытаюсь запустить приложение. Я также видел несколько статей, пытающихся программно войти в систему, но у нас это не работает, поскольку технически MSAL не является угловым компонентом, к которому мы можем прикоснуться.

app.module.ts:

@NgModule({
  ...
  imports: [
    ...
    MsalModule.forRoot({
      clientID: '<client_id>',
      authority: <microsoft_authority_url>,
      validateAuthority: true,
      redirectUri: "http://localhost:4200/",
      cacheLocation : "localStorage",
      postLogoutRedirectUri: "http://localhost:4200/",
      navigateToLoginRequestUrl: true,
      popUp: true,
      consentScopes: [ "user.read"],
      unprotectedResources: ["https://www.microsoft.com/en-us/"],
      protectedResourceMap: protectedResourceMap,
      logger: loggerCallback,
      correlationId: '1234',
      level: LogLevel.Info,
      piiLoggingEnabled: true
    })
  ],
  entryComponents: [SaveDialogComponent,
                    GenericDialog, MassChangeDialogComponent],
  providers: [TitleCasePipe,
    {provide: HTTP_INTERCEPTORS, useClass: MsalInterceptor, multi: true}],
  bootstrap: [AppComponent]
})
export class AppModule { }

Ожидаемый результат: удаление модуля аутентификации MSAL должно позволить нашему приложению работать без необходимости входа в систему.

Фактический результат: приложение все еще запрашивает вход в систему или неправильно отображает.

...