示例#1
0
        /// <summary>
        /// Signs in using the provided credentials
        /// </summary>
        /// <returns></returns>
        public async Task <TokenHolder> SignInWithUserPasswordAsync(SecureString login, SecureString password)
        {
            var loginHandler = new ResourceOwnerPasswordHandler(
                _httpClient, login, password);
            var tokens = await loginHandler.AuthenticateAsync();

            _openIdRenewalHandler = new OpenIdRenewalHandler(_httpClient, tokens, loginHandler, _logger);

            _logger.LogInformation("Successfully signed in with user credentials");
            return(tokens);
        }
        public async Task OpenIdRenewalHandler_Should_Fire_Token_Updated_Event()
        {
            // Given
            // a client signed in with valid credentials
            var apiClient = new ApiClient(_httpClient, _app.GetLogger <ApiClient>());

            var tokens = await apiClient.SignInWithUserPasswordAsync(
                TestUsers.DefaultSiteAdminName,
                TestUsers.DefaultSiteAdminPass);

            var authHandler = new ResourceOwnerPasswordHandler(
                _httpClient,
                TestUsers.DefaultSiteAdminName.ToSecureString(),
                TestUsers.DefaultSiteAdminPass.ToSecureString());

            // with the OpenIdRenewalHandler
            var oidHandler = new OpenIdRenewalHandler(
                _httpClient,
                tokens,
                authHandler,
                _app.GetLogger <OpenIdRenewalHandler>());

            // and an event handler hooked up to the event
            bool tokenUpdatedEventFired = false;

            void TokenUpdatedEventHandler(TokenHolder newTokens)
            {
                tokenUpdatedEventFired = true;
            }

            oidHandler.TokenUpdated += TokenUpdatedEventHandler;

            // When
            // the renewal handler updates the tokens,
            await oidHandler.RefereshAuthenticationAsync();

            // Then
            // the event should have fired
            Assert.IsTrue(tokenUpdatedEventFired);
        }