Skip to content

Commit 8601964

Browse files
Updated for requested changes
1 parent 8b24886 commit 8601964

File tree

12 files changed

+84
-78
lines changed

12 files changed

+84
-78
lines changed

src/AritfactoryUploader.UTest/ArtifactoryUploaderTest.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ public async Task UploadPackageToRepo_WhenPackageInfoIsNull_ReturnsNotFoundRespo
111111
var timeout = 10000;
112112
var displayPackagesInfo = new DisplayPackagesInfo();
113113
var jFrogServiceMock = new Mock<IJFrogService>();
114-
jFrogServiceMock.Setup(x => x.GetPackageInfo(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), component))
114+
jFrogServiceMock.Setup(x => x.GetPackageInfo(component))
115115
.ReturnsAsync((AqlResult)null);
116116
ArtfactoryUploader.jFrogService = jFrogServiceMock.Object;
117117
// Act
@@ -140,7 +140,7 @@ public async Task UploadPackageToRepo_WhenPackageTypeIsClearedThirdPartyOrDevelo
140140
var displayPackagesInfo = new DisplayPackagesInfo();
141141
var jFrogServiceMock = new Mock<IJFrogService>();
142142
var jfrogApicommunicationMock = new Mock<IJFrogApiCommunication>();
143-
jFrogServiceMock.Setup(x => x.GetPackageInfo(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(),component))
143+
jFrogServiceMock.Setup(x => x.GetPackageInfo(component))
144144
.ReturnsAsync(new AqlResult());
145145
jfrogApicommunicationMock.Setup(x => x.CopyFromRemoteRepo(It.IsAny<ComponentsToArtifactory>()))
146146
.ReturnsAsync(new HttpResponseMessage(HttpStatusCode.OK));
@@ -171,7 +171,7 @@ public async Task UploadPackageToRepo_WhenPackageTypeIsInternal_CallsMoveFromRep
171171
var displayPackagesInfo = new DisplayPackagesInfo();
172172
var jFrogServiceMock = new Mock<IJFrogService>();
173173
var jfrogApicommunicationMock = new Mock<IJFrogApiCommunication>();
174-
jFrogServiceMock.Setup(x => x.GetPackageInfo(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), component))
174+
jFrogServiceMock.Setup(x => x.GetPackageInfo(component))
175175
.ReturnsAsync(new AqlResult());
176176
jfrogApicommunicationMock.Setup(x => x.MoveFromRepo(It.IsAny<ComponentsToArtifactory>()))
177177
.ReturnsAsync(new HttpResponseMessage(HttpStatusCode.OK));
@@ -227,7 +227,7 @@ public async Task UploadPackageToRepo_WhenHttpRequestExceptionOccurs_ReturnsErro
227227
var displayPackagesInfo = new DisplayPackagesInfo();
228228
var jFrogServiceMock = new Mock<IJFrogService>();
229229
var jfrogApicommunicationMock = new Mock<IJFrogApiCommunication>();
230-
jFrogServiceMock.Setup(x => x.GetPackageInfo(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(),component))
230+
jFrogServiceMock.Setup(x => x.GetPackageInfo(component))
231231
.ThrowsAsync(new HttpRequestException());
232232
ArtfactoryUploader.jFrogService = jFrogServiceMock.Object;
233233
ArtfactoryUploader.JFrogApiCommInstance = jfrogApicommunicationMock.Object;
@@ -257,7 +257,7 @@ public async Task UploadPackageToRepo_WhenInvalidOperationExceptionOccurs_Return
257257
var displayPackagesInfo = new DisplayPackagesInfo();
258258
var jFrogServiceMock = new Mock<IJFrogService>();
259259
var jfrogApicommunicationMock = new Mock<IJFrogApiCommunication>();
260-
jFrogServiceMock.Setup(x => x.GetPackageInfo(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), component))
260+
jFrogServiceMock.Setup(x => x.GetPackageInfo(component))
261261
.ThrowsAsync(new InvalidOperationException());
262262
ArtfactoryUploader.jFrogService = jFrogServiceMock.Object;
263263
ArtfactoryUploader.JFrogApiCommInstance = jfrogApicommunicationMock.Object;

src/AritfactoryUploader.UTest/PackageUploadHelperTest.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ public async Task GetSrcRepoDetailsForPyPiOrConanPackages_WhenPypiRepoExists_Ret
449449
PackageUploadHelper.jFrogService = jFrogServiceMock.Object;
450450

451451
// Act
452-
var result = await PackageUploadHelper.GetSrcRepoDetailsForPyPiOrConanPackages(item);
452+
var result = await PackageUploadHelper.GetSrcRepoDetailsForComponent(item);
453453

454454
// Assert
455455
Assert.IsNotNull(result);
@@ -487,7 +487,7 @@ public async static Task GetSrcRepoDetailsForPyPiOrConanPackages_WhenConanRepoEx
487487
PackageUploadHelper.jFrogService = jFrogServiceMock.Object;
488488

489489
// Act
490-
var result = await PackageUploadHelper.GetSrcRepoDetailsForPyPiOrConanPackages(item);
490+
var result = await PackageUploadHelper.GetSrcRepoDetailsForComponent(item);
491491

492492
// Assert
493493
Assert.IsNotNull(result);
@@ -507,7 +507,7 @@ public async Task GetSrcRepoDetailsForPyPiOrConanPackages_WhenNoRepoExists_Retur
507507
PackageUploadHelper.jFrogService = jFrogServiceMock.Object;
508508

509509
// Act
510-
var result = await PackageUploadHelper.GetSrcRepoDetailsForPyPiOrConanPackages(item);
510+
var result = await PackageUploadHelper.GetSrcRepoDetailsForComponent(item);
511511

512512
// Assert
513513
Assert.IsNull(result);
@@ -903,7 +903,7 @@ public async Task GetSrcRepoDetailsForPyPiOrConanPackages_WhenNpmRepoExists_Retu
903903

904904

905905
// Act
906-
var result = await PackageUploadHelper.GetSrcRepoDetailsForPyPiOrConanPackages(item);
906+
var result = await PackageUploadHelper.GetSrcRepoDetailsForComponent(item);
907907

908908
// Assert
909909
Assert.IsNotNull(result);

src/ArtifactoryUploader/ArtifactoryUploader.cs

Lines changed: 5 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -107,13 +107,10 @@ public static void SetConfigurationValues()
107107

108108
private static async Task<AqlResult> GetPackageInfoWithRetry(IJFrogService jFrogService, ComponentsToArtifactory component)
109109
{
110-
async Task<AqlResult> TryGetPackageInfo(string srcRepo, string packageName, string path, ComponentsToArtifactory component)
111-
=> await jFrogService.GetPackageInfo(srcRepo, packageName, path, component);
110+
async Task<AqlResult> TryGetPackageInfo(ComponentsToArtifactory component)
111+
=> await jFrogService.GetPackageInfo(component);
112112

113-
114-
115-
116-
var packageInfo = await TryGetPackageInfo(component.SrcRepoName, component.JfrogPackageName, component.Path, component);
113+
var packageInfo = await TryGetPackageInfo(component);
117114

118115

119116
// Handle DEBIAN package name mismatch
@@ -130,31 +127,13 @@ async Task<AqlResult> TryGetPackageInfo(string srcRepo, string packageName, stri
130127
var lowerPath = component.Path.ToLower();
131128

132129

133-
packageInfo = await TryGetPackageInfo(lowerSrcRepo, lowerPackageName, lowerPath, component);
130+
packageInfo = await TryGetPackageInfo(component);
134131

135132
if (packageInfo != null)
136133
{
137134
component.CopyPackageApiUrl = component.CopyPackageApiUrl.ToLower();
138135
}
139-
}
140-
141-
// Retry with wildcard path if still not found
142-
// ToDo - A better way would need to be thought of in the future.
143-
if (packageInfo == null)
144-
{
145-
packageInfo = await TryGetPackageInfo(component.SrcRepoName, component.JfrogPackageName, $"{component.Path}*", component);
146-
147-
if (packageInfo != null)
148-
{
149-
// Build URLs
150-
string BuildUrl(string apiConstant) =>
151-
$"{component.JfrogApi}{apiConstant}{component.SrcRepoName}/{packageInfo.Path}/{packageInfo.Name}" +
152-
$"?to=/{component.DestRepoName}/{packageInfo.Path}/{packageInfo.Name}";
153-
154-
component.CopyPackageApiUrl = component.DryRun ? $"{BuildUrl(ApiConstant.CopyPackageApi)}&dry=1" : BuildUrl(ApiConstant.CopyPackageApi);
155-
component.MovePackageApiUrl = component.DryRun ? $"{BuildUrl(ApiConstant.MovePackageApi)}&dry=1" : BuildUrl(ApiConstant.MovePackageApi);
156-
}
157-
}
136+
}
158137

159138
return packageInfo;
160139
}

src/ArtifactoryUploader/PackageUploadHelper.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public async static Task<List<ComponentsToArtifactory>> GetComponentsToBeUploade
7676
var packageType = GetPackageType(item);
7777
if (packageType != PackageType.Unknown)
7878
{
79-
AqlResult aqlResult = await GetSrcRepoDetailsForPyPiOrConanPackages(item);
79+
AqlResult aqlResult = await GetSrcRepoDetailsForComponent(item);
8080
ComponentsToArtifactory components = new ComponentsToArtifactory()
8181
{
8282
Name = !string.IsNullOrEmpty(item.Group) ? $"{item.Group}/{item.Name}" : item.Name,
@@ -955,7 +955,7 @@ private static string GetComponentType(Component item)
955955
return string.Empty;
956956
}
957957

958-
public async static Task<AqlResult> GetSrcRepoDetailsForPyPiOrConanPackages(Component item)
958+
public async static Task<AqlResult> GetSrcRepoDetailsForComponent(Component item)
959959
{
960960
if (item.Purl.Contains("pypi", StringComparison.OrdinalIgnoreCase))
961961
{

src/LCT.APICommunications/Interfaces/IJfrogAqlApiCommunication.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public interface IJfrogAqlApiCommunication
4444
/// <param name="packageName">repoName</param>
4545
/// <param name="path">repoName</param>
4646
/// <returns>AqlResult</returns>
47-
Task<HttpResponseMessage> GetPackageInfo(string repoName, string packageName = null, string path = null, ComponentsToArtifactory component = null);
47+
Task<HttpResponseMessage> GetPackageInfo(ComponentsToArtifactory component = null);
4848

4949
/// <summary>
5050
/// Checks connectivity with JFrog server

src/LCT.APICommunications/JfrogAqlApiCommunication.cs

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -101,15 +101,12 @@ public async Task<HttpResponseMessage> GetPypiComponentDataByRepo(string repoNam
101101
/// <summary>
102102
/// Gets the package information in the repo, via the name or path
103103
/// </summary>
104-
/// <param name="repoName">repoName</param>
105-
/// <param name="packageName">repoName</param>
106-
/// <param name="path">repoName</param>
107-
/// <returns>AqlResult</returns>
108-
public async Task<HttpResponseMessage> GetPackageInfo(string repoName, string packageName = null, string path = null, ComponentsToArtifactory component = null)
104+
105+
public async Task<HttpResponseMessage> GetPackageInfo(ComponentsToArtifactory component = null)
109106
{
110-
ValidateParameters(packageName, path);
107+
ValidateParameters(component.JfrogPackageName, component.Path);
111108

112-
var aqlQueryToBody = BuildAqlQuery(repoName, packageName, path,component);
109+
var aqlQueryToBody = BuildAqlQuery(component);
113110

114111
string uri = $"{DomainName}{ApiConstant.JfrogArtifactoryApiSearchAql}";
115112
HttpContent httpContent = new StringContent(aqlQueryToBody);
@@ -133,14 +130,14 @@ private static void ValidateParameters(string packageName, string path)
133130
}
134131
}
135132

136-
private static string BuildAqlQuery(string repoName, string packageName, string path, ComponentsToArtifactory component)
133+
private static string BuildAqlQuery( ComponentsToArtifactory component)
137134
{
138135

139136
if (component.ComponentType.Equals("NPM", StringComparison.InvariantCultureIgnoreCase))
140137
{
141138
var queryList = new List<string>
142139
{
143-
$"\"repo\":{{\"$eq\":\"{repoName}\"}}",
140+
$"\"repo\":{{\"$eq\":\"{component.SrcRepoName}\"}}",
144141
$"\"@npm.name\":{{\"$eq\":\"{component.Name}\"}}",
145142
$"\"@npm.version\":{{\"$eq\":\"{component.Version}\"}}"
146143
};
@@ -154,7 +151,7 @@ private static string BuildAqlQuery(string repoName, string packageName, string
154151
{
155152
var queryList = new List<string>
156153
{
157-
$"\"repo\":{{\"$eq\":\"{repoName}\"}}",
154+
$"\"repo\":{{\"$eq\":\"{component.SrcRepoName}\"}}",
158155
$"\"@pypi.normalized.name\":{{\"$eq\":\"{component.Name}\"}}",
159156
$"\"@pypi.version\":{{\"$eq\":\"{component.Version}\"}}"
160157
};
@@ -169,17 +166,17 @@ private static string BuildAqlQuery(string repoName, string packageName, string
169166
{
170167
var queryList = new List<string>()
171168
{
172-
$"\"repo\":{{\"$eq\":\"{repoName}\"}}"
169+
$"\"repo\":{{\"$eq\":\"{component.SrcRepoName}\"}}"
173170
};
174171

175-
if (!string.IsNullOrEmpty(path))
172+
if (!string.IsNullOrEmpty(component.Path))
176173
{
177-
queryList.Add($"\"path\":{{\"$match\":\"{path}\"}}");
174+
queryList.Add($"\"path\":{{\"$match\":\"{component.Path}\"}}");
178175
}
179176

180-
if (!string.IsNullOrEmpty(packageName))
177+
if (!string.IsNullOrEmpty(component.JfrogPackageName))
181178
{
182-
queryList.Add($"\"name\":{{\"$match\":\"{packageName}\"}}");
179+
queryList.Add($"\"name\":{{\"$match\":\"{component.JfrogPackageName}\"}}");
183180
}
184181

185182
StringBuilder query = new();

src/LCT.Facade.UTest/JfrogAqlApiCommunicationFacadeUTest.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,21 +70,26 @@ public async Task GetInternalComponentDataByRepo_Returnswith_HttpCodeNoContent()
7070
public async Task GetPackageInfoByRepoAndPackageName_GetsPackageInfo_Successfully()
7171
{
7272
// Arrange
73-
ComponentsToArtifactory component= new ComponentsToArtifactory();
73+
ComponentsToArtifactory component = new ComponentsToArtifactory
74+
{
75+
SrcRepoName = "org1-nuget-nuget-remote-cache",
76+
JfrogPackageName = "System.Numerics.Vectors.4.5.0.nupkg",
77+
Path = string.Empty
78+
};
79+
7480

7581
HttpResponseMessage httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK);
7682
Mock<IJfrogAqlApiCommunication> mockJfrogAqlApiCommunicationFacade =
7783
new Mock<IJfrogAqlApiCommunication>();
7884
mockJfrogAqlApiCommunicationFacade.
79-
Setup(x => x.GetPackageInfo(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), component)).
85+
Setup(x => x.GetPackageInfo(component)).
8086
ReturnsAsync(httpResponseMessage);
8187

8288
// Act
8389
JfrogAqlApiCommunicationFacade jfrogAqlApiCommunicationFacade =
8490
new JfrogAqlApiCommunicationFacade(mockJfrogAqlApiCommunicationFacade.Object);
8591
HttpResponseMessage actual =
86-
await jfrogAqlApiCommunicationFacade.GetPackageInfo("org1-nuget-nuget-remote-cache", "System.Numerics.Vectors.4.5.0.nupkg",
87-
string.Empty, component);
92+
await jfrogAqlApiCommunicationFacade.GetPackageInfo(component);
8893

8994
//Assert
9095
Assert.That(actual.StatusCode, Is.EqualTo(HttpStatusCode.OK));

src/LCT.Facade/Interfaces/IJfrogAqlApiCommunicationFacade.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public interface IJfrogAqlApiCommunicationFacade
4343
/// <param name="packageName">repoName</param>
4444
/// <param name="path">repoName</param>
4545
/// <returns>AqlResult</returns>
46-
Task<HttpResponseMessage> GetPackageInfo(string repoName, string packageName, string path, ComponentsToArtifactory component);
46+
Task<HttpResponseMessage> GetPackageInfo(ComponentsToArtifactory component);
4747

4848

4949
/// <summary>

src/LCT.Facade/JfrogAqlApiCommunicationFacade.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@ public async Task<HttpResponseMessage> GetPypiComponentDataByRepo(string repoNam
7373
/// <param name="packageName">repoName</param>
7474
/// <param name="path">repoName</param>
7575
/// <returns>AqlResult</returns>
76-
public async Task<HttpResponseMessage> GetPackageInfo(string repoName, string packageName, string path, ComponentsToArtifactory component)
76+
public async Task<HttpResponseMessage> GetPackageInfo(ComponentsToArtifactory component)
7777
{
78-
return await m_jfrogAqlApiCommunication.GetPackageInfo(repoName, packageName, path,component);
78+
return await m_jfrogAqlApiCommunication.GetPackageInfo(component);
7979
}
8080
}
8181
}

0 commit comments

Comments
 (0)