-
-
Notifications
You must be signed in to change notification settings - Fork 659
/
Copy pathDockerFtpContainer.cs
58 lines (44 loc) · 1.85 KB
/
DockerFtpContainer.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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DotNet.Testcontainers.Builders;
using DotNet.Testcontainers.Containers;
using FluentFTP;
namespace FluentFTP.Xunit.Docker {
internal class DockerFtpContainer {
public FtpServer ServerType;
#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable.
public string ServerName;
public string DockerImage;
public string DockerImageOriginal;
public string DockerGithub;
public string FixedUsername;
public string FixedPassword;
#pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable.
public virtual ITestcontainersBuilder<TestcontainersContainer> Configure(ITestcontainersBuilder<TestcontainersContainer> builder) {
return builder;
}
public virtual TestcontainersContainer Build(string useStream, bool useSsl = false) {
var builder = new TestcontainersBuilder<TestcontainersContainer>()
.WithImage(DockerImage)
.WithName(ServerName + "_" + useStream)
.WithPortBinding(21);
builder = this.Configure(builder);
builder = builder.WithWaitStrategy(Wait.ForUnixContainer().UntilPortIsAvailable(21));
if (useSsl) {
builder = builder.WithEnvironment("USE_SSL", "YES");
}
var container = builder.Build();
return container;
}
protected ITestcontainersBuilder<TestcontainersContainer> ExposePortRange(ITestcontainersBuilder<TestcontainersContainer> builder, int startPort, int endPort) {
for (var port = startPort; port <= endPort; port++) {
builder = builder.WithExposedPort(port);
builder = builder.WithPortBinding(port);
}
return builder;
}
}
}