diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 8b1378917..1eee02365 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -1 +1 @@ - +- Update validation error messages for `gh bbs2gh migrate-repo` command when generating an archive is not required. diff --git a/src/OctoshiftCLI.Tests/bbs2gh/Commands/MigrateRepo/MigrateRepoCommandArgsTests.cs b/src/OctoshiftCLI.Tests/bbs2gh/Commands/MigrateRepo/MigrateRepoCommandArgsTests.cs index 45ca71e97..b87415ce9 100644 --- a/src/OctoshiftCLI.Tests/bbs2gh/Commands/MigrateRepo/MigrateRepoCommandArgsTests.cs +++ b/src/OctoshiftCLI.Tests/bbs2gh/Commands/MigrateRepo/MigrateRepoCommandArgsTests.cs @@ -225,11 +225,12 @@ public void It_Throws_When_Kerberos_Is_Set_And_Bbs_Username_Is_Provided() } [Fact] - public void Errors_If_BbsServer_Url_Not_Provided_But_Bbs_Password_Is_Provided() + public void Errors_If_Bbs_Password_Is_Provided_With_Archive_Path() { // Act var args = new MigrateRepoCommandArgs { + BbsServerUrl = BBS_SERVER_URL, ArchivePath = ARCHIVE_PATH, GithubOrg = GITHUB_ORG, GithubRepo = GITHUB_REPO, @@ -240,15 +241,36 @@ public void Errors_If_BbsServer_Url_Not_Provided_But_Bbs_Password_Is_Provided() args.Invoking(x => x.Validate(_mockOctoLogger.Object)) .Should() .ThrowExactly() - .WithMessage("*--bbs-username*--bbs-password*--bbs-server-url*"); + .WithMessage("*--bbs-username*--bbs-password*--archive-path*"); + } + + [Fact] + public void Errors_If_Bbs_Password_Is_Provided_With_Archive_Url() + { + // Act + var args = new MigrateRepoCommandArgs + { + BbsServerUrl = BBS_SERVER_URL, + ArchiveUrl = ARCHIVE_URL, + GithubOrg = GITHUB_ORG, + GithubRepo = GITHUB_REPO, + BbsPassword = BBS_USERNAME + }; + + // Assert + args.Invoking(x => x.Validate(_mockOctoLogger.Object)) + .Should() + .ThrowExactly() + .WithMessage("*--bbs-username*--bbs-password*--archive-url*"); } [Fact] - public void Errors_If_BbsServer_Url_Not_Provided_But_No_Ssl_Verify_Is_Provided() + public void Errors_If_No_Ssl_Verify_Is_Provided_With_Archive_Path() { // Act var args = new MigrateRepoCommandArgs { + BbsServerUrl = BBS_SERVER_URL, ArchivePath = ARCHIVE_PATH, GithubOrg = GITHUB_ORG, GithubRepo = GITHUB_REPO, @@ -259,15 +281,36 @@ public void Errors_If_BbsServer_Url_Not_Provided_But_No_Ssl_Verify_Is_Provided() args.Invoking(x => x.Validate(_mockOctoLogger.Object)) .Should() .ThrowExactly() - .WithMessage("*--no-ssl-verify*--bbs-server-url*"); + .WithMessage("*--no-ssl-verify*--archive-path*"); } [Fact] - public void Errors_If_BbsServer_Url_Not_Provided_But_Ssh_User_Is_Provided() + public void Errors_If_No_Ssl_Verify_Is_Provided_With_Archive_Url() { // Act var args = new MigrateRepoCommandArgs { + BbsServerUrl = BBS_SERVER_URL, + ArchiveUrl = ARCHIVE_URL, + GithubOrg = GITHUB_ORG, + GithubRepo = GITHUB_REPO, + NoSslVerify = true + }; + + // Assert + args.Invoking(x => x.Validate(_mockOctoLogger.Object)) + .Should() + .ThrowExactly() + .WithMessage("*--no-ssl-verify*--archive-url*"); + } + + [Fact] + public void Errors_If_Ssh_User_Is_Provided_With_Archive_Path() + { + // Act + var args = new MigrateRepoCommandArgs + { + BbsServerUrl = BBS_SERVER_URL, ArchivePath = ARCHIVE_PATH, GithubOrg = GITHUB_ORG, GithubRepo = GITHUB_REPO, @@ -279,15 +322,37 @@ public void Errors_If_BbsServer_Url_Not_Provided_But_Ssh_User_Is_Provided() args.Invoking(x => x.Validate(_mockOctoLogger.Object)) .Should() .ThrowExactly() - .WithMessage("*SSH*SMB*--bbs-server-url*"); + .WithMessage("*SSH*SMB*--archive-path*"); } [Fact] - public void Errors_If_BbsServer_Url_Not_Provided_But_Smb_User_Is_Provided() + public void Errors_If_Ssh_User_Is_Provided_With_Archive_Url() { // Act var args = new MigrateRepoCommandArgs { + BbsServerUrl = BBS_SERVER_URL, + ArchiveUrl = ARCHIVE_URL, + GithubOrg = GITHUB_ORG, + GithubRepo = GITHUB_REPO, + SshUser = SSH_USER, + SshPrivateKey = PRIVATE_KEY, + }; + + // Assert + args.Invoking(x => x.Validate(_mockOctoLogger.Object)) + .Should() + .ThrowExactly() + .WithMessage("*SSH*SMB*--archive-url*"); + } + + [Fact] + public void Errors_If_Smb_User_Is_Provided_With_Archive_Path() + { + // Act + var args = new MigrateRepoCommandArgs + { + BbsServerUrl = BBS_SERVER_URL, ArchivePath = ARCHIVE_PATH, GithubOrg = GITHUB_ORG, GithubRepo = GITHUB_REPO, @@ -299,7 +364,28 @@ public void Errors_If_BbsServer_Url_Not_Provided_But_Smb_User_Is_Provided() args.Invoking(x => x.Validate(_mockOctoLogger.Object)) .Should() .ThrowExactly() - .WithMessage("*SSH*SMB*--bbs-server-url*"); + .WithMessage("*SSH*SMB*--archive-path*"); + } + + [Fact] + public void Errors_If_Smb_User_Is_Provided_With_Archive_Url() + { + // Act + var args = new MigrateRepoCommandArgs + { + BbsServerUrl = BBS_SERVER_URL, + ArchiveUrl = ARCHIVE_URL, + GithubOrg = GITHUB_ORG, + GithubRepo = GITHUB_REPO, + SmbUser = SMB_USER, + SmbPassword = SMB_PASSWORD, + }; + + // Assert + args.Invoking(x => x.Validate(_mockOctoLogger.Object)) + .Should() + .ThrowExactly() + .WithMessage("*SSH*SMB*--archive-url*"); } [Fact] diff --git a/src/bbs2gh/Commands/MigrateRepo/MigrateRepoCommandArgs.cs b/src/bbs2gh/Commands/MigrateRepo/MigrateRepoCommandArgs.cs index d1b56e7ef..0b82b4907 100644 --- a/src/bbs2gh/Commands/MigrateRepo/MigrateRepoCommandArgs.cs +++ b/src/bbs2gh/Commands/MigrateRepo/MigrateRepoCommandArgs.cs @@ -95,17 +95,17 @@ private void ValidateNoGenerateOptions() { if (BbsUsername.HasValue() || BbsPassword.HasValue()) { - throw new OctoshiftCliException("--bbs-username and --bbs-password can only be provided with --bbs-server-url."); + throw new OctoshiftCliException("--bbs-username and --bbs-password cannot be provided with --archive-path or --archive-url."); } if (NoSslVerify) { - throw new OctoshiftCliException("--no-ssl-verify can only be provided with --bbs-server-url."); + throw new OctoshiftCliException("--no-ssl-verify cannot be provided with --archive-path or --archive-url."); } if (new[] { SshUser, SshPrivateKey, ArchiveDownloadHost, SmbUser, SmbPassword, SmbDomain }.Any(obj => obj.HasValue())) { - throw new OctoshiftCliException("SSH or SMB download options can only be provided with --bbs-server-url."); + throw new OctoshiftCliException("SSH or SMB download options cannot be provided with --archive-path or --archive-url."); } }