| File: MongoDBPublicApiTests.cs | Web Access |
| Project: src\tests\Aspire.Hosting.MongoDB.Tests\Aspire.Hosting.MongoDB.Tests.csproj (Aspire.Hosting.MongoDB.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Aspire.Hosting.ApplicationModel; using Aspire.Hosting.Utils; #pragma warning disable ASPIREMONGODB001 namespace Aspire.Hosting.MongoDB.Tests; public class MongoDBPublicApiTests(ITestOutputHelper testOutputHelper) { [Fact] public void AddMongoDBShouldThrowWhenBuilderIsNull() { IDistributedApplicationBuilder builder = null!; const string name = "MongoDB"; int? port = null; var action = () => builder.AddMongoDB(name, port); var exception = Assert.Throws<ArgumentNullException>(action); Assert.Equal(nameof(builder), exception.ParamName); } [Theory] [InlineData(true)] [InlineData(false)] public void AddMongoDBShouldThrowWhenNameIsNullOrEmpty(bool isNull) { var builder = TestDistributedApplicationBuilder.Create(testOutputHelper); var name = isNull ? null! : string.Empty; int? port = null; var action = () => builder.AddMongoDB(name, port); var exception = isNull ? Assert.Throws<ArgumentNullException>(action) : Assert.Throws<ArgumentException>(action); Assert.Equal(nameof(name), exception.ParamName); } [Fact] public void AddMongoDBWithParametersShouldThrowWhenBuilderIsNull() { IDistributedApplicationBuilder builder = null!; const string name = "MongoDB"; IResourceBuilder<ParameterResource>? userName = null; IResourceBuilder<ParameterResource>? password = null; var action = () => builder.AddMongoDB(name, userName: userName, password: password); var exception = Assert.Throws<ArgumentNullException>(action); Assert.Equal(nameof(builder), exception.ParamName); } [Theory] [InlineData(true)] [InlineData(false)] public void AddMongoDBWithParametersShouldThrowWhenNameIsNullOrEmpty(bool isNull) { var builder = TestDistributedApplicationBuilder.Create(testOutputHelper); var name = isNull ? null! : string.Empty; IResourceBuilder<ParameterResource>? userName = null; IResourceBuilder<ParameterResource>? password = null; var action = () => builder.AddMongoDB(name, userName: userName, password: password); var exception = isNull ? Assert.Throws<ArgumentNullException>(action) : Assert.Throws<ArgumentException>(action); Assert.Equal(nameof(name), exception.ParamName); } [Fact] public void AddDatabaseShouldThrowWhenBuilderIsNull() { IResourceBuilder<MongoDBServerResource> builder = null!; const string name = "db"; var action = () => builder.AddDatabase(name); var exception = Assert.Throws<ArgumentNullException>(action); Assert.Equal(nameof(builder), exception.ParamName); } [Theory] [InlineData(true)] [InlineData(false)] public void AddDatabaseShouldThrowWhenNameIsNullOrEmpty(bool isNull) { var builder = TestDistributedApplicationBuilder.Create(testOutputHelper) .AddMongoDB("MongoDB"); var name = isNull ? null! : string.Empty; var action = () => builder.AddDatabase(name); var exception = isNull ? Assert.Throws<ArgumentNullException>(action) : Assert.Throws<ArgumentException>(action); Assert.Equal(nameof(name), exception.ParamName); } [Fact] public void WithMongoExpressShouldThrowWhenBuilderIsNull() { IResourceBuilder<MongoDBServerResource> builder = null!; var action = () => builder.WithMongoExpress(); var exception = Assert.Throws<ArgumentNullException>(action); Assert.Equal(nameof(builder), exception.ParamName); } [Theory] [InlineData(true)] [InlineData(false)] public void WithHostPortShouldThrowWhenBuilderIsNull(bool isNull) { IResourceBuilder<MongoExpressContainerResource> builder = null!; int? port = isNull ? null : 27017; var action = () => builder.WithHostPort(port); var exception = Assert.Throws<ArgumentNullException>(action); Assert.Equal(nameof(builder), exception.ParamName); } [Fact] public void WithDataVolumeShouldThrowWhenBuilderIsNull() { IResourceBuilder<MongoDBServerResource> builder = null!; var action = () => builder.WithDataVolume(); var exception = Assert.Throws<ArgumentNullException>(action); Assert.Equal(nameof(builder), exception.ParamName); } [Fact] public void WithDataBindMountShouldThrowWhenBuilderIsNull() { IResourceBuilder<MongoDBServerResource> builder = null!; const string source = "/MongoDB/storage"; var action = () => builder.WithDataBindMount(source); var exception = Assert.Throws<ArgumentNullException>(action); Assert.Equal(nameof(builder), exception.ParamName); } [Theory] [InlineData(true)] [InlineData(false)] public void WithDataBindMountShouldThrowWhenSourceIsNullOrEmpty(bool isNull) { var builder = TestDistributedApplicationBuilder.Create(testOutputHelper) .AddMongoDB("MongoDB"); var source = isNull ? null! : string.Empty; var action = () => builder.WithDataBindMount(source); var exception = isNull ? Assert.Throws<ArgumentNullException>(action) : Assert.Throws<ArgumentException>(action); Assert.Equal(nameof(source), exception.ParamName); } [Fact] public void WithInitBindMountShouldThrowWhenBuilderIsNull() { IResourceBuilder<MongoDBServerResource> builder = null!; #pragma warning disable CS0618 // Type or member is obsolete var action = () => builder.WithInitBindMount("init.js"); #pragma warning restore CS0618 // Type or member is obsolete var exception = Assert.Throws<ArgumentNullException>(action); Assert.Equal(nameof(builder), exception.ParamName); } [Theory] [InlineData(true)] [InlineData(false)] public void WithInitBindMountShouldThrowWhenSourceIsNullOrEmpty(bool isNull) { var builder = TestDistributedApplicationBuilder.Create(testOutputHelper) .AddMongoDB("MongoDB"); var source = isNull ? null! : string.Empty; #pragma warning disable CS0618 // Type or member is obsolete var action = () => builder.WithInitBindMount(source); #pragma warning restore CS0618 // Type or member is obsolete var exception = isNull ? Assert.Throws<ArgumentNullException>(action) : Assert.Throws<ArgumentException>(action); Assert.Equal(nameof(source), exception.ParamName); } [Fact] public void WithInitFilesShouldThrowWhenBuilderIsNull() { IResourceBuilder<MongoDBServerResource> builder = null!; var action = () => builder.WithInitFiles("init.js"); var exception = Assert.Throws<ArgumentNullException>(action); Assert.Equal(nameof(builder), exception.ParamName); } [Theory] [InlineData(true)] [InlineData(false)] public void WithInitFilesShouldThrowWhenSourceIsNullOrEmpty(bool isNull) { var builder = TestDistributedApplicationBuilder.Create(testOutputHelper) .AddMongoDB("MongoDB"); var source = isNull ? null! : string.Empty; var action = () => builder.WithInitFiles(source); var exception = isNull ? Assert.Throws<ArgumentNullException>(action) : Assert.Throws<ArgumentException>(action); Assert.Equal(nameof(source), exception.ParamName); } [Theory] [InlineData(true)] [InlineData(false)] public void CtorMongoDBDatabaseResourceShouldThrowWhenNameIsNullOrEmpty(bool isNull) { var name = isNull ? null! : string.Empty; const string databaseName = "db"; var parent = new MongoDBServerResource("mongodb"); var action = () => new MongoDBDatabaseResource(name, databaseName, parent); var exception = isNull ? Assert.Throws<ArgumentNullException>(action) : Assert.Throws<ArgumentException>(action); Assert.Equal(nameof(name), exception.ParamName); } [Theory] [InlineData(true)] [InlineData(false)] public void CtorMongoDBDatabaseResourceShouldThrowWhenDatabaseNameIsNullOrEmpty(bool isNull) { const string name = "mongodb"; var databaseName = isNull ? null! : string.Empty; var parent = new MongoDBServerResource(name); var action = () => new MongoDBDatabaseResource(name, databaseName, parent); var exception = isNull ? Assert.Throws<ArgumentNullException>(action) : Assert.Throws<ArgumentException>(action); Assert.Equal(nameof(databaseName), exception.ParamName); } [Fact] public void CtorMongoDBDatabaseResourceShouldThrowWhenParentIsNull() { const string name = "mongodb"; const string databaseName = "db"; MongoDBServerResource parent = null!; var action = () => new MongoDBDatabaseResource(name, databaseName, parent); var exception = Assert.Throws<ArgumentNullException>(action); Assert.Equal(nameof(parent), exception.ParamName); } [Theory] [InlineData(true)] [InlineData(false)] public void CtorMongoDBServerResourceShouldThrowWhenNameIsNullOrEmpty(bool isNull) { var name = isNull ? null! : string.Empty; var action = () => new MongoDBServerResource(name); var exception = isNull ? Assert.Throws<ArgumentNullException>(action) : Assert.Throws<ArgumentException>(action); Assert.Equal(nameof(name), exception.ParamName); } [Theory] [InlineData(true)] [InlineData(false)] public void CtorMongoExpressContainerResourceShouldThrowWhenNameIsNullOrEmpty(bool isNull) { var name = isNull ? null! : string.Empty; var action = () => new MongoExpressContainerResource(name); var exception = isNull ? Assert.Throws<ArgumentNullException>(action) : Assert.Throws<ArgumentException>(action); Assert.Equal(nameof(name), exception.ParamName); } [Fact] public void WithReplicaSetShouldThrowWhenBuilderIsNull() { IResourceBuilder<MongoDBServerResource> builder = null!; const string name = "rs0"; var action = () => builder.WithReplicaSet(name); var exception = Assert.Throws<ArgumentNullException>(action); Assert.Equal(nameof(builder), exception.ParamName); } [Theory] [InlineData(true)] [InlineData(false)] public void WithReplicaSetShouldThrowWhenNameIsNullOrEmpty(bool isNull) { using var builder = TestDistributedApplicationBuilder.Create(testOutputHelper); var mongo = builder.AddMongoDB("mongo1"); var name = isNull ? null! : string.Empty; var action = () => mongo.WithReplicaSet(name); var exception = isNull ? Assert.Throws<ArgumentNullException>(action) : Assert.Throws<ArgumentException>(action); Assert.Equal(nameof(name), exception.ParamName); } [Fact] public void WithBindAllIpShouldThrowWhenBuilderIsNull() { IResourceBuilder<MongoDBServerResource> builder = null!; var action = () => builder.WithBindIpAll(); var exception = Assert.Throws<ArgumentNullException>(action); Assert.Equal(nameof(builder), exception.ParamName); } [Fact] public void WithTlsModeShouldThrowWhenBuilderIsNull() { IResourceBuilder<MongoDBServerResource> builder = null!; var action = () => builder.WithTlsMode(); var exception = Assert.Throws<ArgumentNullException>(action); Assert.Equal(nameof(builder), exception.ParamName); } [Fact] public void WithTlsModeShouldThrowWhenModeIsNotDefined() { using var builder = TestDistributedApplicationBuilder.Create(testOutputHelper); var mongo = builder.AddMongoDB("mongo1"); var action = () => mongo.WithTlsMode((MongoDBTlsMode)999); var exception = Assert.Throws<ArgumentOutOfRangeException>(action); Assert.Equal("mode", exception.ParamName); } [Fact] public void WithTlsAllowInvalidCertificatesShouldThrowWhenBuilderIsNull() { IResourceBuilder<MongoDBServerResource> builder = null!; var action = () => builder.WithTlsAllowInvalidCertificates(); var exception = Assert.Throws<ArgumentNullException>(action); Assert.Equal(nameof(builder), exception.ParamName); } [Fact] public void WithKeyFileShouldThrowWhenBuilderIsNull() { IResourceBuilder<MongoDBServerResource> builder = null!; var keyValue = ReferenceExpression.Create($"test-key"); const string keyFilePath = "/etc/rs.key"; var action = () => builder.WithKeyFile(keyValue, keyFilePath); var exception = Assert.Throws<ArgumentNullException>(action); Assert.Equal(nameof(builder), exception.ParamName); } [Theory] [InlineData(true)] [InlineData(false)] public void WithKeyFileShouldThrowWhenKeyFilePathIsNullOrEmpty(bool isNull) { var builder = TestDistributedApplicationBuilder.Create(testOutputHelper) .AddMongoDB("MongoDB"); var keyValue = ReferenceExpression.Create($"test-key"); var keyFilePath = isNull ? null! : string.Empty; var action = () => builder.WithKeyFile(keyValue, keyFilePath); var exception = isNull ? Assert.Throws<ArgumentNullException>(action) : Assert.Throws<ArgumentException>(action); Assert.Equal(nameof(keyFilePath), exception.ParamName); } [Theory] [InlineData("rs.key")] [InlineData("/etc/")] [InlineData("/")] [InlineData("/etc/ ")] [InlineData("/etc/.")] [InlineData("/etc/..")] [InlineData(@"C:\etc\rs.key")] [InlineData(@"/etc\rs.key")] public void WithKeyFileShouldThrowWhenKeyFilePathIsNotAnAbsoluteContainerFilePath(string keyFilePath) { var builder = TestDistributedApplicationBuilder.Create(testOutputHelper) .AddMongoDB("MongoDB"); var keyValue = ReferenceExpression.Create($"test-key"); var action = () => builder.WithKeyFile(keyValue, keyFilePath); var exception = Assert.Throws<ArgumentException>(action); Assert.Equal(nameof(keyFilePath), exception.ParamName); } [Fact] public void WithKeyFileShouldThrowWhenKeyValueIsNull() { var builder = TestDistributedApplicationBuilder.Create(testOutputHelper) .AddMongoDB("MongoDB"); IExpressionValue keyValue = null!; const string keyFilePath = "/etc/rs.key"; var action = () => builder.WithKeyFile(keyValue, keyFilePath); var exception = Assert.Throws<ArgumentNullException>(action); Assert.Equal(nameof(keyValue), exception.ParamName); } }