示例#1
0
        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");
            }
        }