80 lines
3.7 KiB
C#
80 lines
3.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Logging.Abstractions;
|
|
using Microsoft.Extensions.Options;
|
|
using StellaOps.Concelier.Core.Jobs;
|
|
using StellaOps.Concelier.Connector.Common.Http;
|
|
using StellaOps.Concelier.Connector.Distro.Alpine;
|
|
using StellaOps.Concelier.Connector.Distro.Alpine.Configuration;
|
|
using Xunit;
|
|
|
|
|
|
using StellaOps.TestKit;
|
|
namespace StellaOps.Concelier.Connector.Distro.Alpine.Tests;
|
|
|
|
public sealed class AlpineDependencyInjectionRoutineTests
|
|
{
|
|
[Trait("Category", TestCategories.Unit)]
|
|
[Fact]
|
|
public void Register_ConfiguresOptionsAndScheduler()
|
|
{
|
|
var services = new ServiceCollection();
|
|
services.AddLogging();
|
|
services.AddOptions();
|
|
services.AddSourceCommon();
|
|
|
|
var configuration = new ConfigurationBuilder()
|
|
.AddInMemoryCollection(new Dictionary<string, string?>
|
|
{
|
|
["concelier:sources:alpine:baseUri"] = "https://secdb.alpinelinux.org/",
|
|
["concelier:sources:alpine:releases:0"] = "v3.20",
|
|
["concelier:sources:alpine:repositories:0"] = "main",
|
|
["concelier:sources:alpine:maxDocumentsPerFetch"] = "5",
|
|
["concelier:sources:alpine:fetchTimeout"] = "00:00:30",
|
|
["concelier:sources:alpine:requestDelay"] = "00:00:00.100",
|
|
["concelier:sources:alpine:userAgent"] = "StellaOps.Tests.Alpine/1.0"
|
|
})
|
|
.Build();
|
|
|
|
var routine = new AlpineDependencyInjectionRoutine();
|
|
routine.Register(services, configuration);
|
|
services.Configure<JobSchedulerOptions>(_ => { });
|
|
|
|
using var provider = services.BuildServiceProvider(validateScopes: true);
|
|
|
|
var options = provider.GetRequiredService<IOptions<AlpineOptions>>().Value;
|
|
Assert.Equal(new Uri("https://secdb.alpinelinux.org/"), options.BaseUri);
|
|
Assert.Equal(new[] { "v3.20" }, options.Releases);
|
|
Assert.Equal(new[] { "main" }, options.Repositories);
|
|
Assert.Equal(5, options.MaxDocumentsPerFetch);
|
|
Assert.Equal(TimeSpan.FromSeconds(30), options.FetchTimeout);
|
|
Assert.Equal(TimeSpan.FromMilliseconds(100), options.RequestDelay);
|
|
Assert.Equal("StellaOps.Tests.Alpine/1.0", options.UserAgent);
|
|
|
|
var schedulerOptions = provider.GetRequiredService<IOptions<JobSchedulerOptions>>().Value;
|
|
Assert.True(schedulerOptions.Definitions.TryGetValue(AlpineJobKinds.Fetch, out var fetchDefinition));
|
|
Assert.True(schedulerOptions.Definitions.TryGetValue(AlpineJobKinds.Parse, out var parseDefinition));
|
|
Assert.True(schedulerOptions.Definitions.TryGetValue(AlpineJobKinds.Map, out var mapDefinition));
|
|
|
|
Assert.Equal(typeof(AlpineFetchJob), fetchDefinition.JobType);
|
|
Assert.Equal(TimeSpan.FromMinutes(5), fetchDefinition.Timeout);
|
|
Assert.Equal(TimeSpan.FromMinutes(4), fetchDefinition.LeaseDuration);
|
|
Assert.Equal("*/30 * * * *", fetchDefinition.CronExpression);
|
|
Assert.True(fetchDefinition.Enabled);
|
|
|
|
Assert.Equal(typeof(AlpineParseJob), parseDefinition.JobType);
|
|
Assert.Equal(TimeSpan.FromMinutes(6), parseDefinition.Timeout);
|
|
Assert.Equal(TimeSpan.FromMinutes(4), parseDefinition.LeaseDuration);
|
|
Assert.Equal("7,37 * * * *", parseDefinition.CronExpression);
|
|
Assert.True(parseDefinition.Enabled);
|
|
|
|
Assert.Equal(typeof(AlpineMapJob), mapDefinition.JobType);
|
|
Assert.Equal(TimeSpan.FromMinutes(8), mapDefinition.Timeout);
|
|
Assert.Equal(TimeSpan.FromMinutes(4), mapDefinition.LeaseDuration);
|
|
Assert.Equal("12,42 * * * *", mapDefinition.CronExpression);
|
|
Assert.True(mapDefinition.Enabled);
|
|
}
|
|
}
|