public void GetCertificateWithVersion() { const string VaultName = "fakevault1"; const string SecretName = "secretname1"; const string SecretVersion = "1aaaaaaa1aa11a1111aaaa11111a1111"; // const string SecretValue = "This is the value fake"; const string TenantId = "11111111-1111-1111-aa1a-a1a11a111111"; const string ClientId = "11111111-1111-1111-aa1a-a1a11a111111"; const string ClientSecret = "a.u8w3FFgwy9v_-5R_5gsT~qf96T~a7e6y"; // var getCertificateInvoked = false; // string key = null; var path = ContainerEnvironment.IsLinux ? Path.Combine(Environment.CurrentDirectory, "my_contoso_local.pfx") : Path.Combine(Environment.CurrentDirectory, "TestValidationCertificate.pfx"); var certificate = new X509Certificate2(path, "abc123"); var certificateString = Convert.ToBase64String(certificate.RawData); using (var context = ShimsContext.Create()) { ShimKeyVaultCertificate.AllInstances.CerGet = new FakesDelegates.Func <KeyVaultCertificate, byte[]>((vaultCert) => certificate.RawData); var fakeCertificate = new ShimKeyVaultCertificate() { NameGet = new FakesDelegates.Func <string>(() => "FakeCert1"), IdGet = new FakesDelegates.Func <Uri>(() => new Uri("cert://FakeCert1")), PropertiesGet = new FakesDelegates.Func <CertificateProperties>(() => { return(new ShimCertificateProperties() { VersionGet = new FakesDelegates.Func <string>(() => SecretVersion), NameGet = new FakesDelegates.Func <string>(() => SecretName), IdGet = new FakesDelegates.Func <Uri>(() => new Uri("cert://FakeCert1")) }); }) }; ShimCertificateClient.AllInstances.GetCertificateVersionAsyncStringStringCancellationToken = new FakesDelegates.Func <CertificateClient, string, string, CancellationToken, Task <Response <KeyVaultCertificate> > >((client, name, version, cancellationToken) => { var keyVaultFakeCertificateResponse = new FakeResponse <KeyVaultCertificate>(fakeCertificate, 200, "OK", null); return(Task.FromResult(keyVaultFakeCertificateResponse as Response <KeyVaultCertificate>)); }); var secret = new ShimKeyVaultCertificateWithPolicy(); var response = new FakeResponse <KeyVaultCertificate>(secret, 200, "OK", null); SetupSecretClientConstructorFakes(); var vault = new KeyVault(VaultName, AzureOauthTokenAuthentication.GetOauthTokenCredentialFromClientSecret(TenantId, ClientId, ClientSecret), 3, TimeSpan.FromSeconds(2), TimeSpan.FromSeconds(15), TimeSpan.FromSeconds(10)); var client = vault.GetCertificatesClient(CertificateClientOptions.ServiceVersion.V7_1); var certificateValue = client.GetAsync(SecretName, SecretVersion).GetAwaiter().GetResult(); Assert.IsNotNull(certificateValue, "Certificate failed to retrieve"); Assert.IsTrue(string.Equals(certificateValue.Id.AbsoluteUri, "cert://fakecert1/", StringComparison.Ordinal), "Id not expected"); Assert.IsTrue(string.Equals(certificateValue.Name, "FakeCert1", StringComparison.Ordinal), "Name not expected"); Assert.IsTrue(string.Equals(certificateValue.Version, SecretVersion, StringComparison.Ordinal), "Version not expected"); Assert.IsNull(certificateValue.Policy, "Policy not expected"); } }