Skip to content

Commit a34845f

Browse files
test case update
1 parent 37a6d50 commit a34845f

File tree

1 file changed

+387
-0
lines changed

1 file changed

+387
-0
lines changed

src/AritfactoryUploader.UTest/PackageUploadHelperTest.cs

Lines changed: 387 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -729,6 +729,393 @@ public void WriteCreatorKpiDataToConsole_WithZeroValues_LogsDataSuccessfully()
729729
Assert.DoesNotThrow(() => PackageUploadHelper.WriteCreatorKpiDataToConsole(uploaderKpiData));
730730
}
731731

732+
#region SourceRepoFoundToUploadArtifactory Tests - Using IncrementCountersBasedOnPackageType
733+
734+
[Test]
735+
public void IncrementCountersBasedOnPackageType_WhenClearedThirdPartySuccess_IncrementsPackagesUploadedToJfrog()
736+
{
737+
// Arrange
738+
var uploaderKpiData = new UploaderKpiData();
739+
var packageType = PackageType.ClearedThirdParty;
740+
bool isSuccess = true;
741+
742+
// Use reflection to call private method
743+
var methodInfo = typeof(PackageUploadHelper).GetMethod("IncrementCountersBasedOnPackageType",
744+
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
745+
746+
// Act
747+
methodInfo.Invoke(null, new object[] { uploaderKpiData, packageType, isSuccess });
748+
749+
// Assert
750+
Assert.AreEqual(1, uploaderKpiData.PackagesUploadedToJfrog);
751+
Assert.AreEqual(0, uploaderKpiData.PackagesNotUploadedToJfrog);
752+
Assert.AreEqual(0, uploaderKpiData.PackagesNotUploadedDueToError);
753+
}
754+
755+
[Test]
756+
public async Task SourceRepoFoundToUploadArtifactory_WhenPackageNotFound_SetsWarningCodeAndIncrementsFailureCounters()
757+
{
758+
// Arrange
759+
var packageType = PackageType.ClearedThirdParty;
760+
var uploaderKpiData = new UploaderKpiData();
761+
var item = new ComponentsToArtifactory
762+
{
763+
Name = "missing-package",
764+
Version = "2.0.0",
765+
ComponentType = "NUGET",
766+
PackageType = PackageType.ClearedThirdParty,
767+
DryRun = false,
768+
SrcRepoName = "src-repo",
769+
DestRepoName = "dest-repo",
770+
JfrogApi = "https://test-api.com",
771+
Token = "test-token"
772+
};
773+
int timeout = 5000;
774+
var displayPackagesInfo = new DisplayPackagesInfo
775+
{
776+
JfrogFoundPackagesNuget = new List<ComponentsToArtifactory>(),
777+
JfrogNotFoundPackagesNuget = new List<ComponentsToArtifactory>()
778+
};
779+
780+
// Mock services
781+
var mockJFrogService = new Mock<IJFrogService>();
782+
var mockJFrogApiComm = new Mock<IJFrogApiCommunication>();
783+
PackageUploadHelper.JFrogService = mockJFrogService.Object;
784+
ArtifactoryUploader.ArtifactoryUploader.JFrogService = mockJFrogService.Object;
785+
ArtifactoryUploader.ArtifactoryUploader.JFrogApiCommInstance = mockJFrogApiComm.Object;
786+
787+
// Use reflection to get private method
788+
var methodInfo = typeof(PackageUploadHelper).GetMethod("SourceRepoFoundToUploadArtifactory",
789+
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
790+
791+
// Act
792+
var task = (Task)methodInfo.Invoke(null, new object[] { packageType, uploaderKpiData, item, timeout, displayPackagesInfo });
793+
await task;
794+
795+
// Assert
796+
Assert.AreEqual(0, uploaderKpiData.PackagesUploadedToJfrog);
797+
Assert.AreEqual(1, uploaderKpiData.PackagesNotUploadedToJfrog);
798+
Assert.AreEqual(1, uploaderKpiData.PackagesNotUploadedDueToError);
799+
Assert.IsNull(item.DestRepoName);
800+
}
801+
802+
[Test]
803+
public async Task SourceRepoFoundToUploadArtifactory_WhenErrorInUpload_IncrementsFailureCountersAndLogsError()
804+
{
805+
// Arrange
806+
var packageType = PackageType.Internal;
807+
var uploaderKpiData = new UploaderKpiData();
808+
var item = new ComponentsToArtifactory
809+
{
810+
Name = "error-package",
811+
Version = "3.0.0",
812+
ComponentType = "MAVEN",
813+
PackageType = PackageType.Internal,
814+
DryRun = false,
815+
SrcRepoName = "src-repo",
816+
DestRepoName = "dest-repo",
817+
JfrogApi = "https://test-api.com",
818+
Token = "test-token"
819+
};
820+
int timeout = 5000;
821+
var displayPackagesInfo = new DisplayPackagesInfo
822+
{
823+
JfrogFoundPackagesMaven = new List<ComponentsToArtifactory>(),
824+
JfrogNotFoundPackagesMaven = new List<ComponentsToArtifactory>()
825+
};
826+
827+
// Mock services
828+
var mockJFrogService = new Mock<IJFrogService>();
829+
var mockJFrogApiComm = new Mock<IJFrogApiCommunication>();
830+
PackageUploadHelper.JFrogService = mockJFrogService.Object;
831+
ArtifactoryUploader.ArtifactoryUploader.JFrogService = mockJFrogService.Object;
832+
ArtifactoryUploader.ArtifactoryUploader.JFrogApiCommInstance = mockJFrogApiComm.Object;
833+
834+
// Use reflection to get private method
835+
var methodInfo = typeof(PackageUploadHelper).GetMethod("SourceRepoFoundToUploadArtifactory",
836+
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
837+
838+
// Act
839+
var task = (Task)methodInfo.Invoke(null, new object[] { packageType, uploaderKpiData, item, timeout, displayPackagesInfo });
840+
await task;
841+
842+
// Assert
843+
Assert.AreEqual(0, uploaderKpiData.InternalPackagesUploaded);
844+
Assert.AreEqual(1, uploaderKpiData.InternalPackagesNotUploadedToJfrog);
845+
Assert.AreEqual(1, uploaderKpiData.PackagesNotUploadedDueToError);
846+
Assert.IsNull(item.DestRepoName);
847+
}
848+
849+
[Test]
850+
public async Task SourceRepoFoundToUploadArtifactory_WhenDevelopmentPackageSuccessful_IncrementsDevCounters()
851+
{
852+
// Arrange
853+
var packageType = PackageType.Development;
854+
var uploaderKpiData = new UploaderKpiData();
855+
var item = new ComponentsToArtifactory
856+
{
857+
Name = "dev-package",
858+
Version = "1.0.0-dev",
859+
ComponentType = "POETRY",
860+
PackageType = PackageType.Development,
861+
DryRun = false,
862+
SrcRepoName = "src-repo",
863+
DestRepoName = "dev-repo",
864+
JfrogApi = "https://test-api.com",
865+
Token = "test-token"
866+
};
867+
int timeout = 5000;
868+
var displayPackagesInfo = new DisplayPackagesInfo
869+
{
870+
JfrogFoundPackagesPython = new List<ComponentsToArtifactory>(),
871+
JfrogNotFoundPackagesPython = new List<ComponentsToArtifactory>()
872+
};
873+
874+
// Mock services
875+
var mockJFrogService = new Mock<IJFrogService>();
876+
var mockJFrogApiComm = new Mock<IJFrogApiCommunication>();
877+
PackageUploadHelper.JFrogService = mockJFrogService.Object;
878+
ArtifactoryUploader.ArtifactoryUploader.JFrogService = mockJFrogService.Object;
879+
ArtifactoryUploader.ArtifactoryUploader.JFrogApiCommInstance = mockJFrogApiComm.Object;
880+
881+
// Use reflection to get private method
882+
var methodInfo = typeof(PackageUploadHelper).GetMethod("SourceRepoFoundToUploadArtifactory",
883+
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
884+
885+
// Act
886+
var task = (Task)methodInfo.Invoke(null, new object[] { packageType, uploaderKpiData, item, timeout, displayPackagesInfo });
887+
await task;
888+
889+
// Assert
890+
Assert.AreEqual(1, uploaderKpiData.DevPackagesUploaded);
891+
Assert.AreEqual(0, uploaderKpiData.DevPackagesNotUploadedToJfrog);
892+
}
893+
894+
[Test]
895+
public async Task SourceRepoFoundToUploadArtifactory_WhenDevelopmentPackageFails_IncrementsDevFailureCounters()
896+
{
897+
// Arrange
898+
var packageType = PackageType.Development;
899+
var uploaderKpiData = new UploaderKpiData();
900+
var item = new ComponentsToArtifactory
901+
{
902+
Name = "dev-package-fail",
903+
Version = "2.0.0-dev",
904+
ComponentType = "CONAN",
905+
PackageType = PackageType.Development,
906+
DryRun = false,
907+
SrcRepoName = "src-repo",
908+
DestRepoName = "dev-repo",
909+
JfrogApi = "https://test-api.com",
910+
Token = "test-token"
911+
};
912+
int timeout = 5000;
913+
var displayPackagesInfo = new DisplayPackagesInfo
914+
{
915+
JfrogFoundPackagesConan = new List<ComponentsToArtifactory>(),
916+
JfrogNotFoundPackagesConan = new List<ComponentsToArtifactory>()
917+
};
918+
919+
// Mock services
920+
var mockJFrogService = new Mock<IJFrogService>();
921+
var mockJFrogApiComm = new Mock<IJFrogApiCommunication>();
922+
PackageUploadHelper.JFrogService = mockJFrogService.Object;
923+
ArtifactoryUploader.ArtifactoryUploader.JFrogService = mockJFrogService.Object;
924+
ArtifactoryUploader.ArtifactoryUploader.JFrogApiCommInstance = mockJFrogApiComm.Object;
925+
926+
// Use reflection to get private method
927+
var methodInfo = typeof(PackageUploadHelper).GetMethod("SourceRepoFoundToUploadArtifactory",
928+
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
929+
930+
// Act
931+
var task = (Task)methodInfo.Invoke(null, new object[] { packageType, uploaderKpiData, item, timeout, displayPackagesInfo });
932+
await task;
933+
934+
// Assert
935+
Assert.AreEqual(0, uploaderKpiData.DevPackagesUploaded);
936+
Assert.AreEqual(1, uploaderKpiData.DevPackagesNotUploadedToJfrog);
937+
Assert.AreEqual(1, uploaderKpiData.PackagesNotUploadedDueToError);
938+
}
939+
940+
[Test]
941+
public async Task SourceRepoFoundToUploadArtifactory_WhenDryRunMode_DoesNotIncrementSuccessCounters()
942+
{
943+
// Arrange
944+
var packageType = PackageType.ClearedThirdParty;
945+
var uploaderKpiData = new UploaderKpiData();
946+
var item = new ComponentsToArtifactory
947+
{
948+
Name = "dryrun-package",
949+
Version = "1.0.0",
950+
ComponentType = "DEBIAN",
951+
PackageType = PackageType.ClearedThirdParty,
952+
DryRun = true,
953+
SrcRepoName = "src-repo",
954+
DestRepoName = "dest-repo",
955+
JfrogApi = "https://test-api.com",
956+
Token = "test-token"
957+
};
958+
int timeout = 5000;
959+
var displayPackagesInfo = new DisplayPackagesInfo
960+
{
961+
JfrogFoundPackagesDebian = new List<ComponentsToArtifactory>(),
962+
JfrogNotFoundPackagesDebian = new List<ComponentsToArtifactory>()
963+
};
964+
965+
// Mock services
966+
var mockJFrogService = new Mock<IJFrogService>();
967+
var mockJFrogApiComm = new Mock<IJFrogApiCommunication>();
968+
PackageUploadHelper.JFrogService = mockJFrogService.Object;
969+
ArtifactoryUploader.ArtifactoryUploader.JFrogService = mockJFrogService.Object;
970+
ArtifactoryUploader.ArtifactoryUploader.JFrogApiCommInstance = mockJFrogApiComm.Object;
971+
972+
// Use reflection to get private method
973+
var methodInfo = typeof(PackageUploadHelper).GetMethod("SourceRepoFoundToUploadArtifactory",
974+
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
975+
976+
// Act
977+
var task = (Task)methodInfo.Invoke(null, new object[] { packageType, uploaderKpiData, item, timeout, displayPackagesInfo });
978+
await task;
979+
980+
// Assert - No counters should be incremented in dry run mode with success
981+
Assert.AreEqual(0, uploaderKpiData.PackagesUploadedToJfrog);
982+
Assert.AreEqual(0, uploaderKpiData.PackagesNotUploadedToJfrog);
983+
}
984+
985+
[Test]
986+
public async Task SourceRepoFoundToUploadArtifactory_WithCopyOperation_SetsCorrectOperationType()
987+
{
988+
// Arrange
989+
var packageType = PackageType.ClearedThirdParty;
990+
var uploaderKpiData = new UploaderKpiData();
991+
var item = new ComponentsToArtifactory
992+
{
993+
Name = "copy-package",
994+
Version = "1.0.0",
995+
ComponentType = "CARGO",
996+
PackageType = PackageType.ClearedThirdParty, // Should result in copy operation
997+
DryRun = false,
998+
SrcRepoName = "src-repo",
999+
DestRepoName = "dest-repo",
1000+
JfrogApi = "https://test-api.com",
1001+
Token = "test-token"
1002+
};
1003+
int timeout = 5000;
1004+
var displayPackagesInfo = new DisplayPackagesInfo
1005+
{
1006+
JfrogFoundPackagesCargo = new List<ComponentsToArtifactory>(),
1007+
JfrogNotFoundPackagesCargo = new List<ComponentsToArtifactory>()
1008+
};
1009+
1010+
// Mock services
1011+
var mockJFrogService = new Mock<IJFrogService>();
1012+
var mockJFrogApiComm = new Mock<IJFrogApiCommunication>();
1013+
PackageUploadHelper.JFrogService = mockJFrogService.Object;
1014+
ArtifactoryUploader.ArtifactoryUploader.JFrogService = mockJFrogService.Object;
1015+
ArtifactoryUploader.ArtifactoryUploader.JFrogApiCommInstance = mockJFrogApiComm.Object;
1016+
1017+
// Use reflection to get private method
1018+
var methodInfo = typeof(PackageUploadHelper).GetMethod("SourceRepoFoundToUploadArtifactory",
1019+
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
1020+
1021+
// Act
1022+
var task = (Task)methodInfo.Invoke(null, new object[] { packageType, uploaderKpiData, item, timeout, displayPackagesInfo });
1023+
await task;
1024+
1025+
// Assert
1026+
Assert.AreEqual(1, uploaderKpiData.PackagesUploadedToJfrog);
1027+
}
1028+
1029+
[Test]
1030+
public async Task SourceRepoFoundToUploadArtifactory_WithMoveOperation_InternalPackage()
1031+
{
1032+
// Arrange
1033+
var packageType = PackageType.Internal;
1034+
var uploaderKpiData = new UploaderKpiData();
1035+
var item = new ComponentsToArtifactory
1036+
{
1037+
Name = "internal-package",
1038+
Version = "1.0.0",
1039+
ComponentType = "CHOCO",
1040+
PackageType = PackageType.Internal, // Should result in move operation
1041+
DryRun = false,
1042+
SrcRepoName = "src-repo",
1043+
DestRepoName = "internal-repo",
1044+
JfrogApi = "https://test-api.com",
1045+
Token = "test-token"
1046+
};
1047+
int timeout = 5000;
1048+
var displayPackagesInfo = new DisplayPackagesInfo
1049+
{
1050+
JfrogFoundPackagesChoco = new List<ComponentsToArtifactory>(),
1051+
JfrogNotFoundPackagesChoco = new List<ComponentsToArtifactory>()
1052+
};
1053+
1054+
// Mock services
1055+
var mockJFrogService = new Mock<IJFrogService>();
1056+
var mockJFrogApiComm = new Mock<IJFrogApiCommunication>();
1057+
PackageUploadHelper.JFrogService = mockJFrogService.Object;
1058+
ArtifactoryUploader.ArtifactoryUploader.JFrogService = mockJFrogService.Object;
1059+
ArtifactoryUploader.ArtifactoryUploader.JFrogApiCommInstance = mockJFrogApiComm.Object;
1060+
1061+
// Use reflection to get private method
1062+
var methodInfo = typeof(PackageUploadHelper).GetMethod("SourceRepoFoundToUploadArtifactory",
1063+
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
1064+
1065+
// Act
1066+
var task = (Task)methodInfo.Invoke(null, new object[] { packageType, uploaderKpiData, item, timeout, displayPackagesInfo });
1067+
await task;
1068+
1069+
// Assert
1070+
Assert.AreEqual(1, uploaderKpiData.InternalPackagesUploaded);
1071+
Assert.AreEqual(0, uploaderKpiData.InternalPackagesNotUploadedToJfrog);
1072+
}
1073+
1074+
[Test]
1075+
public async Task SourceRepoFoundToUploadArtifactory_WhenResponseIsNotOkOrKnownError_DoesNothing()
1076+
{
1077+
// Arrange
1078+
var packageType = PackageType.ClearedThirdParty;
1079+
var uploaderKpiData = new UploaderKpiData();
1080+
var item = new ComponentsToArtifactory
1081+
{
1082+
Name = "unknown-error-package",
1083+
Version = "1.0.0",
1084+
ComponentType = "NPM",
1085+
PackageType = PackageType.ClearedThirdParty,
1086+
DryRun = false,
1087+
SrcRepoName = "src-repo",
1088+
DestRepoName = "dest-repo",
1089+
JfrogApi = "https://test-api.com",
1090+
Token = "test-token"
1091+
};
1092+
int timeout = 5000;
1093+
var displayPackagesInfo = new DisplayPackagesInfo
1094+
{
1095+
JfrogFoundPackagesNpm = new List<ComponentsToArtifactory>(),
1096+
JfrogNotFoundPackagesNpm = new List<ComponentsToArtifactory>()
1097+
};
1098+
1099+
// Mock services
1100+
var mockJFrogService = new Mock<IJFrogService>();
1101+
var mockJFrogApiComm = new Mock<IJFrogApiCommunication>();
1102+
PackageUploadHelper.JFrogService = mockJFrogService.Object;
1103+
ArtifactoryUploader.ArtifactoryUploader.JFrogService = mockJFrogService.Object;
1104+
ArtifactoryUploader.ArtifactoryUploader.JFrogApiCommInstance = mockJFrogApiComm.Object;
1105+
1106+
// Use reflection to get private method
1107+
var methodInfo = typeof(PackageUploadHelper).GetMethod("SourceRepoFoundToUploadArtifactory",
1108+
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
1109+
1110+
// Act
1111+
var task = (Task)methodInfo.Invoke(null, new object[] { packageType, uploaderKpiData, item, timeout, displayPackagesInfo });
1112+
await task;
1113+
1114+
// Assert - Counters should remain at 0 for unknown errors (else branch does nothing)
1115+
Assert.AreEqual(0, uploaderKpiData.PackagesUploadedToJfrog);
1116+
}
1117+
1118+
#endregion
7321119

7331120
}
7341121
}

0 commit comments

Comments
 (0)