audit, advisories and doctors/setup work
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
// Copyright (c) StellaOps. Licensed under AGPL-3.0-or-later.
|
||||
// Unit tests for RegistrySourceService
|
||||
|
||||
using System.Globalization;
|
||||
using FluentAssertions;
|
||||
using Microsoft.Extensions.Logging.Abstractions;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Moq;
|
||||
using StellaOps.SbomService.Models;
|
||||
using StellaOps.SbomService.Repositories;
|
||||
@@ -22,10 +24,22 @@ public class RegistrySourceServiceTests
|
||||
_sourceRepoMock = new Mock<IRegistrySourceRepository>();
|
||||
_runRepoMock = new Mock<IRegistrySourceRunRepository>();
|
||||
|
||||
var timeProvider = new FixedTimeProvider(FixedNow);
|
||||
var guidProvider = CreateGuidProvider();
|
||||
var httpOptions = Options.Create(new RegistryHttpOptions
|
||||
{
|
||||
AllowedHosts = new List<string> { "harbor.example.com", "registry.example.com", "test-registry.example.com" }
|
||||
});
|
||||
var queryOptions = Options.Create(new RegistrySourceQueryOptions());
|
||||
|
||||
_service = new RegistrySourceService(
|
||||
_sourceRepoMock.Object,
|
||||
_runRepoMock.Object,
|
||||
NullLogger<RegistrySourceService>.Instance);
|
||||
NullLogger<RegistrySourceService>.Instance,
|
||||
timeProvider,
|
||||
guidProvider,
|
||||
httpOptions,
|
||||
queryOptions);
|
||||
}
|
||||
|
||||
[Trait("Category", "Unit")]
|
||||
@@ -90,7 +104,7 @@ public class RegistrySourceServiceTests
|
||||
.Returns<RegistrySource, CancellationToken>((s, _) => Task.FromResult(s));
|
||||
|
||||
// Act
|
||||
var result = await _service.CreateAsync(request, null, null);
|
||||
var result = await _service.CreateAsync(request, null, "tenant-1");
|
||||
|
||||
// Assert
|
||||
result.RegistryUrl.Should().Be("https://registry.example.com");
|
||||
@@ -107,7 +121,7 @@ public class RegistrySourceServiceTests
|
||||
.ReturnsAsync(source);
|
||||
|
||||
// Act
|
||||
var result = await _service.GetByIdAsync(source.Id);
|
||||
var result = await _service.GetByIdAsync(source.Id, "tenant-1");
|
||||
|
||||
// Assert
|
||||
result.Should().NotBeNull();
|
||||
@@ -125,7 +139,7 @@ public class RegistrySourceServiceTests
|
||||
.ReturnsAsync((RegistrySource?)null);
|
||||
|
||||
// Act
|
||||
var result = await _service.GetByIdAsync(id);
|
||||
var result = await _service.GetByIdAsync(id, "tenant-1");
|
||||
|
||||
// Assert
|
||||
result.Should().BeNull();
|
||||
@@ -153,7 +167,7 @@ public class RegistrySourceServiceTests
|
||||
var request = new ListRegistrySourcesRequest(Type: RegistrySourceType.Harbor);
|
||||
|
||||
// Act
|
||||
var result = await _service.ListAsync(request, null);
|
||||
var result = await _service.ListAsync(request, "tenant-1");
|
||||
|
||||
// Assert
|
||||
result.Items.Should().HaveCount(2);
|
||||
@@ -188,7 +202,7 @@ public class RegistrySourceServiceTests
|
||||
Tags: null);
|
||||
|
||||
// Act
|
||||
var result = await _service.UpdateAsync(source.Id, request, "updater@example.com");
|
||||
var result = await _service.UpdateAsync(source.Id, request, "updater@example.com", "tenant-1");
|
||||
|
||||
// Assert
|
||||
result.Should().NotBeNull();
|
||||
@@ -213,7 +227,7 @@ public class RegistrySourceServiceTests
|
||||
WebhookSecretRefUri: null, Status: null, Tags: null);
|
||||
|
||||
// Act
|
||||
var result = await _service.UpdateAsync(id, request, "user");
|
||||
var result = await _service.UpdateAsync(id, request, "user", "tenant-1");
|
||||
|
||||
// Assert
|
||||
result.Should().BeNull();
|
||||
@@ -234,7 +248,7 @@ public class RegistrySourceServiceTests
|
||||
.Returns(Task.CompletedTask);
|
||||
|
||||
// Act
|
||||
var result = await _service.DeleteAsync(source.Id, "deleter@example.com");
|
||||
var result = await _service.DeleteAsync(source.Id, "deleter@example.com", "tenant-1");
|
||||
|
||||
// Assert
|
||||
result.Should().BeTrue();
|
||||
@@ -262,7 +276,7 @@ public class RegistrySourceServiceTests
|
||||
.Returns<RegistrySource, CancellationToken>((s, _) => Task.FromResult(s));
|
||||
|
||||
// Act
|
||||
var result = await _service.TriggerAsync(source.Id, "manual", null, "user@example.com");
|
||||
var result = await _service.TriggerAsync(source.Id, "manual", null, "user@example.com", "tenant-1");
|
||||
|
||||
// Assert
|
||||
result.Should().NotBeNull();
|
||||
@@ -288,7 +302,7 @@ public class RegistrySourceServiceTests
|
||||
.Returns<RegistrySource, CancellationToken>((s, _) => Task.FromResult(s));
|
||||
|
||||
// Act
|
||||
var result = await _service.PauseAsync(source.Id, "Maintenance", "admin@example.com");
|
||||
var result = await _service.PauseAsync(source.Id, "Maintenance", "admin@example.com", "tenant-1");
|
||||
|
||||
// Assert
|
||||
result.Should().NotBeNull();
|
||||
@@ -312,7 +326,7 @@ public class RegistrySourceServiceTests
|
||||
.Returns<RegistrySource, CancellationToken>((s, _) => Task.FromResult(s));
|
||||
|
||||
// Act
|
||||
var result = await _service.ResumeAsync(source.Id, "admin@example.com");
|
||||
var result = await _service.ResumeAsync(source.Id, "admin@example.com", "tenant-1");
|
||||
|
||||
// Assert
|
||||
result.Should().NotBeNull();
|
||||
@@ -337,7 +351,7 @@ public class RegistrySourceServiceTests
|
||||
.ReturnsAsync(runs);
|
||||
|
||||
// Act
|
||||
var result = await _service.GetRunHistoryAsync(sourceId, 50);
|
||||
var result = await _service.GetRunHistoryAsync(sourceId, 50, "tenant-1");
|
||||
|
||||
// Assert
|
||||
result.Should().HaveCount(3);
|
||||
@@ -348,23 +362,39 @@ public class RegistrySourceServiceTests
|
||||
|
||||
private static RegistrySource CreateTestSource(RegistrySourceType type = RegistrySourceType.Harbor) => new()
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Id = Guid.Parse("11111111-1111-1111-1111-111111111111"),
|
||||
Name = "Test Registry",
|
||||
Type = type,
|
||||
RegistryUrl = "https://test-registry.example.com",
|
||||
Status = RegistrySourceStatus.Pending,
|
||||
TriggerMode = RegistryTriggerMode.Manual
|
||||
TriggerMode = RegistryTriggerMode.Manual,
|
||||
CreatedAt = FixedNow,
|
||||
UpdatedAt = FixedNow,
|
||||
TenantId = "tenant-1"
|
||||
};
|
||||
|
||||
private static RegistrySourceRun CreateTestRun(Guid sourceId) => new()
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Id = Guid.Parse("22222222-2222-2222-2222-222222222222"),
|
||||
SourceId = sourceId,
|
||||
Status = RegistryRunStatus.Completed,
|
||||
TriggerType = "manual",
|
||||
StartedAt = DateTimeOffset.UtcNow.AddMinutes(-5),
|
||||
CompletedAt = DateTimeOffset.UtcNow
|
||||
StartedAt = FixedNow.AddMinutes(-5),
|
||||
CompletedAt = FixedNow
|
||||
};
|
||||
|
||||
private static QueueGuidProvider CreateGuidProvider()
|
||||
{
|
||||
return new QueueGuidProvider(new[]
|
||||
{
|
||||
Guid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"),
|
||||
Guid.Parse("bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"),
|
||||
Guid.Parse("cccccccc-cccc-cccc-cccc-cccccccccccc")
|
||||
});
|
||||
}
|
||||
|
||||
private static DateTimeOffset FixedNow =>
|
||||
DateTimeOffset.Parse("2025-12-29T12:00:00Z", CultureInfo.InvariantCulture);
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user