From 13e68c2c9b3038d66c88d1138315cea9880ad653 Mon Sep 17 00:00:00 2001 From: David Linares <28559777+dlinares-linux@users.noreply.github.com> Date: Fri, 3 May 2024 19:33:52 +0900 Subject: [PATCH] Add test cases --- .../SecretScanningAlertServiceTests.cs | 153 ++++++++++++++++++ 1 file changed, 153 insertions(+) diff --git a/src/OctoshiftCLI.Tests/Octoshift/Services/SecretScanningAlertServiceTests.cs b/src/OctoshiftCLI.Tests/Octoshift/Services/SecretScanningAlertServiceTests.cs index 1b82a5f32..ca6851569 100644 --- a/src/OctoshiftCLI.Tests/Octoshift/Services/SecretScanningAlertServiceTests.cs +++ b/src/OctoshiftCLI.Tests/Octoshift/Services/SecretScanningAlertServiceTests.cs @@ -162,6 +162,159 @@ public async Task No_Matching_Location() It.IsAny()), Times.Never); } + [Fact] + public async Task One_Secret_Updated_When_Source_Contains_More_Locations() + { + var secretType = "custom"; + var secret = "my-password"; + + // Arrange + var sourceSecret = new GithubSecretScanningAlert() + { + Number = 1, + State = SecretScanningAlert.AlertStateResolved, + SecretType = secretType, + Secret = secret, + Resolution = SecretScanningAlert.ResolutionRevoked, + }; + + var sourceLocations = new[] { + new GithubSecretScanningAlertLocation() { + Path = "my-file.txt", + StartLine = 17, + EndLine = 18, + StartColumn = 22, + EndColumn = 29, + BlobSha = "abc123" + }, + new GithubSecretScanningAlertLocation() { + Path = "another-file.txt", + StartLine = 99, + EndLine = 103, + StartColumn = 22, + EndColumn = 29, + BlobSha = "def456" + } + }; + + _mockSourceGithubApi.Setup(x => x.GetSecretScanningAlertsForRepository(SOURCE_ORG, SOURCE_REPO)) + .ReturnsAsync(new[] { sourceSecret }); + _mockSourceGithubApi.Setup(x => x.GetSecretScanningAlertsLocations(SOURCE_ORG, SOURCE_REPO, 1)) + .ReturnsAsync(sourceLocations); + + var targetSecret = new GithubSecretScanningAlert() + { + Number = 100, + State = SecretScanningAlert.AlertStateOpen, + SecretType = secretType, + Secret = secret + }; + + var targetSecretLocation = new GithubSecretScanningAlertLocation() + { + Path = "my-file.txt", + StartLine = 17, + EndLine = 18, + StartColumn = 22, + EndColumn = 29, + BlobSha = "abc123" + }; + + _mockTargetGithubApi.Setup(x => x.GetSecretScanningAlertsForRepository(TARGET_ORG, TARGET_REPO)) + .ReturnsAsync(new[] { targetSecret }); + + _mockTargetGithubApi.Setup(x => x.GetSecretScanningAlertsLocations(TARGET_ORG, TARGET_REPO, 100)) + .ReturnsAsync(new[] { targetSecretLocation }); + + // Act + await _service.MigrateSecretScanningAlerts(SOURCE_ORG, SOURCE_REPO, TARGET_ORG, TARGET_REPO, false); + + // Assert + _mockTargetGithubApi.Verify(m => m.UpdateSecretScanningAlert( + TARGET_ORG, + TARGET_REPO, + 100, + SecretScanningAlert.AlertStateResolved, + SecretScanningAlert.ResolutionRevoked) + ); + } + + [Fact] + public async Task No_Matching_When_Source_Contains_Less_Locations() + { + var secretType = "custom"; + var secret = "my-password"; + + // Arrange + var sourceSecret = new GithubSecretScanningAlert() + { + Number = 1, + State = SecretScanningAlert.AlertStateResolved, + SecretType = secretType, + Secret = secret, + Resolution = SecretScanningAlert.ResolutionRevoked, + }; + + var sourceLocation = new GithubSecretScanningAlertLocation() + { + Path = "my-file.txt", + StartLine = 17, + EndLine = 18, + StartColumn = 22, + EndColumn = 29, + BlobSha = "abc123" + }; + + _mockSourceGithubApi.Setup(x => x.GetSecretScanningAlertsForRepository(SOURCE_ORG, SOURCE_REPO)) + .ReturnsAsync(new[] { sourceSecret }); + _mockSourceGithubApi.Setup(x => x.GetSecretScanningAlertsLocations(SOURCE_ORG, SOURCE_REPO, 1)) + .ReturnsAsync(new[] { sourceLocation }); + + var targetSecret = new GithubSecretScanningAlert() + { + Number = 100, + State = SecretScanningAlert.AlertStateOpen, + SecretType = secretType, + Secret = secret + }; + + var targetSecretLocations = new[] { + new GithubSecretScanningAlertLocation() { + Path = "my-file.txt", + StartLine = 17, + EndLine = 18, + StartColumn = 22, + EndColumn = 29, + BlobSha = "abc123" + }, + new GithubSecretScanningAlertLocation() { + Path = "another-file.txt", + StartLine = 99, + EndLine = 103, + StartColumn = 22, + EndColumn = 29, + BlobSha = "def456" + } + }; + + _mockTargetGithubApi.Setup(x => x.GetSecretScanningAlertsForRepository(TARGET_ORG, TARGET_REPO)) + .ReturnsAsync(new[] { targetSecret }); + + _mockTargetGithubApi.Setup(x => x.GetSecretScanningAlertsLocations(TARGET_ORG, TARGET_REPO, 100)) + .ReturnsAsync(targetSecretLocations); + + // Act + await _service.MigrateSecretScanningAlerts(SOURCE_ORG, SOURCE_REPO, TARGET_ORG, TARGET_REPO, false); + + // Assert + _mockTargetGithubApi.Verify(m => m.UpdateSecretScanningAlert( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny()), Times.Never); + } + [Fact] public async Task No_Matching_Secret() {