Skip to content

Commit a9326bc

Browse files
author
Aditya Abhishek
committed
add unit tests
1 parent 8e8c9f9 commit a9326bc

9 files changed

Lines changed: 577 additions & 14 deletions

File tree

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
// Copyright (c) Microsoft Corporation.
2+
// Licensed under the MIT License.
3+
4+
using NUnit.Framework;
5+
using VirtualClient.Contracts;
6+
using VirtualClient.TestExtensions;
7+
8+
namespace VirtualClient
9+
{
10+
[TestFixture]
11+
[Category("Unit")]
12+
public class KeyVaultDescriptorTests
13+
{
14+
private KeyVaultDescriptor descriptor;
15+
private KeyVaultDescriptor descriptor2;
16+
17+
[SetUp]
18+
public void SetupTest()
19+
{
20+
this.descriptor = new KeyVaultDescriptor
21+
{
22+
ObjectType = KeyVaultObjectType.Secret,
23+
VaultUri = "https://myvault.vault.azure.net/",
24+
Name = "mysecret",
25+
Version = "v1",
26+
Value = "secret-value",
27+
ObjectId = "object-id-1",
28+
Policy = "policy-1"
29+
};
30+
31+
this.descriptor2 = new KeyVaultDescriptor
32+
{
33+
ObjectType = KeyVaultObjectType.Key,
34+
VaultUri = "https://othervault.vault.azure.net/",
35+
Name = "mykey",
36+
Version = "v2",
37+
Value = "key-value",
38+
ObjectId = "object-id-2",
39+
Policy = "policy-2"
40+
};
41+
}
42+
43+
[Test]
44+
public void KeyVaultDescriptorCorrectlyImplementsEqualitySemantics()
45+
{
46+
EqualityAssert.CorrectlyImplementsEqualitySemantics<DependencyDescriptor>(() => this.descriptor, () => this.descriptor2);
47+
}
48+
49+
[Test]
50+
public void KeyVaultDescriptorEqualitySemanticsAreNotAffectedByNullPropertyValues()
51+
{
52+
this.descriptor.VaultUri = null;
53+
this.descriptor2.VaultUri = null;
54+
this.descriptor.Version = null;
55+
this.descriptor2.Version = null;
56+
this.descriptor.Value = null;
57+
this.descriptor2.Value = null;
58+
59+
EqualityAssert.CorrectlyImplementsEqualitySemantics<DependencyDescriptor>(() => this.descriptor, () => this.descriptor2);
60+
}
61+
62+
[Test]
63+
public void KeyVaultDescriptorCorrectlyImplementsHashcodeSemantics()
64+
{
65+
EqualityAssert.CorrectlyImplementsHashcodeSemantics(() => this.descriptor, () => this.descriptor2);
66+
}
67+
68+
[Test]
69+
public void KeyVaultDescriptorHashcodeSemanticsAreNotAffectedByNullPropertyValues()
70+
{
71+
this.descriptor.VaultUri = null;
72+
this.descriptor2.VaultUri = null;
73+
this.descriptor.Value = null;
74+
this.descriptor2.Value = null;
75+
this.descriptor.ObjectId = null;
76+
this.descriptor2.ObjectId = null;
77+
78+
EqualityAssert.CorrectlyImplementsHashcodeSemantics(() => this.descriptor, () => this.descriptor2);
79+
}
80+
81+
[Test]
82+
public void KeyVaultDescriptorPropertiesAreSetAndGetCorrectly()
83+
{
84+
var descriptor = new KeyVaultDescriptor
85+
{
86+
ObjectType = KeyVaultObjectType.Certificate,
87+
VaultUri = "https://vault.uri/",
88+
Name = "cert",
89+
Version = "v3",
90+
Value = "cert-value",
91+
ObjectId = "object-id-3",
92+
Policy = "policy-3"
93+
};
94+
95+
Assert.AreEqual(KeyVaultObjectType.Certificate, descriptor.ObjectType);
96+
Assert.AreEqual("https://vault.uri/", descriptor.VaultUri);
97+
Assert.AreEqual("cert", descriptor.Name);
98+
Assert.AreEqual("v3", descriptor.Version);
99+
Assert.AreEqual("cert-value", descriptor.Value);
100+
Assert.AreEqual("object-id-3", descriptor.ObjectId);
101+
Assert.AreEqual("policy-3", descriptor.Policy);
102+
}
103+
}
104+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// Copyright (c) Microsoft Corporation.
2+
// Licensed under the MIT License.
3+
4+
using System;
5+
using NUnit.Framework;
6+
using VirtualClient.Contracts;
7+
using VirtualClient;
8+
9+
namespace VirtualClient.Core.UnitTests
10+
{
11+
[TestFixture]
12+
[Category("Unit")]
13+
public class DependencyFactoryTests
14+
{
15+
[Test]
16+
public void CreateKeyVaultManager_ThrowsIfDependencyStoreIsNotKeyVaultStore()
17+
{
18+
// Arrange: Use a base DependencyBlobStore, not a DependencyKeyVaultStore
19+
var store = new DependencyBlobStore("KeyVault", new Uri("https://myblob.azure.net/"));
20+
21+
// Act & Assert
22+
var ex = Assert.Throws<DependencyException>(() => DependencyFactory.CreateKeyVaultManager(store));
23+
StringAssert.Contains("Required Key Vault information not provided", ex.Message);
24+
}
25+
26+
[Test]
27+
public void CreateKeyVaultManager_ReturnsKeyVaultManagerForValidStore()
28+
{
29+
// Arrange: Use a valid DependencyKeyVaultStore
30+
var keyVaultStore = new DependencyKeyVaultStore("KeyVault", new Uri("https://myvault.vault.azure.net/"));
31+
32+
// Act
33+
var manager = DependencyFactory.CreateKeyVaultManager(keyVaultStore);
34+
35+
// Assert
36+
Assert.IsNotNull(manager);
37+
Assert.IsInstanceOf<IKeyVaultManager>(manager);
38+
}
39+
40+
[Test]
41+
public void CreateKeyVaultManager_ThrowsIfNullPassed()
42+
{
43+
// Act & Assert
44+
Assert.Throws<DependencyException>(() => DependencyFactory.CreateKeyVaultManager(null));
45+
}
46+
}
47+
}

src/VirtualClient/VirtualClient.Core.UnitTests/EndpointUtilityTests.cs

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@ namespace VirtualClient
1010
using AutoFixture;
1111
using Azure.Identity;
1212
using Moq;
13-
using NUnit.Framework;
13+
using NUnit.Framework;
1414
using VirtualClient.Contracts;
15+
using VirtualClient.Identity;
1516
using VirtualClient.TestExtensions;
1617

1718
[TestFixture]
@@ -795,5 +796,63 @@ public void EndpointUtilityThrowsWhenCreatingAProfileReferenceIfTheValueProvided
795796
invalidEndpoint,
796797
this.mockFixture.CertificateManager.Object));
797798
}
799+
800+
[Test]
801+
[TestCase(
802+
"https://my-keyvault.vault.azure.net/?cid=985bbc17-e3a5-4fec-b0cb-40dbb8bc5959&tid=307591a4-abb2-4559-af59-b47177d140cf&crtt=1234567",
803+
"https://my-keyvault.vault.azure.net/")]
804+
[TestCase(
805+
"Endpoint=https://my-keyvault.vault.azure.net/;CertificateThumbprint=1234567;ClientId=985bbc17;TenantId=307591a4",
806+
"https://my-keyvault.vault.azure.net/")]
807+
public void EndpointUtility_CreateKeyVaultStoreReference_Entra(string connectionString, string expectedUri)
808+
{
809+
// Setup: A matching certificate is found in the local store.
810+
this.mockFixture.CertificateManager.Setup(mgr => mgr.GetCertificateFromStoreAsync("1234567", It.IsAny<IEnumerable<StoreLocation>>(), It.IsAny<StoreName>()))
811+
.ReturnsAsync(this.mockFixture.Create<X509Certificate2>());
812+
813+
var store = EndpointUtility.CreateKeyVaultStoreReference(
814+
DependencyStore.KeyVault,
815+
connectionString,
816+
this.mockFixture.CertificateManager.Object);
817+
818+
Assert.IsNotNull(store);
819+
Assert.AreEqual(DependencyStore.KeyVault, store.StoreName);
820+
Assert.AreEqual(DependencyStore.StoreTypeAzureKeyVault, store.StoreType);
821+
Assert.AreEqual(new Uri(expectedUri).ToString(), store.EndpointUri.ToString());
822+
Assert.IsNotNull(store.Credentials);
823+
Assert.IsInstanceOf<ClientCertificateCredential>(store.Credentials);
824+
}
825+
826+
[Test]
827+
[TestCase(
828+
"Endpoint=https://my-keyvault.vault.azure.net/;ManagedIdentityId=307591a4-abb2-4559-af59-b47177d140cf",
829+
"https://my-keyvault.vault.azure.net/")]
830+
[TestCase(
831+
"https://my-keyvault.vault.azure.net/?miid=307591a4-abb2-4559-af59-b47177d140cf",
832+
"https://my-keyvault.vault.azure.net/")]
833+
public void EndpointUtility_CreateKeyVaultStoreReference_Miid(string connectionString, string expectedUri)
834+
{
835+
var store = EndpointUtility.CreateKeyVaultStoreReference(
836+
DependencyStore.KeyVault,
837+
connectionString,
838+
this.mockFixture.CertificateManager.Object);
839+
840+
Assert.IsNotNull(store);
841+
Assert.AreEqual(DependencyStore.KeyVault, store.StoreName);
842+
Assert.AreEqual(DependencyStore.StoreTypeAzureKeyVault, store.StoreType);
843+
Assert.AreEqual(new Uri(expectedUri).ToString(), store.EndpointUri.ToString());
844+
Assert.IsNotNull(store.Credentials);
845+
Assert.IsInstanceOf<ManagedIdentityCredential>(store.Credentials);
846+
}
847+
848+
[Test]
849+
public void CreateKeyVaultStoreReference_ConnectionString_ThrowsOnInvalid()
850+
{
851+
Assert.Throws<SchemaException>(() =>
852+
EndpointUtility.CreateKeyVaultStoreReference(
853+
DependencyStore.KeyVault,
854+
"InvalidConnectionString",
855+
this.mockFixture.CertificateManager.Object));
856+
}
798857
}
799858
}

0 commit comments

Comments
 (0)