-
Notifications
You must be signed in to change notification settings - Fork 136
Expand file tree
/
Copy pathGenerateScriptCommandTests.cs
More file actions
94 lines (82 loc) · 4.42 KB
/
GenerateScriptCommandTests.cs
File metadata and controls
94 lines (82 loc) · 4.42 KB
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
using FluentAssertions;
using Microsoft.Extensions.DependencyInjection;
using Moq;
using OctoshiftCLI.Contracts;
using OctoshiftCLI.GithubEnterpriseImporter.Commands.GenerateScript;
using OctoshiftCLI.GithubEnterpriseImporter.Factories;
using OctoshiftCLI.Services;
using Xunit;
namespace OctoshiftCLI.Tests.GithubEnterpriseImporter.Commands.GenerateScript
{
public class GenerateScriptCommandTests
{
private readonly Mock<ISourceGithubApiFactory> _mockGithubApiFactory = new();
private readonly Mock<EnvironmentVariableProvider> _mockEnvironmentVariableProvider = TestHelpers.CreateMock<EnvironmentVariableProvider>();
private readonly Mock<OctoLogger> _mockOctoLogger = TestHelpers.CreateMock<OctoLogger>();
private readonly Mock<IVersionProvider> _mockVersionProvider = new();
private readonly Mock<GhesVersionCheckerFactory> _mockGhesVersionCheckerFactory = TestHelpers.CreateMock<GhesVersionCheckerFactory>();
private readonly ServiceProvider _serviceProvider;
private readonly GenerateScriptCommand _command = [];
public GenerateScriptCommandTests()
{
var serviceCollection = new ServiceCollection();
serviceCollection
.AddSingleton(_mockOctoLogger.Object)
.AddSingleton(_mockEnvironmentVariableProvider.Object)
.AddSingleton(_mockGithubApiFactory.Object)
.AddSingleton(_mockVersionProvider.Object)
.AddSingleton(_mockGhesVersionCheckerFactory.Object);
_serviceProvider = serviceCollection.BuildServiceProvider();
}
[Fact]
public void Should_Have_Options()
{
var command = new GenerateScriptCommand();
command.Should().NotBeNull();
command.Name.Should().Be("generate-script");
command.Options.Count.Should().Be(17);
TestHelpers.VerifyCommandOption(command.Options, "github-source-org", true);
TestHelpers.VerifyCommandOption(command.Options, "github-target-org", true);
TestHelpers.VerifyCommandOption(command.Options, "ghes-api-url", false);
TestHelpers.VerifyCommandOption(command.Options, "no-ssl-verify", false);
TestHelpers.VerifyCommandOption(command.Options, "skip-releases", false);
TestHelpers.VerifyCommandOption(command.Options, "lock-source-repo", false);
TestHelpers.VerifyCommandOption(command.Options, "download-migration-logs", false);
TestHelpers.VerifyCommandOption(command.Options, "output", false);
TestHelpers.VerifyCommandOption(command.Options, "sequential", false);
TestHelpers.VerifyCommandOption(command.Options, "github-source-pat", false);
TestHelpers.VerifyCommandOption(command.Options, "verbose", false);
TestHelpers.VerifyCommandOption(command.Options, "aws-bucket-name", false);
TestHelpers.VerifyCommandOption(command.Options, "aws-region", false);
TestHelpers.VerifyCommandOption(command.Options, "keep-archive", false);
TestHelpers.VerifyCommandOption(command.Options, "target-api-url", false);
TestHelpers.VerifyCommandOption(command.Options, "target-uploads-url", false, true);
TestHelpers.VerifyCommandOption(command.Options, "use-github-storage", false);
}
[Fact]
public void Creates_NoSsl_Client_When_NoSsl_Arg_Is_True()
{
var args = new GenerateScriptCommandArgs
{
GithubSourceOrg = "foo",
GhesApiUrl = "https://github.contoso.com",
TargetUploadsUrl = "https://uploads.github.com",
NoSslVerify = true,
};
_ = _command.BuildHandler(args, _serviceProvider);
_mockGithubApiFactory.Verify(m => m.CreateClientNoSsl(args.GhesApiUrl, args.TargetUploadsUrl, It.IsAny<string>()), Times.Once);
}
[Fact]
public void It_Uses_Github_Source_Pat_When_Provided()
{
var args = new GenerateScriptCommandArgs
{
TargetUploadsUrl = "https://uploads.github.com",
GithubSourceOrg = "foo",
GithubSourcePat = "1234",
};
_ = _command.BuildHandler(args, _serviceProvider);
_mockGithubApiFactory.Verify(m => m.Create(It.IsAny<string>(), args.TargetUploadsUrl, args.GithubSourcePat), Times.Once);
}
}
}