Skip to content

Commit 6d43c5f

Browse files
author
Arin Ghazarian
authored
Add AWS S3 support to BBS generate script (#698)
1 parent ec48413 commit 6d43c5f

File tree

8 files changed

+604
-42
lines changed

8 files changed

+604
-42
lines changed

src/.idea/.idea.OctoshiftCLI/.idea/vcs.xml

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/OctoshiftCLI.Tests/bbs2gh/Commands/GenerateScriptCommandTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public void Should_Have_Options()
3535
{
3636
_command.Should().NotBeNull();
3737
_command.Name.Should().Be("generate-script");
38-
_command.Options.Count.Should().Be(11);
38+
_command.Options.Count.Should().Be(12);
3939

4040
TestHelpers.VerifyCommandOption(_command.Options, "bbs-server-url", true);
4141
TestHelpers.VerifyCommandOption(_command.Options, "github-org", true);
@@ -48,6 +48,7 @@ public void Should_Have_Options()
4848
TestHelpers.VerifyCommandOption(_command.Options, "output", false);
4949
TestHelpers.VerifyCommandOption(_command.Options, "kerberos", false, true);
5050
TestHelpers.VerifyCommandOption(_command.Options, "verbose", false);
51+
TestHelpers.VerifyCommandOption(_command.Options, "aws-bucket-name", false);
5152
}
5253

5354
[Fact]

src/OctoshiftCLI.Tests/bbs2gh/Handlers/GenerateScriptCommandHandlerTests.cs

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ public class GenerateScriptCommandHandlerTests
4444
private const string BBS_BAR_REPO_2_SLUG = "barrepo2";
4545
private const string BBS_BAR_REPO_2_NAME = "BBS-BAR-REPO-2-NAME";
4646
private const string BBS_SHARED_HOME = "BBS-SHARED-HOME";
47+
private const string AWS_BUCKET_NAME = "AWS-BUCKET-NAME";
4748

4849
public GenerateScriptCommandHandlerTests()
4950
{
@@ -54,8 +55,8 @@ public GenerateScriptCommandHandlerTests()
5455
_mockBbsApi.Object,
5556
_mockEnvironmentVariableProvider.Object);
5657

57-
_mockEnvironmentVariableProvider.Setup(m => m.BbsUsername()).Returns(BBS_USERNAME);
58-
_mockEnvironmentVariableProvider.Setup(m => m.BbsPassword()).Returns(BBS_PASSWORD);
58+
_mockEnvironmentVariableProvider.Setup(m => m.BbsUsername(It.IsAny<bool>())).Returns(BBS_USERNAME);
59+
_mockEnvironmentVariableProvider.Setup(m => m.BbsPassword(It.IsAny<bool>())).Returns(BBS_PASSWORD);
5960
_mockBbsApi.Setup(m => m.GetProjects()).ReturnsAsync(new[] { (1, BBS_FOO_PROJECT_KEY, BBS_FOO_PROJECT_NAME) });
6061
_mockBbsApi.Setup(m => m.GetRepos(BBS_FOO_PROJECT_KEY)).ReturnsAsync(new[] { (1, BBS_FOO_REPO_1_SLUG, BBS_FOO_REPO_1_NAME) });
6162
}
@@ -148,8 +149,8 @@ public async Task Two_Projects_Two_Repos_Each_All_Options()
148149
_mockFileSystemProvider.Verify(m => m.WriteAllTextAsync(It.IsAny<string>(), It.Is<string>(script => script.Contains(migrateRepoCommand3))));
149150
_mockFileSystemProvider.Verify(m => m.WriteAllTextAsync(It.IsAny<string>(), It.Is<string>(script => script.Contains(migrateRepoCommand4))));
150151

151-
_mockEnvironmentVariableProvider.Verify(m => m.BbsUsername(), Times.Never);
152-
_mockEnvironmentVariableProvider.Verify(m => m.BbsPassword(), Times.Never);
152+
_mockEnvironmentVariableProvider.Verify(m => m.BbsUsername(It.IsAny<bool>()), Times.Never);
153+
_mockEnvironmentVariableProvider.Verify(m => m.BbsPassword(It.IsAny<bool>()), Times.Never);
153154
}
154155

155156
[Fact]
@@ -260,6 +261,42 @@ function Exec {
260261
_mockFileSystemProvider.Verify(m => m.WriteAllTextAsync(It.IsAny<string>(), It.Is<string>(script => script.Contains(execFunctionBlock))));
261262
}
262263

264+
[Fact]
265+
public async Task One_Repo_With_Aws_Bucket_Name()
266+
{
267+
// Arrange
268+
_mockBbsApi.Setup(m => m.GetProjects()).ReturnsAsync(new[]
269+
{
270+
(Id: 1, Key: BBS_FOO_PROJECT_KEY, Name: BBS_FOO_PROJECT_NAME),
271+
});
272+
_mockBbsApi.Setup(m => m.GetRepos(BBS_FOO_PROJECT_KEY)).ReturnsAsync(new[]
273+
{
274+
(Id: 1, Slug: BBS_FOO_REPO_1_SLUG, Name: BBS_FOO_REPO_1_NAME),
275+
});
276+
277+
const string migrateRepoCommand = $"Exec {{ gh bbs2gh migrate-repo --bbs-server-url \"{BBS_SERVER_URL}\" --bbs-username \"{BBS_USERNAME}\" --bbs-shared-home \"{BBS_SHARED_HOME}\" --bbs-project \"{BBS_FOO_PROJECT_KEY}\" --bbs-repo \"{BBS_FOO_REPO_1_SLUG}\" --ssh-user \"{SSH_USER}\" --ssh-private-key \"{SSH_PRIVATE_KEY}\" --ssh-port {SSH_PORT} --github-org \"{GITHUB_ORG}\" --github-repo \"{BBS_FOO_PROJECT_KEY}-{BBS_FOO_REPO_1_SLUG}\" --verbose --wait --aws-bucket-name \"{AWS_BUCKET_NAME}\" }}";
278+
279+
// Act
280+
var args = new GenerateScriptCommandArgs
281+
{
282+
BbsServerUrl = BBS_SERVER_URL,
283+
GithubOrg = GITHUB_ORG,
284+
BbsUsername = BBS_USERNAME,
285+
BbsPassword = BBS_PASSWORD,
286+
BbsSharedHome = BBS_SHARED_HOME,
287+
SshUser = SSH_USER,
288+
SshPrivateKey = SSH_PRIVATE_KEY,
289+
SshPort = SSH_PORT,
290+
Output = new FileInfo(OUTPUT),
291+
Verbose = true,
292+
AwsBucketName = AWS_BUCKET_NAME
293+
};
294+
await _handler.Handle(args);
295+
296+
// Assert
297+
_mockFileSystemProvider.Verify(m => m.WriteAllTextAsync(It.IsAny<string>(), It.Is<string>(script => script.Contains(migrateRepoCommand))));
298+
}
299+
263300
private string TrimNonExecutableLines(string script, int skipFirst = 9, int skipLast = 0)
264301
{
265302
var lines = script.Split(new[] { Environment.NewLine, "\n" }, StringSplitOptions.RemoveEmptyEntries).AsEnumerable();

0 commit comments

Comments
 (0)