-
-
Notifications
You must be signed in to change notification settings - Fork 309
/
Copy pathMongoDbContainerTest.cs
77 lines (64 loc) · 2.13 KB
/
MongoDbContainerTest.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
namespace Testcontainers.MongoDb;
public abstract class MongoDbContainerTest : IAsyncLifetime
{
private readonly MongoDbContainer _mongoDbContainer;
private MongoDbContainerTest(MongoDbContainer mongoDbContainer)
{
_mongoDbContainer = mongoDbContainer;
}
public Task InitializeAsync()
{
return _mongoDbContainer.StartAsync();
}
public Task DisposeAsync()
{
return _mongoDbContainer.DisposeAsync().AsTask();
}
[Fact]
[Trait(nameof(DockerCli.DockerPlatform), nameof(DockerCli.DockerPlatform.Linux))]
public void ConnectionStateReturnsOpen()
{
// Given
var client = new MongoClient(_mongoDbContainer.GetConnectionString());
// When
using var databases = client.ListDatabases();
// Then
Assert.Contains(databases.ToEnumerable(), database => database.TryGetValue("name", out var name) && "admin".Equals(name.AsString));
}
[Fact]
[Trait(nameof(DockerCli.DockerPlatform), nameof(DockerCli.DockerPlatform.Linux))]
public async Task ExecScriptReturnsSuccessful()
{
// Given
const string scriptContent = "printjson(db.adminCommand({listDatabases:1,nameOnly:true,filter:{\"name\":/^admin/}}));";
// When
var execResult = await _mongoDbContainer.ExecScriptAsync(scriptContent)
.ConfigureAwait(false);
// When
Assert.True(0L.Equals(execResult.ExitCode), execResult.Stderr);
}
[UsedImplicitly]
public sealed class MongoDbDefaultConfiguration : MongoDbContainerTest
{
public MongoDbDefaultConfiguration()
: base(new MongoDbBuilder().Build())
{
}
}
[UsedImplicitly]
public sealed class MongoDbV5Configuration : MongoDbContainerTest
{
public MongoDbV5Configuration()
: base(new MongoDbBuilder().WithImage("mongo:5.0").Build())
{
}
}
[UsedImplicitly]
public sealed class MongoDbV4Configuration : MongoDbContainerTest
{
public MongoDbV4Configuration()
: base(new MongoDbBuilder().WithImage("mongo:4.4").Build())
{
}
}
}