/// <summary>
            /// Simulates a GetKeyAsync method of KeyVault SDK.
            /// </summary>
            /// <param name="name"></param>
            /// <param name="version"></param>
            /// <param name="cancellationToken"></param>
            /// <returns></returns>
            public override Task <Response <KeyVaultKey> > GetKeyAsync(string name, string version = null, CancellationToken cancellationToken = default)
            {
                Console.WriteLine("Accessing Key via Test GetKeyAsync");

                // simulate a RequestFailed Exception
                if (name.Contains(KeyVaultTestConstants.ValidateRequestFailedEx))
                {
                    throw new RequestFailedException("Service Unavailable");
                }

                // simulate a case to return a Null Key.
                if (name.Contains(KeyVaultTestConstants.ValidateNullKeyVaultKey))
                {
                    Mock <Response <KeyVaultKey> > mockedResponseNullKeyVault = new Mock <Response <KeyVaultKey> >();
                    mockedResponseNullKeyVault.SetupGet(r => r.Value).Returns((KeyVaultKey)null);
                    return(Task.FromResult(mockedResponseNullKeyVault.Object));
                }

                this.keyinfo.TryGetValue(name, out string recoverlevel);
                KeyProperties tp      = KeyModelFactory.KeyProperties(recoveryLevel: recoverlevel);
                JsonWebKey    jwk     = KeyModelFactory.JsonWebKey(KeyType.Ec, curveName: "invalid", keyOps: new[] { KeyOperation.Sign, KeyOperation.Verify });
                KeyVaultKey   mockKey = KeyModelFactory.KeyVaultKey(properties: tp, key: jwk);

                Mock <Response <KeyVaultKey> > mockedResponseKeyVault = new Mock <Response <KeyVaultKey> >();

                mockedResponseKeyVault.SetupGet(r => r.Value).Returns(mockKey);

                return(Task.FromResult(mockedResponseKeyVault.Object));
            }