Skip to content

Commit 17c8934

Browse files
authored
Merge pull request #1386 from github/copilot/fix-617-4
Refactor AzureApiFactory and related factories into shared Octoshift project
2 parents 4b27406 + 376ed39 commit 17c8934

23 files changed

+81
-276
lines changed

src/bbs2gh/Factories/AwsApiFactory.cs renamed to src/Octoshift/Factories/AwsApiFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using OctoshiftCLI.Services;
22

3-
namespace OctoshiftCLI.BbsToGithub.Factories;
3+
namespace OctoshiftCLI.Factories;
44

55
public class AwsApiFactory
66
{

src/bbs2gh/Factories/AzureApiFactory.cs renamed to src/Octoshift/Factories/AzureApiFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using System.Net.Http;
22
using OctoshiftCLI.Services;
33

4-
namespace OctoshiftCLI.BbsToGithub.Factories;
4+
namespace OctoshiftCLI.Factories;
55

66
public sealed class AzureApiFactory : IAzureApiFactory
77
{

src/bbs2gh/Factories/BlobServiceClientFactory.cs renamed to src/Octoshift/Factories/BlobServiceClientFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using Azure.Storage.Blobs;
22

3-
namespace OctoshiftCLI.BbsToGithub.Factories;
3+
namespace OctoshiftCLI.Factories;
44

55
public class BlobServiceClientFactory : IBlobServiceClientFactory
66
{

src/gei/Factories/GithubApiFactory.cs renamed to src/Octoshift/Factories/GithubApiFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using OctoshiftCLI.Contracts;
33
using OctoshiftCLI.Services;
44

5-
namespace OctoshiftCLI.GithubEnterpriseImporter.Factories;
5+
namespace OctoshiftCLI.Factories;
66

77
public sealed class GithubApiFactory : ISourceGithubApiFactory, ITargetGithubApiFactory
88
{

src/bbs2gh/Factories/IAzureApiFactory.cs renamed to src/Octoshift/Factories/IAzureApiFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using OctoshiftCLI.Services;
22

3-
namespace OctoshiftCLI.BbsToGithub.Factories;
3+
namespace OctoshiftCLI.Factories;
44

55
public interface IAzureApiFactory
66
{

src/bbs2gh/Factories/IBlobServiceClientFactory.cs renamed to src/Octoshift/Factories/IBlobServiceClientFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using Azure.Storage.Blobs;
22

3-
namespace OctoshiftCLI.BbsToGithub.Factories;
3+
namespace OctoshiftCLI.Factories;
44

55
public interface IBlobServiceClientFactory
66
{

src/OctoshiftCLI.Tests/bbs2gh/Factories/AwsApiFactoryTests.cs renamed to src/OctoshiftCLI.Tests/Octoshift/Factories/AwsApiFactoryTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
using FluentAssertions;
22
using Moq;
3-
using OctoshiftCLI.BbsToGithub.Factories;
3+
using OctoshiftCLI.Factories;
44
using OctoshiftCLI.Services;
55
using Xunit;
66

7-
namespace OctoshiftCLI.Tests.bbs2gh.Factories;
7+
namespace OctoshiftCLI.Tests.Octoshift.Factories;
88

99
public class AwsApiFactoryTests
1010
{

src/OctoshiftCLI.Tests/gei/Factories/AzureApiFactoryTests.cs renamed to src/OctoshiftCLI.Tests/Octoshift/Factories/AzureApiFactoryTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
using Azure.Storage.Blobs;
33
using FluentAssertions;
44
using Moq;
5-
using OctoshiftCLI.GithubEnterpriseImporter.Factories;
5+
using OctoshiftCLI.Factories;
66
using OctoshiftCLI.Services;
77
using Xunit;
88

9-
namespace OctoshiftCLI.Tests.GithubEnterpriseImporter.Factories;
9+
namespace OctoshiftCLI.Tests.Octoshift.Factories;
1010

1111
public class AzureApiFactoryTests
1212
{

src/OctoshiftCLI.Tests/gei/Factories/GithubApiFactoryTests.cs renamed to src/OctoshiftCLI.Tests/Octoshift/Factories/GithubApiFactoryTests.cs

Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
using Moq;
77
using Moq.Protected;
88
using OctoshiftCLI.Contracts;
9-
using OctoshiftCLI.GithubEnterpriseImporter.Factories;
9+
using OctoshiftCLI.Factories;
1010
using OctoshiftCLI.Services;
1111
using Xunit;
1212

13-
namespace OctoshiftCLI.Tests.GithubEnterpriseImporter.Factories;
13+
namespace OctoshiftCLI.Tests.Octoshift.Factories;
1414

1515
public class GithubApiFactoryTests
1616
{
@@ -271,4 +271,58 @@ public async Task GithubApiFactory_Should_Use_The_Default_Github_Api_Url_If_Pass
271271
ItExpr.Is<HttpRequestMessage>(msg => msg.RequestUri.AbsoluteUri.StartsWith("https://api.github.com")),
272272
ItExpr.IsAny<CancellationToken>());
273273
}
274+
275+
[Fact]
276+
public void Create_Should_Create_Github_Api_With_Github_Pat_From_Environment_If_Not_Provided()
277+
{
278+
// Arrange
279+
var environmentVariableProviderMock = TestHelpers.CreateMock<EnvironmentVariableProvider>();
280+
environmentVariableProviderMock.Setup(m => m.TargetGithubPersonalAccessToken(It.IsAny<bool>())).Returns(TARGET_GH_PAT);
281+
282+
using var httpClient = new HttpClient();
283+
284+
var mockHttpClientFactory = new Mock<IHttpClientFactory>();
285+
mockHttpClientFactory
286+
.Setup(x => x.CreateClient("Default"))
287+
.Returns(httpClient);
288+
289+
// Act
290+
var factory = new GithubApiFactory(null, mockHttpClientFactory.Object, environmentVariableProviderMock.Object, null, null, null);
291+
var targetFactory = (ITargetGithubApiFactory)factory;
292+
var result = targetFactory.Create();
293+
294+
// Assert
295+
result.Should().NotBeNull();
296+
httpClient.DefaultRequestHeaders.Authorization.Parameter.Should().Be(TARGET_GH_PAT);
297+
httpClient.DefaultRequestHeaders.Authorization.Scheme.Should().Be("Bearer");
298+
299+
environmentVariableProviderMock.Verify(m => m.TargetGithubPersonalAccessToken(It.IsAny<bool>()));
300+
}
301+
302+
[Fact]
303+
public void Create_Should_Create_Github_Api_With_Provided_Github_Pat()
304+
{
305+
// Arrange
306+
var environmentVariableProviderMock = TestHelpers.CreateMock<EnvironmentVariableProvider>();
307+
environmentVariableProviderMock.Setup(m => m.TargetGithubPersonalAccessToken(It.IsAny<bool>())).Returns(TARGET_GH_PAT);
308+
309+
using var httpClient = new HttpClient();
310+
311+
var mockHttpClientFactory = new Mock<IHttpClientFactory>();
312+
mockHttpClientFactory
313+
.Setup(x => x.CreateClient("Default"))
314+
.Returns(httpClient);
315+
316+
// Act
317+
var factory = new GithubApiFactory(null, mockHttpClientFactory.Object, environmentVariableProviderMock.Object, null, null, null);
318+
var targetFactory = (ITargetGithubApiFactory)factory;
319+
var result = targetFactory.Create(targetPersonalAccessToken: TARGET_GH_PAT);
320+
321+
// Assert
322+
result.Should().NotBeNull();
323+
httpClient.DefaultRequestHeaders.Authorization.Parameter.Should().Be(TARGET_GH_PAT);
324+
httpClient.DefaultRequestHeaders.Authorization.Scheme.Should().Be("Bearer");
325+
326+
environmentVariableProviderMock.Verify(m => m.TargetGithubPersonalAccessToken(It.IsAny<bool>()), Times.Never);
327+
}
274328
}

src/OctoshiftCLI.Tests/ado2gh/Factories/GithubApiFactoryTests.cs

Lines changed: 0 additions & 55 deletions
This file was deleted.

0 commit comments

Comments
 (0)