Testing the push method (TODO coherence between return code a physical result)
This commit is contained in:
@ -114,7 +114,7 @@ namespace isnd.host.tests
|
||||
}
|
||||
public string SPIIndexURI
|
||||
{
|
||||
get => server.Addresses.First() + "/v3/index";
|
||||
get => server.Addresses.First() + "/v3/index.json";
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@ -170,5 +170,40 @@ namespace isnd.host.tests
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task TestPackagePush()
|
||||
{
|
||||
var logger = new TestLogger();
|
||||
SourceRepository repository = Repository.Factory.GetCoreV3(SPIIndexURI);
|
||||
PackageUpdateResource pushRes = await repository.GetResourceAsync<PackageUpdateResource>();
|
||||
SymbolPackageUpdateResourceV3 symbolPackageResource = await repository.GetResourceAsync<SymbolPackageUpdateResourceV3>();
|
||||
|
||||
await pushRes.Push(new List<string>{ "../../../../../src/isnd/bin/Release/isnd.1.1.4.nupkg" }, null,
|
||||
5000, false, GetApiKey, GetSymbolsApiKey, false, false, symbolPackageResource, logger);
|
||||
}
|
||||
|
||||
private string GetSymbolsApiKey(string apiUrl)
|
||||
{
|
||||
return GetApiKey(apiUrl);
|
||||
}
|
||||
|
||||
private string GetApiKey(string apiUrl)
|
||||
{
|
||||
return server.ProtectedTestingApiKey;
|
||||
}
|
||||
}
|
||||
|
||||
internal class TestLogger : NuGet.Common.LoggerBase
|
||||
{
|
||||
public override void Log(ILogMessage message)
|
||||
{
|
||||
Console.WriteLine(message.Message);
|
||||
}
|
||||
|
||||
public async override Task LogAsync(ILogMessage message)
|
||||
{
|
||||
Log(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,20 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using isn;
|
||||
using isnd.Data;
|
||||
using isnd.Entities;
|
||||
using isnd.Interfaces;
|
||||
using Microsoft.AspNetCore.DataProtection;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Hosting.Server;
|
||||
using Microsoft.AspNetCore.Hosting.Server.Features;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using Microsoft.CodeAnalysis.Options;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Xunit;
|
||||
|
||||
namespace isnd.tests
|
||||
@ -15,6 +25,13 @@ namespace isnd.tests
|
||||
{
|
||||
public IWebHost Host { get; private set;}
|
||||
public List<string> Addresses { get; private set; } = new List<string>();
|
||||
public Microsoft.Extensions.Logging.ILogger Logger { get; internal set; }
|
||||
|
||||
private IsndSettings siteSettings;
|
||||
|
||||
public IDataProtector DataProtector { get; private set; }
|
||||
public string ProtectedTestingApiKey { get; internal set; }
|
||||
public ApplicationUser TestingUser { get; private set; }
|
||||
|
||||
public WebServerFixture()
|
||||
{
|
||||
@ -40,14 +57,60 @@ namespace isnd.tests
|
||||
config.AddJsonFile("appsettings.Development.json", false);
|
||||
});
|
||||
|
||||
|
||||
|
||||
Host = webhostBuilder.Build();
|
||||
|
||||
var logFactory = Host.Services.GetRequiredService<ILoggerFactory>();
|
||||
Logger = logFactory.CreateLogger<WebServerFixture>();
|
||||
|
||||
|
||||
Host.Start(); //Starts listening on the configured addresses.
|
||||
var server = Host.Services.GetRequiredService<IServer>();
|
||||
|
||||
|
||||
var addressFeature = server.Features.Get<IServerAddressesFeature>();
|
||||
|
||||
foreach (var address in addressFeature.Addresses)
|
||||
{
|
||||
Addresses.Add(address);
|
||||
}
|
||||
siteSettings = Host.Services.GetRequiredService<IOptions<IsndSettings>>().Value;
|
||||
|
||||
DataProtector = Host.Services.GetRequiredService<IDataProtectionProvider>()
|
||||
.CreateProtector(siteSettings.ProtectionTitle);
|
||||
|
||||
var dbContext = Host.Services.GetRequiredService<ApplicationDbContext>();
|
||||
string testingUserName = "Tester";
|
||||
TestingUser = dbContext.Users.FirstOrDefault(u=>u.UserName==testingUserName);
|
||||
if (TestingUser==null)
|
||||
{
|
||||
var userManager = Host.Services.GetRequiredService<UserManager<ApplicationUser>>();
|
||||
TestingUser = new ApplicationUser
|
||||
{
|
||||
UserName=testingUserName
|
||||
};
|
||||
|
||||
var result = userManager.CreateAsync(TestingUser).Result;
|
||||
|
||||
Assert.True(result.Succeeded);
|
||||
TestingUser = dbContext.Users.FirstOrDefault(u=>u.UserName==testingUserName);
|
||||
}
|
||||
var testKey = dbContext.ApiKeys.FirstOrDefault(k=>k.UserId==TestingUser.Id);
|
||||
if (testKey == null)
|
||||
{
|
||||
var keyProvider = Host.Services.GetService<IApiKeyProvider>();
|
||||
var apiKeyQuery = new Data.ApiKeys.CreateModel
|
||||
{
|
||||
Name = "Testing Key",
|
||||
UserId = TestingUser.Id,
|
||||
ValidityPeriodInDays = 1
|
||||
};
|
||||
|
||||
testKey = keyProvider.CreateApiKeyAsync(apiKeyQuery).Result;
|
||||
|
||||
}
|
||||
ProtectedTestingApiKey = DataProtector.Protect(testKey.Id);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user