Skip to content

Commit 9d4dd52

Browse files
authored
Add test for external feeds when pushing (#210)
1 parent c93cb1b commit 9d4dd52

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

test/SleetLib.Tests/ExternalSearchTests.cs

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
using System.Threading.Tasks;
66
using FluentAssertions;
77
using Newtonsoft.Json.Linq;
8+
using NuGet.Packaging.Core;
89
using NuGet.Test.Helpers;
10+
using NuGet.Versioning;
911
using Sleet;
1012
using Xunit;
1113

@@ -219,6 +221,59 @@ public async Task VerifyRecreateKeepsExternalSearch()
219221
}
220222
}
221223

224+
[Fact]
225+
public async Task VerifyPushKeepsExternalSearch()
226+
{
227+
using (var tmpFolder = new TestFolder())
228+
using (var packagesFolder = new TestFolder())
229+
using (var target = new TestFolder())
230+
using (var cache = new LocalCache())
231+
using (var outputFolder = new TestFolder())
232+
{
233+
var log = new TestLogger();
234+
var fileSystem = new PhysicalFileSystem(cache, UriUtility.CreateUri(target.Root));
235+
var settings = new LocalSettings();
236+
237+
var context = new SleetContext()
238+
{
239+
Token = CancellationToken.None,
240+
LocalSettings = settings,
241+
Log = log,
242+
Source = fileSystem,
243+
SourceSettings = new FeedSettings()
244+
};
245+
246+
var success = await InitCommand.RunAsync(settings, fileSystem, log);
247+
248+
success &= await FeedSettingsCommand.RunAsync(
249+
settings,
250+
fileSystem,
251+
unsetAll: false,
252+
getAll: false,
253+
getSettings: Array.Empty<string>(),
254+
unsetSettings: Array.Empty<string>(),
255+
setSettings: new string[] { "externalsearch:https://example.org/search/query" },
256+
log: log,
257+
token: context.Token);
258+
259+
// Push a package
260+
var testPackage = new TestNupkg("packageA", "1.0.0");
261+
var packageIdentity = new PackageIdentity(testPackage.Nuspec.Id, NuGetVersion.Parse(testPackage.Nuspec.Version));
262+
var zipFile = testPackage.Save(packagesFolder.Root);
263+
264+
await PushCommand.RunAsync(context.LocalSettings, context.Source, new List<string>() { zipFile.FullName }, false, false, context.Log);
265+
var validateOutput = await ValidateCommand.RunAsync(context.LocalSettings, context.Source, context.Log);
266+
267+
success.Should().BeTrue();
268+
269+
var indexJsonPath = Path.Combine(target.RootDirectory.FullName, "index.json");
270+
var entry = GetSearchEntry(indexJsonPath);
271+
var value = entry["@id"].ToObject<string>();
272+
273+
value.Should().Be("https://example.org/search/query");
274+
}
275+
}
276+
222277
private JObject GetSearchEntry(string indexJsonPath)
223278
{
224279
var json = JObject.Parse(File.ReadAllText(indexJsonPath));

0 commit comments

Comments
 (0)