diff --git a/src/Arcus.Testing.Tests.Integration/Configuration/AzureEnvironment.cs b/src/Arcus.Testing.Tests.Integration/Configuration/AzureEnvironment.cs new file mode 100644 index 00000000..c4bd5c21 --- /dev/null +++ b/src/Arcus.Testing.Tests.Integration/Configuration/AzureEnvironment.cs @@ -0,0 +1,45 @@ +namespace Arcus.Testing.Tests.Integration.Configuration +{ + /// + /// Represents the environment on Azure where a set of test resources are located. + /// + public class AzureEnvironment + { + /// + /// Initializes a new instance of the class. + /// + public AzureEnvironment( + string subscriptionId, + string resourceGroupName) + { + SubscriptionId = subscriptionId; + ResourceGroupName = resourceGroupName; + } + + /// + /// Gets the subscription ID for the set of test resources. + /// + public string SubscriptionId { get; } + + /// + /// Gets the resource group name for the set of test resources. + /// + public string ResourceGroupName { get; } + } + + /// + /// Extensions on the for more test-friendly interaction. + /// + public static partial class TestConfigExtensions + { + /// + /// Loads the from the current test . + /// + public static AzureEnvironment GetAzureEnvironment(this TestConfig config) + { + return new AzureEnvironment( + config["Arcus:SubscriptionId"], + config["Arcus:ResourceGroup:Name"]); + } + } +} diff --git a/src/Arcus.Testing.Tests.Integration/Configuration/ServicePrincipal.cs b/src/Arcus.Testing.Tests.Integration/Configuration/ServicePrincipal.cs index d984bc17..3eabbdb2 100644 --- a/src/Arcus.Testing.Tests.Integration/Configuration/ServicePrincipal.cs +++ b/src/Arcus.Testing.Tests.Integration/Configuration/ServicePrincipal.cs @@ -15,11 +15,11 @@ public ServicePrincipal(string tenantId, string clientId, string clientSecret) public string TenantId { get; } public string ClientId { get; } - + public string ClientSecret { get; } } - public static class TestConfigExtensions + public static partial class TestConfigExtensions { public static ServicePrincipal GetServicePrincipal(this TestConfig config) { diff --git a/src/Arcus.Testing.Tests.Integration/Integration/DataFactory/Configuration/DataFactoryConfig.cs b/src/Arcus.Testing.Tests.Integration/Integration/DataFactory/Configuration/DataFactoryConfig.cs index 559d18fd..2efc904e 100644 --- a/src/Arcus.Testing.Tests.Integration/Integration/DataFactory/Configuration/DataFactoryConfig.cs +++ b/src/Arcus.Testing.Tests.Integration/Integration/DataFactory/Configuration/DataFactoryConfig.cs @@ -1,5 +1,7 @@ using System; +using Arcus.Testing.Tests.Integration.Configuration; using Azure.Core; +using Azure.ResourceManager.DataFactory; // ReSharper disable once CheckNamespace namespace Arcus.Testing @@ -13,16 +15,14 @@ public class DataFactoryConfig /// Initializes a new instance of the class. /// public DataFactoryConfig( - string subscriptionId, - string resourceGroupName, - string resourceName) + string factoryName, + ResourceIdentifier factoryResourceId) { - ArgumentException.ThrowIfNullOrWhiteSpace(subscriptionId); - ArgumentException.ThrowIfNullOrWhiteSpace(resourceGroupName); - ArgumentException.ThrowIfNullOrWhiteSpace(resourceName); + ArgumentException.ThrowIfNullOrWhiteSpace(factoryName); + ArgumentNullException.ThrowIfNull(factoryResourceId); - Name = resourceName; - ResourceId = ResourceIdentifier.Parse($"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{resourceName}"); + Name = factoryName; + ResourceId = factoryResourceId; } /// @@ -37,7 +37,7 @@ public DataFactoryConfig( } /// - /// Extensions on the for more easier access to the . + /// Extensions on the for easier access to the . /// public static class TestConfigExtensions { @@ -46,10 +46,15 @@ public static class TestConfigExtensions /// public static DataFactoryConfig GetDataFactory(this TestConfig config) { + AzureEnvironment env = config.GetAzureEnvironment(); + + string factoryName = config["Arcus:DataFactory:Name"]; + ResourceIdentifier factoryResourceId = + DataFactoryResource.CreateResourceIdentifier(env.SubscriptionId, env.ResourceGroupName, factoryName); + return new DataFactoryConfig( - config["Arcus:SubscriptionId"], - config["Arcus:ResourceGroup:Name"], - config["Arcus:DataFactory:Name"]); + factoryName, + factoryResourceId); } } } \ No newline at end of file diff --git a/src/Arcus.Testing.Tests.Integration/Integration/DataFactory/Fixture/TemporaryDataFactoryDataFlow.cs b/src/Arcus.Testing.Tests.Integration/Integration/DataFactory/Fixture/TemporaryDataFactoryDataFlow.cs index ee083217..25ce9817 100644 --- a/src/Arcus.Testing.Tests.Integration/Integration/DataFactory/Fixture/TemporaryDataFactoryDataFlow.cs +++ b/src/Arcus.Testing.Tests.Integration/Integration/DataFactory/Fixture/TemporaryDataFactoryDataFlow.cs @@ -3,6 +3,7 @@ using System.IO; using System.Linq; using System.Threading.Tasks; +using Arcus.Testing.Tests.Integration.Configuration; using Arcus.Testing.Tests.Integration.Storage.Configuration; using Azure; using Azure.Core; @@ -50,6 +51,10 @@ private TemporaryDataFactoryDataFlow(DataFlowDataType dataType, TestConfig confi _config = config; _logger = logger; + var env = config.GetAzureEnvironment(); + SubscriptionId = env.SubscriptionId; + ResourceGroupName = env.ResourceGroupName; + Name = RandomizeWith("dataFlow"); SourceName = RandomizeWith("sourceName"); SinkName = RandomizeWith("sinkName"); @@ -57,8 +62,8 @@ private TemporaryDataFactoryDataFlow(DataFlowDataType dataType, TestConfig confi SourceDataSetName = RandomizeWith("sourceDataSet"); } - private string SubscriptionId => _config["Arcus:SubscriptionId"]; - private string ResourceGroupName => _config["Arcus:ResourceGroup:Name"]; + private string SubscriptionId { get; } + private string ResourceGroupName { get; } private DataFactoryConfig DataFactory => _config.GetDataFactory(); private StorageAccount StorageAccount => _config.GetStorageAccount(); diff --git a/src/Arcus.Testing.Tests.Integration/Storage/Configuration/CosmosDbConfig.cs b/src/Arcus.Testing.Tests.Integration/Storage/Configuration/CosmosDbConfig.cs index 3e206a0d..3b7c017a 100644 --- a/src/Arcus.Testing.Tests.Integration/Storage/Configuration/CosmosDbConfig.cs +++ b/src/Arcus.Testing.Tests.Integration/Storage/Configuration/CosmosDbConfig.cs @@ -1,5 +1,7 @@ using System; +using Arcus.Testing.Tests.Integration.Configuration; using Azure.Core; +using Azure.ResourceManager.CosmosDB; // ReSharper disable once CheckNamespace namespace Arcus.Testing @@ -9,88 +11,71 @@ public class CosmosDbConfig /// /// Initializes a new instance of the class. /// - public CosmosDbConfig(ResourceIdentifier resourceId, MongoDbConfig mongoDb, NoSqlConfig noSql) + public CosmosDbConfig(ResourceIdentifier accountResourceId, string accountName, string databaseName) { - Name = resourceId.Name; - Endpoint = new Uri("https://arcus-testing-cosmos.mongo.cosmos.azure.com/").ToString(); - ResourceId = resourceId; - MongoDb = mongoDb; - NoSql = noSql; - } + ArgumentNullException.ThrowIfNull(accountResourceId); + ArgumentException.ThrowIfNullOrWhiteSpace(accountName); + ArgumentException.ThrowIfNullOrWhiteSpace(databaseName); - public string Name { get; } - public string Endpoint { get; } - public ResourceIdentifier ResourceId { get; } - public MongoDbConfig MongoDb { get; } - public NoSqlConfig NoSql { get; } - } + AccountName = accountName; + AccountEndpoint = new Uri($"https://{accountName}.documents.azure.com/"); + AccountResourceId = accountResourceId; + DatabaseName = databaseName; + } - public class MongoDbConfig - { /// - /// Initializes a new instance of the class. + /// Gets the name of the Cosmos DB account associated with the current test setup. /// - public MongoDbConfig(ResourceIdentifier resourceId, string accountName, string databaseName) - { - ResourceId = resourceId; - Name = accountName; - DatabaseName = databaseName; - } + public string AccountName { get; } - public string Name { get; } - public ResourceIdentifier ResourceId { get; } - public string DatabaseName { get; } - } + /// + /// Gets the endpoint of the Cosmos DB account associated with the current test setup. + /// + public Uri AccountEndpoint { get; } - public class NoSqlConfig - { /// - /// Initializes a new instance of the class. + /// Gets the resource ID of the Cosmos DB account associated with the current test setup. /// - public NoSqlConfig(ResourceIdentifier resourceId, string accountName, string databaseName) - { - ResourceId = resourceId; - DatabaseName = databaseName; - Endpoint = new Uri($"https://{accountName}.documents.azure.com/").ToString(); - } + public ResourceIdentifier AccountResourceId { get; } - public string Endpoint { get; } - public ResourceIdentifier ResourceId { get; } + /// + /// Gets the name of the default database that was created on the Cosmos DB account associated with the current test setup. + /// public string DatabaseName { get; } } + /// + /// Extensions on the for more test-friendly interaction. + /// public static class CosmosDbTestConfigExtensions { - public static MongoDbConfig GetMongoDb(this TestConfig config) + /// + /// Loads the specific for the Mongo storage. + /// + public static CosmosDbConfig GetMongoDb(this TestConfig config) { - string subscriptionId = config["Arcus:SubscriptionId"]; - string resourceGroupName = config["Arcus:ResourceGroup:Name"]; - string cosmosDbName = config["Arcus:Cosmos:MongoDb:Name"]; - var resourceId = ResourceIdentifier.Parse($"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{cosmosDbName}"); - string databaseName = config["Arcus:Cosmos:MongoDb:DatabaseName"]; - - return new MongoDbConfig( - resourceId, - cosmosDbName, - databaseName); + return config.GetCosmosDb(CosmosDbType.MongoDb); } - public static NoSqlConfig GetNoSql(this TestConfig config) + /// + /// Loads the specific for the NoSql storage. + /// + public static CosmosDbConfig GetNoSql(this TestConfig config) { - ResourceIdentifier resourceId = CreateResourceId(config, config["Arcus:Cosmos:NoSql:Name"]); - - return new NoSqlConfig( - resourceId, - config["Arcus:Cosmos:NoSql:Name"], - config["Arcus:Cosmos:NoSql:DatabaseName"]); + return config.GetCosmosDb(CosmosDbType.NoSql); } - private static ResourceIdentifier CreateResourceId(TestConfig config, string accountName) + private enum CosmosDbType { NoSql, MongoDb } + + private static CosmosDbConfig GetCosmosDb(this TestConfig config, CosmosDbType cosmosDbType) { - string subscriptionId = config["Arcus:SubscriptionId"]; - string resourceGroupName = config["Arcus:ResourceGroup:Name"]; - - return ResourceIdentifier.Parse($"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}"); + AzureEnvironment env = config.GetAzureEnvironment(); + + string cosmosDbName = config[$"Arcus:Cosmos:{cosmosDbType}:Name"]; + string databaseName = config[$"Arcus:Cosmos:{cosmosDbType}:DatabaseName"]; + ResourceIdentifier resourceId = CosmosDBAccountResource.CreateResourceIdentifier(env.SubscriptionId, env.ResourceGroupName, cosmosDbName); + + return new CosmosDbConfig(resourceId, cosmosDbName, databaseName); } } } diff --git a/src/Arcus.Testing.Tests.Integration/Storage/Fixture/MongoDbTestContext.cs b/src/Arcus.Testing.Tests.Integration/Storage/Fixture/MongoDbTestContext.cs index 00a0cb21..110222d9 100644 --- a/src/Arcus.Testing.Tests.Integration/Storage/Fixture/MongoDbTestContext.cs +++ b/src/Arcus.Testing.Tests.Integration/Storage/Fixture/MongoDbTestContext.cs @@ -62,9 +62,10 @@ private static async Task AuthenticateMongoDbClientAsync(TestConfig var tokenProvider = new DefaultAzureCredential(); AccessToken accessToken = await tokenProvider.GetTokenAsync(new TokenRequestContext(scopes: new[] { scope })); - string subscriptionId = config["Arcus:SubscriptionId"]; - string resourceGroupName = config["Arcus:ResourceGroup:Name"]; - string cosmosDbName = config["Arcus:Cosmos:MongoDb:Name"]; + AzureEnvironment env = config.GetAzureEnvironment(); + string subscriptionId = env.SubscriptionId; + string resourceGroupName = env.ResourceGroupName; + string cosmosDbName = config.GetMongoDb().AccountName; var listConnectionStringUrl = $"https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{cosmosDbName}/listConnectionStrings?api-version=2021-04-15"; @@ -201,7 +202,7 @@ public async Task ShouldStoreDocumentAsync(string collectionName, BsonValue i } /// - /// Verifies that a document does not exists in the MongoDb collection. + /// Verifies that a document does not exist in the MongoDb collection. /// public async Task ShouldNotStoreDocumentAsync(string collectionName, BsonValue id) { diff --git a/src/Arcus.Testing.Tests.Integration/Storage/Fixture/NoSqlTestContext.cs b/src/Arcus.Testing.Tests.Integration/Storage/Fixture/NoSqlTestContext.cs index 0ea12f82..e8514a43 100644 --- a/src/Arcus.Testing.Tests.Integration/Storage/Fixture/NoSqlTestContext.cs +++ b/src/Arcus.Testing.Tests.Integration/Storage/Fixture/NoSqlTestContext.cs @@ -6,13 +6,12 @@ using Arcus.Testing.Tests.Integration.Fixture; using Azure; using Azure.Identity; -using Azure.ResourceManager.CosmosDB.Models; -using Azure.ResourceManager.CosmosDB; using Azure.ResourceManager; +using Azure.ResourceManager.CosmosDB; +using Azure.ResourceManager.CosmosDB.Models; using Microsoft.Azure.Cosmos; using Microsoft.Extensions.Logging; using Xunit; -using Xunit.Sdk; namespace Arcus.Testing.Tests.Integration.Storage.Fixture { @@ -35,7 +34,7 @@ public interface INoSqlItem : INoSqlItem public class NoSqlTestContext : IAsyncDisposable { private readonly TemporaryManagedIdentityConnection _connection; - private readonly NoSqlConfig _config; + private readonly CosmosDbConfig _config; private readonly CosmosClient _client; private readonly Collection _containerNames = new(); private readonly ILogger _logger; @@ -44,7 +43,7 @@ private NoSqlTestContext( TemporaryManagedIdentityConnection connection, CosmosClient client, Database database, - NoSqlConfig config, + CosmosDbConfig config, ILogger logger) { _connection = connection; @@ -65,16 +64,16 @@ private NoSqlTestContext( public static NoSqlTestContext Given(TestConfig config, ILogger logger) { var connection = TemporaryManagedIdentityConnection.Create(config.GetServicePrincipal()); - NoSqlConfig noSql = config.GetNoSql(); + CosmosDbConfig noSql = config.GetNoSql(); - var client = new CosmosClient(noSql.Endpoint, new DefaultAzureCredential()); + var client = new CosmosClient(noSql.AccountEndpoint.ToString(), new DefaultAzureCredential()); Database database = client.GetDatabase(noSql.DatabaseName); return new NoSqlTestContext(connection, client, database, noSql, logger); } /// - /// Provides a new container name that does not exists in the NoSql database. + /// Provides a new container name that does not exist in the NoSql database. /// public string WhenContainerNameUnavailable() { @@ -85,7 +84,7 @@ public string WhenContainerNameUnavailable() } /// - /// Provides a new container name that does exists in the NoSql database. + /// Provides a new container name that does exist in the NoSql database. /// public async Task WhenContainerNameAvailableAsync(string partitionKeyPath = "/pk") { @@ -93,13 +92,13 @@ public async Task WhenContainerNameAvailableAsync(string partitionKeyPat _logger.LogTrace("[Test] create NoSql container '{ContainerName}' outside the fixture's scope", containerName); var arm = new ArmClient(new DefaultAzureCredential()); - CosmosDBAccountResource cosmosDb = arm.GetCosmosDBAccountResource(_config.ResourceId); + CosmosDBAccountResource cosmosDb = arm.GetCosmosDBAccountResource(_config.AccountResourceId); CosmosDBSqlDatabaseResource database = await cosmosDb.GetCosmosDBSqlDatabaseAsync(_config.DatabaseName); CosmosDBAccountResource resource = await cosmosDb.GetAsync(); var newContainer = new CosmosDBSqlContainerResourceInfo(containerName) { - PartitionKey = new CosmosDBContainerPartitionKey { Paths = { partitionKeyPath }} + PartitionKey = new CosmosDBContainerPartitionKey { Paths = { partitionKeyPath } } }; var request = new CosmosDBSqlContainerCreateOrUpdateContent(resource.Data.Location, newContainer); await database.GetCosmosDBSqlContainers() @@ -116,7 +115,7 @@ public async Task WhenContainerDeletedAsync(string containerName) _logger.LogTrace("[Test] delete NoSql container '{ContainerName}' outside test fixture's scope", containerName); var arm = new ArmClient(new DefaultAzureCredential()); - CosmosDBAccountResource cosmosDb = arm.GetCosmosDBAccountResource(_config.ResourceId); + CosmosDBAccountResource cosmosDb = arm.GetCosmosDBAccountResource(_config.AccountResourceId); CosmosDBSqlDatabaseResource database = await cosmosDb.GetCosmosDBSqlDatabaseAsync(_config.DatabaseName); CosmosDBSqlContainerResource container = await database.GetCosmosDBSqlContainerAsync(containerName); @@ -183,7 +182,7 @@ await Poll.UntilAvailableAsync(async () => } /// - /// Verifies that n item does not exists in a NoSql container. + /// Verifies that n item does not exist in a NoSql container. /// public async Task ShouldNotStoreItemAsync(string containerName, T expected) where T : INoSqlItem { @@ -206,7 +205,7 @@ public async ValueTask DisposeAsync() disposables.Add(AsyncDisposable.Create(async () => { var arm = new ArmClient(new DefaultAzureCredential()); - CosmosDBAccountResource cosmosDb = arm.GetCosmosDBAccountResource(_config.ResourceId); + CosmosDBAccountResource cosmosDb = arm.GetCosmosDBAccountResource(_config.AccountResourceId); CosmosDBSqlDatabaseResource database = await cosmosDb.GetCosmosDBSqlDatabaseAsync(_config.DatabaseName); foreach (var containerName in _containerNames) @@ -219,7 +218,7 @@ public async ValueTask DisposeAsync() } catch (CosmosException exception) when (exception.StatusCode is HttpStatusCode.NotFound) { - // Ignore when the container does not exists. + // Ignore when the container does not exist. } catch (RequestFailedException exception) when (exception.Status is 404) { diff --git a/src/Arcus.Testing.Tests.Integration/Storage/TemporaryMongoDbCollectionTests.cs b/src/Arcus.Testing.Tests.Integration/Storage/TemporaryMongoDbCollectionTests.cs index 563659ef..50cd9955 100644 --- a/src/Arcus.Testing.Tests.Integration/Storage/TemporaryMongoDbCollectionTests.cs +++ b/src/Arcus.Testing.Tests.Integration/Storage/TemporaryMongoDbCollectionTests.cs @@ -19,7 +19,7 @@ public TemporaryMongoDbCollectionTests(ITestOutputHelper outputWriter) : base(ou { } - private MongoDbConfig MongoDb => Configuration.GetMongoDb(); + private CosmosDbConfig MongoDb => Configuration.GetMongoDb(); [Fact] public async Task CreateTempMongoDbCollection_OnNonExistingCollection_SucceedsByExistingDuringLifetimeFixture() @@ -114,7 +114,7 @@ public async Task CreateTempMongoDbCollectionWithCleanMatchingOnSetup_OnExisting // Assert await context.ShouldNotStoreDocumentAsync(collectionName, matchedId); await context.ShouldStoreDocumentAsync(collectionName, unmatchedId); - + await collection.DisposeAsync(); await context.ShouldStoreDocumentAsync(collectionName, unmatchedId); } @@ -236,8 +236,8 @@ public async Task CreateTempMongoDbCollection_WhenCollectionWasDeletedOutsideFix private async Task WhenTempCollectionCreatedAsync(string collectionName, Action configureOptions = null) { var collection = configureOptions is null - ? await TemporaryMongoDbCollection.CreateIfNotExistsAsync(MongoDb.ResourceId, MongoDb.DatabaseName, collectionName, Logger) - : await TemporaryMongoDbCollection.CreateIfNotExistsAsync(MongoDb.ResourceId, MongoDb.DatabaseName, collectionName, Logger, configureOptions); + ? await TemporaryMongoDbCollection.CreateIfNotExistsAsync(MongoDb.AccountResourceId, MongoDb.DatabaseName, collectionName, Logger) + : await TemporaryMongoDbCollection.CreateIfNotExistsAsync(MongoDb.AccountResourceId, MongoDb.DatabaseName, collectionName, Logger, configureOptions); Assert.Equal(collectionName, collection.Name); return collection; diff --git a/src/Arcus.Testing.Tests.Integration/Storage/TemporaryMongoDbDocumentTests.cs b/src/Arcus.Testing.Tests.Integration/Storage/TemporaryMongoDbDocumentTests.cs index 8e411ace..cc1418a4 100644 --- a/src/Arcus.Testing.Tests.Integration/Storage/TemporaryMongoDbDocumentTests.cs +++ b/src/Arcus.Testing.Tests.Integration/Storage/TemporaryMongoDbDocumentTests.cs @@ -20,7 +20,7 @@ public TemporaryMongoDbDocumentTests(ITestOutputHelper outputWriter) : base(outp { } - private MongoDbConfig MongoDb => Configuration.GetMongoDb(); + private CosmosDbConfig MongoDb => Configuration.GetMongoDb(); [Fact] public async Task CreateTempMongoDbDocument_OnNonExistingDocumentId_SucceedsByExistingDuringLifetimeFixture() @@ -53,7 +53,7 @@ public async Task CreateTempMongoDbDocument_OnExistingDocumentId_SucceedsByRever BsonValue id = await context.WhenDocumentAvailableAsync(collectionName, original); Product replacement = CreateProduct(); - replacement.Id = (ObjectId)id; + replacement.Id = (ObjectId) id; TemporaryMongoDbDocument temp = await WhenTempDocumentCreatedAsync(collectionName, replacement); await context.ShouldStoreDocumentAsync(collectionName, id, stored => AssertProduct(replacement, stored)); @@ -69,7 +69,7 @@ private async Task WhenTempDocumentCreatedAsync( where TDoc : class { return await TemporaryMongoDbDocument.InsertIfNotExistsAsync( - MongoDb.ResourceId, + MongoDb.AccountResourceId, MongoDb.DatabaseName, collectionName, doc, @@ -113,7 +113,7 @@ public async Task CreateTempMongoDbDocument_WithOtherThanObjectIdPropertyType_Su BsonValue id = await context.WhenDocumentAvailableAsync(collectionName, original); var replacement = DocWithStringId.Generate(); - replacement.Id = (string)id; + replacement.Id = (string) id; TemporaryMongoDbDocument temp = await WhenTempDocumentCreatedAsync(collectionName, replacement); await context.ShouldStoreDocumentAsync(collectionName, id, stored => Assert.Equal(replacement.Name, stored.Name)); diff --git a/src/Arcus.Testing.Tests.Integration/Storage/TemporaryNoSqlContainerTests.cs b/src/Arcus.Testing.Tests.Integration/Storage/TemporaryNoSqlContainerTests.cs index ada3cd5f..41341428 100644 --- a/src/Arcus.Testing.Tests.Integration/Storage/TemporaryNoSqlContainerTests.cs +++ b/src/Arcus.Testing.Tests.Integration/Storage/TemporaryNoSqlContainerTests.cs @@ -13,7 +13,7 @@ namespace Arcus.Testing.Tests.Integration.Storage [Collection(TestCollections.NoSql)] public class TemporaryNoSqlContainerTests : IntegrationTest { - private string[] PartitionKeyPaths => new[] + private static string[] PartitionKeyPaths => new[] { "/" + nameof(Ship.Destination) + "/" + nameof(Destination.Country) }; @@ -25,7 +25,7 @@ public TemporaryNoSqlContainerTests(ITestOutputHelper outputWriter) : base(outpu { } - private NoSqlConfig NoSql => Configuration.GetNoSql(); + private CosmosDbConfig NoSql => Configuration.GetNoSql(); [Fact] public async Task CreateTempNoSqlContainer_WithNonExistingContainer_SucceedsByExistingDuringLifetimeFixture() @@ -182,7 +182,7 @@ public async Task CreateTempNoSqlContainerWithCleanAllOnTeardown_WhenExistingIte string containerName = await WhenContainerAlreadyAvailableAsync(context); Ship createdBefore = await context.WhenItemAvailableAsync(containerName, CreateShip("before")); - + TemporaryNoSqlContainer container = await WhenTempContainerCreatedAsync(containerName); container.OnTeardown.CleanAllItems(); await context.ShouldStoreItemAsync(containerName, createdBefore); @@ -206,7 +206,7 @@ private NoSqlTestContext GivenCosmosNoSql() return NoSqlTestContext.Given(Configuration, Logger); } - private async Task WhenContainerAlreadyAvailableAsync(NoSqlTestContext context) + private static async Task WhenContainerAlreadyAvailableAsync(NoSqlTestContext context) { return await context.WhenContainerNameAvailableAsync(PartitionKeyPaths.Single()); } @@ -215,10 +215,10 @@ private async Task WhenTempContainerCreatedAsync( string containerName, Action configureOptions = null) { - var container = + var container = configureOptions is null - ? await TemporaryNoSqlContainer.CreateIfNotExistsAsync(NoSql.ResourceId, NoSql.DatabaseName, containerName, PartitionKeyPaths.Single(), Logger) - : await TemporaryNoSqlContainer.CreateIfNotExistsAsync(NoSql.ResourceId, NoSql.DatabaseName, containerName, PartitionKeyPaths.Single(), Logger, configureOptions); + ? await TemporaryNoSqlContainer.CreateIfNotExistsAsync(NoSql.AccountResourceId, NoSql.DatabaseName, containerName, PartitionKeyPaths.Single(), Logger) + : await TemporaryNoSqlContainer.CreateIfNotExistsAsync(NoSql.AccountResourceId, NoSql.DatabaseName, containerName, PartitionKeyPaths.Single(), Logger, configureOptions); Assert.Equal(NoSql.DatabaseName, container.Client.Database.Id); Assert.Equal(containerName, container.Name);