예제 #1
0
        public async Task GetTenantSharedInfo_ShouldSucceed_GivenOperatorWorkplace_WithRenewalHandler()
        {
            // Given
            // client authenticated as operator workplace
            var tokens = await _apiClient.SignInWithWorkplaceCredentialsAsync(
                _operatorWorkplaceCredentials.ClientId,
                _operatorWorkplaceCredentials.ClientSecret,
                PskOnlineScopes.DeptOperatorWorkplace);

            var workplaceIdToken = _apiClient.GetIdToken();
            var tenantId         = workplaceIdToken.Claims.First(c => c.Type == CustomClaimTypes.TenantId).Value;

            {
                var httpClient     = _app.CreateClient();
                var renewalHandler = new OpenIdRenewalHandler(httpClient, tokens, null, _app.GetLogger <ApiClient>());
                var localApiClient = new ApiClient(httpClient, renewalHandler, _app.GetLogger <ApiClient>());

                // When
                // the operator workplace reads 'shared' tenant info
                var tenantInfo = await localApiClient.GetTenantSharedInfoAsync(tenantId);

                // Then
                // the request should succeed
                Assert.That(tenantInfo.Id, Is.EqualTo(tenantId));
            }
        }
        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);
        }