-
Notifications
You must be signed in to change notification settings - Fork 99
/
Copy pathMigrateRepoCommandTests.cs
99 lines (86 loc) · 3.94 KB
/
MigrateRepoCommandTests.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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
using FluentAssertions;
using Microsoft.Extensions.DependencyInjection;
using Moq;
using OctoshiftCLI.AdoToGithub.Commands.MigrateRepo;
using OctoshiftCLI.Contracts;
using OctoshiftCLI.Services;
using Xunit;
namespace OctoshiftCLI.Tests.AdoToGithub.Commands.MigrateRepo
{
public class MigrateRepoCommandTests
{
private readonly Mock<ITargetGithubApiFactory> _mockGithubApiFactory = new();
private readonly Mock<OctoLogger> _mockOctoLogger = TestHelpers.CreateMock<OctoLogger>();
private readonly Mock<EnvironmentVariableProvider> _mockEnvironmentVariableProvider = TestHelpers.CreateMock<EnvironmentVariableProvider>();
private readonly Mock<WarningsCountLogger> _warningsCountLogger = TestHelpers.CreateMock<WarningsCountLogger>();
private readonly ServiceProvider _serviceProvider;
private readonly MigrateRepoCommand _command = new();
public MigrateRepoCommandTests()
{
var serviceCollection = new ServiceCollection();
serviceCollection
.AddSingleton(_mockOctoLogger.Object)
.AddSingleton(_mockGithubApiFactory.Object)
.AddSingleton(_mockEnvironmentVariableProvider.Object)
.AddSingleton(_warningsCountLogger.Object);
_serviceProvider = serviceCollection.BuildServiceProvider();
}
[Fact]
public void Should_Have_Options()
{
_command.Should().NotBeNull();
_command.Name.Should().Be("migrate-repo");
_command.Options.Count.Should().Be(12);
TestHelpers.VerifyCommandOption(_command.Options, "ado-org", true);
TestHelpers.VerifyCommandOption(_command.Options, "ado-team-project", true);
TestHelpers.VerifyCommandOption(_command.Options, "ado-repo", true);
TestHelpers.VerifyCommandOption(_command.Options, "github-org", true);
TestHelpers.VerifyCommandOption(_command.Options, "github-repo", true);
TestHelpers.VerifyCommandOption(_command.Options, "ado-server-url", false, true);
TestHelpers.VerifyCommandOption(_command.Options, "queue-only", false);
TestHelpers.VerifyCommandOption(_command.Options, "target-repo-visibility", false);
TestHelpers.VerifyCommandOption(_command.Options, "ado-pat", false);
TestHelpers.VerifyCommandOption(_command.Options, "github-pat", false);
TestHelpers.VerifyCommandOption(_command.Options, "verbose", false);
TestHelpers.VerifyCommandOption(_command.Options, "target-api-url", false);
}
[Fact]
public void It_Uses_Github_Pat_When_Provided()
{
var adoPat = "abc123";
var githubPat = "def456";
var args = new MigrateRepoCommandArgs
{
AdoOrg = "foo-org",
AdoTeamProject = "blah-tp",
AdoRepo = "some-repo",
GithubOrg = "gh-org",
GithubRepo = "gh-repo",
AdoPat = adoPat,
GithubPat = githubPat,
};
_command.BuildHandler(args, _serviceProvider);
_mockGithubApiFactory.Verify(m => m.Create(null, githubPat));
}
[Fact]
public void It_Uses_Target_Api_Url_When_Provided()
{
var adoPat = "abc123";
var githubPat = "def456";
var targetApiUrl = "https://api.github.com";
var args = new MigrateRepoCommandArgs
{
AdoOrg = "foo-org",
AdoTeamProject = "blah-tp",
AdoRepo = "some-repo",
GithubOrg = "gh-org",
GithubRepo = "gh-repo",
AdoPat = adoPat,
GithubPat = githubPat,
TargetApiUrl = targetApiUrl
};
_command.BuildHandler(args, _serviceProvider);
_mockGithubApiFactory.Verify(m => m.Create(targetApiUrl, githubPat));
}
}
}