public DicomWebClient GetDicomWebClient(TestApplication clientApplication)
        {
            EnsureArg.IsNotNull(clientApplication, nameof(clientApplication));
            HttpMessageHandler messageHandler = TestDicomWebServer.CreateMessageHandler();

            if (AuthenticationSettings.SecurityEnabled && !clientApplication.Equals(TestApplications.InvalidClient))
            {
                if (_authenticationHandlers.ContainsKey(clientApplication.ClientId))
                {
                    messageHandler = _authenticationHandlers[clientApplication.ClientId];
                }
                else
                {
                    var credentialConfiguration = new OAuth2ClientCredentialConfiguration(
                        AuthenticationSettings.TokenUri,
                        AuthenticationSettings.Resource,
                        AuthenticationSettings.Scope,
                        clientApplication.ClientId,
                        clientApplication.ClientSecret);
                    var credentialProvider = new OAuth2ClientCredentialProvider(Options.Create(credentialConfiguration), new HttpClient(messageHandler));
                    var authHandler        = new AuthenticationHttpMessageHandler(credentialProvider)
                    {
                        InnerHandler = messageHandler,
                    };

                    _authenticationHandlers.Add(clientApplication.ClientId, authHandler);
                    messageHandler = authHandler;
                }
            }

            var httpClient = new HttpClient(messageHandler)
            {
                BaseAddress = TestDicomWebServer.BaseAddress
            };

            var dicomWebClient = new DicomWebClient(httpClient)
            {
                GetMemoryStream = () => RecyclableMemoryStreamManager.GetStream(),
            };

            return(dicomWebClient);
        }
 public void Dispose()
 {
     HttpClient.Dispose();
     TestDicomWebServer?.Dispose();
 }