Skip to content

Commit 867b2f5

Browse files
authored
Merge branch 'feature/ChocoPackages_Discovery' into feature/updateBuildpipelines
2 parents b9c05c6 + 8b7dcf7 commit 867b2f5

File tree

16 files changed

+258
-523
lines changed

16 files changed

+258
-523
lines changed

src/AritfactoryUploader.UTest/PackageUploadHelperTest.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@ public async Task JfrogNotFoundPackagesAsync_CoversAllScenarios(string compType)
229229
displayPackagesInfo.JfrogNotFoundPackagesConan = new List<ComponentsToArtifactory>();
230230
displayPackagesInfo.JfrogNotFoundPackagesDebian = new List<ComponentsToArtifactory>();
231231
displayPackagesInfo.JfrogNotFoundPackagesCargo = new List<ComponentsToArtifactory>();
232+
displayPackagesInfo.JfrogNotFoundPackagesChoco = new List<ComponentsToArtifactory>();
232233

233234
// Act
234235
await PackageUploadHelper.JfrogNotFoundPackagesAsync(item, displayPackagesInfo);
@@ -239,7 +240,7 @@ public async Task JfrogNotFoundPackagesAsync_CoversAllScenarios(string compType)
239240
Assert.AreEqual(1, displayPackagesInfo.JfrogNotFoundPackagesNpm.Count);
240241
Assert.That(displayPackagesInfo.JfrogNotFoundPackagesNpm[0], Is.Not.Null);
241242
}
242-
else if (item.ComponentType == "NUGET" || item.ComponentType == "CHOCO")
243+
else if (item.ComponentType == "NUGET")
243244
{
244245
Assert.AreEqual(1, displayPackagesInfo.JfrogNotFoundPackagesNuget.Count);
245246
Assert.That(displayPackagesInfo.JfrogNotFoundPackagesNuget[0], Is.Not.Null);
@@ -269,6 +270,11 @@ public async Task JfrogNotFoundPackagesAsync_CoversAllScenarios(string compType)
269270
Assert.AreEqual(1, displayPackagesInfo.JfrogNotFoundPackagesCargo.Count);
270271
Assert.That(displayPackagesInfo.JfrogNotFoundPackagesCargo[0], Is.Not.Null);
271272
}
273+
else if (item.ComponentType == "CHOCO")
274+
{
275+
Assert.AreEqual(1, displayPackagesInfo.JfrogNotFoundPackagesChoco.Count);
276+
Assert.That(displayPackagesInfo.JfrogNotFoundPackagesChoco[0], Is.Not.Null);
277+
}
272278
}
273279

274280
[Test]
@@ -293,6 +299,7 @@ public async Task JfrogFoundPackagesAsync_CoversAllScenarios(string compType)
293299
displayPackagesInfo.JfrogFoundPackagesConan = new List<ComponentsToArtifactory>();
294300
displayPackagesInfo.JfrogFoundPackagesDebian = new List<ComponentsToArtifactory>();
295301
displayPackagesInfo.JfrogFoundPackagesCargo = new List<ComponentsToArtifactory>();
302+
displayPackagesInfo.JfrogFoundPackagesChoco = new List<ComponentsToArtifactory>();
296303
var operationType = "operationType";
297304
var responseMessage = new HttpResponseMessage();
298305
var dryRunSuffix = "dryRunSuffix";
@@ -306,7 +313,7 @@ public async Task JfrogFoundPackagesAsync_CoversAllScenarios(string compType)
306313
Assert.AreEqual(1, displayPackagesInfo.JfrogFoundPackagesNpm.Count);
307314
Assert.That(displayPackagesInfo.JfrogFoundPackagesNpm[0], Is.Not.Null);
308315
}
309-
else if (item.ComponentType == "NUGET" || item.ComponentType == "CHOCO")
316+
else if (item.ComponentType == "NUGET")
310317
{
311318
Assert.AreEqual(1, displayPackagesInfo.JfrogFoundPackagesNuget.Count);
312319
Assert.That(displayPackagesInfo.JfrogFoundPackagesNuget[0], Is.Not.Null);
@@ -336,6 +343,11 @@ public async Task JfrogFoundPackagesAsync_CoversAllScenarios(string compType)
336343
Assert.AreEqual(1, displayPackagesInfo.JfrogFoundPackagesCargo.Count);
337344
Assert.That(displayPackagesInfo.JfrogFoundPackagesCargo[0], Is.Not.Null);
338345
}
346+
else if (item.ComponentType == "CHOCO")
347+
{
348+
Assert.AreEqual(1, displayPackagesInfo.JfrogFoundPackagesChoco.Count);
349+
Assert.That(displayPackagesInfo.JfrogFoundPackagesChoco[0], Is.Not.Null);
350+
}
339351
}
340352

341353
[Test]

src/AritfactoryUploader.UTest/PackageUploadInformationTest.cs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,45 @@ public void GetNotApprovedCargoPackages_FileExistsWithInvalidJson_ShouldHandleJs
459459
Assert.Throws<System.Reflection.TargetInvocationException>(() =>
460460
method.Invoke(null, new object[] { unknownPackages, projectResponse, mockFileOperations.Object, filepath, filename }));
461461

462+
// Cleanup
463+
File.Delete(filename);
464+
}
465+
[Test]
466+
public void GetNotApprovedChocoPackages_FileExists_ShouldUpdateDebianComponents()
467+
{
468+
// Arrange
469+
var unknownPackages = new List<ComponentsToArtifactory>
470+
{
471+
new ComponentsToArtifactory { Name = "Package1", Version = "1.0.0" },
472+
new ComponentsToArtifactory { Name = "Package2", Version = "2.0.0" }
473+
};
474+
var projectResponse = new ProjectResponse();
475+
var mockFileOperations = new Mock<IFileOperations>();
476+
var filepath = Path.GetTempPath();
477+
var filename = Path.Combine(filepath, $"Artifactory_{FileConstant.artifactoryReportNotApproved}");
478+
479+
var existingProjectResponse = new ProjectResponse
480+
{
481+
Choco = new List<JsonComponents>
482+
{
483+
new JsonComponents { Name = "ExistingPackage", Version = "1.0.0" }
484+
}
485+
};
486+
var json = JsonConvert.SerializeObject(existingProjectResponse);
487+
File.WriteAllText(filename, json);
488+
489+
// Act
490+
PackageUploadInformation.GetNotApprovedChocoPackages(unknownPackages, projectResponse, mockFileOperations.Object, filepath, filename);
491+
492+
// Assert
493+
mockFileOperations.Verify(m => m.WriteContentToReportNotApprovedFile(It.Is<ProjectResponse>(pr =>
494+
pr.Choco.Count == 2 &&
495+
pr.Choco[0].Name == "Package1" &&
496+
pr.Choco[0].Version == "1.0.0" &&
497+
pr.Choco[1].Name == "Package2" &&
498+
pr.Choco[1].Version == "2.0.0"
499+
), filepath, FileConstant.artifactoryReportNotApproved, "Artifactory"), Times.Once);
500+
462501
// Cleanup
463502
File.Delete(filename);
464503
}

src/AritfactoryUploader.UTest/UploadToArtifactoryTest.cs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -798,7 +798,6 @@ public class UploadToArtifactoryHelperTests
798798
{
799799
[TestCase("pkg:npm/foo@1.0.0", "NPM")]
800800
[TestCase("pkg:nuget/foo@1.0.0", "NUGET")]
801-
[TestCase("pkg:choco/foo@1.0.0", "CHOCO")]
802801
[TestCase("pkg:maven/foo@1.0.0", "MAVEN")]
803802
[TestCase("pkg:pypi/foo@1.0.0", "POETRY")]
804803
[TestCase("pkg:conan/foo@1.0.0", "CONAN")]
@@ -813,7 +812,24 @@ public void GetComponentType_ReturnsExpectedType(string purl, string expected)
813812
.Invoke(null, new object[] { component }) as string;
814813
Assert.AreEqual(expected, result);
815814
}
815+
[Test]
816+
public void GetComponentType_ReturnsChoco_WhenProjectTypeIsChoco()
817+
{
818+
var component = new Component
819+
{
820+
Purl = "pkg:nuget/newtonsoft@3.1.18", // purl suggests NUGET, but ProjectType should override to CHOCO
821+
Properties = new List<Property>
822+
{
823+
new Property { Name = Dataconstant.Cdx_ProjectType, Value = "choco" }
824+
}
825+
};
826+
827+
var result = typeof(UploadToArtifactory)
828+
.GetMethod("GetComponentType", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static)
829+
.Invoke(null, new object[] { component }) as string;
816830

831+
Assert.AreEqual("CHOCO", result);
832+
}
817833
[Test]
818834
public void AddUnknownComponentToDisplayList_AddsToCorrectList()
819835
{

src/ArtifactoryUploader/Model/DisplayPackagesInfo.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,27 +23,31 @@ public class DisplayPackagesInfo
2323
public List<ComponentsToArtifactory> UnknownPackagesDebian { get; set; }
2424
public List<ComponentsToArtifactory> UnknownPackagesMaven { get; set; }
2525
public List<ComponentsToArtifactory> UnknownPackagesCargo { get; set; }
26+
public List<ComponentsToArtifactory> UnknownPackagesChoco { get; set; }
2627
public List<ComponentsToArtifactory> JfrogNotFoundPackagesNpm { get; set; }
2728
public List<ComponentsToArtifactory> JfrogNotFoundPackagesNuget { get; set; }
2829
public List<ComponentsToArtifactory> JfrogNotFoundPackagesConan { get; set; }
2930
public List<ComponentsToArtifactory> JfrogNotFoundPackagesPython { get; set; }
3031
public List<ComponentsToArtifactory> JfrogNotFoundPackagesDebian { get; set; }
3132
public List<ComponentsToArtifactory> JfrogNotFoundPackagesMaven { get; set; }
3233
public List<ComponentsToArtifactory> JfrogNotFoundPackagesCargo { get; set; }
34+
public List<ComponentsToArtifactory> JfrogNotFoundPackagesChoco { get; set; }
3335
public List<ComponentsToArtifactory> JfrogFoundPackagesNpm { get; set; }
3436
public List<ComponentsToArtifactory> JfrogFoundPackagesNuget { get; set; }
3537
public List<ComponentsToArtifactory> JfrogFoundPackagesConan { get; set; }
3638
public List<ComponentsToArtifactory> JfrogFoundPackagesPython { get; set; }
3739
public List<ComponentsToArtifactory> JfrogFoundPackagesDebian { get; set; }
3840
public List<ComponentsToArtifactory> JfrogFoundPackagesMaven { get; set; }
3941
public List<ComponentsToArtifactory> JfrogFoundPackagesCargo { get; set; }
42+
public List<ComponentsToArtifactory> JfrogFoundPackagesChoco { get; set; }
4043
public List<ComponentsToArtifactory> SuccessfullPackagesNpm { get; set; }
4144
public List<ComponentsToArtifactory> SuccessfullPackagesNuget { get; set; }
4245
public List<ComponentsToArtifactory> SuccessfullPackagesConan { get; set; }
4346
public List<ComponentsToArtifactory> SuccessfullPackagesPython { get; set; }
4447
public List<ComponentsToArtifactory> SuccessfullPackagesDebian { get; set; }
4548
public List<ComponentsToArtifactory> SuccessfullPackagesMaven { get; set; }
4649
public List<ComponentsToArtifactory> SuccessfullPackagesCargo { get; set; }
50+
public List<ComponentsToArtifactory> SuccessfullPackagesChoco { get; set; }
4751

4852
}
4953
public class ProjectResponse
@@ -62,6 +66,8 @@ public class ProjectResponse
6266
public List<JsonComponents> Maven { get; set; }
6367
[JsonProperty("cargo")]
6468
public List<JsonComponents> Cargo { get; set; }
69+
[JsonProperty("choco")]
70+
public List<JsonComponents> Choco { get; set; }
6571
}
6672

6773
public class JsonComponents

src/ArtifactoryUploader/PackageUploadHelper.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,11 @@ private static void AddComponentToDisplayList(string componentType, ComponentsTo
136136
AddToNpmList(component, displayPackagesInfo, notFound, success);
137137
break;
138138
case "NUGET":
139-
case "CHOCO":
140139
AddToNugetList(component, displayPackagesInfo, notFound, success);
141140
break;
141+
case "CHOCO":
142+
AddToChocoList(component, displayPackagesInfo, notFound, success);
143+
break;
142144
case "MAVEN":
143145
AddToMavenList(component, displayPackagesInfo, notFound, success);
144146
break;
@@ -226,7 +228,15 @@ private static void AddToCargoList(ComponentsToArtifactory component, DisplayPac
226228
else
227229
displayPackagesInfo.JfrogFoundPackagesCargo.Add(component);
228230
}
229-
231+
private static void AddToChocoList(ComponentsToArtifactory component, DisplayPackagesInfo displayPackagesInfo, bool notFound, bool success)
232+
{
233+
if (notFound)
234+
displayPackagesInfo.JfrogNotFoundPackagesChoco.Add(component);
235+
else if (success)
236+
displayPackagesInfo.SuccessfullPackagesChoco.Add(component);
237+
else
238+
displayPackagesInfo.JfrogFoundPackagesChoco.Add(component);
239+
}
230240
// Properly wrap UploadingThePackages as a method
231241
public static async Task UploadingThePackages(List<ComponentsToArtifactory> componentsToUpload, int timeout, DisplayPackagesInfo displayPackagesInfo)
232242
{

0 commit comments

Comments
 (0)