Add tests and implement StubBearer authentication for Signer endpoints
	
		
			
	
		
	
	
		
	
		
			Some checks failed
		
		
	
	
		
			
				
	
				Docs CI / lint-and-preview (push) Has been cancelled
				
			
		
		
	
	
				
					
				
			
		
			Some checks failed
		
		
	
	Docs CI / lint-and-preview (push) Has been cancelled
				
			- Created SignerEndpointsTests to validate the SignDsse and VerifyReferrers endpoints. - Implemented StubBearerAuthenticationDefaults and StubBearerAuthenticationHandler for token-based authentication. - Developed ConcelierExporterClient for managing Trivy DB settings and export operations. - Added TrivyDbSettingsPageComponent for UI interactions with Trivy DB settings, including form handling and export triggering. - Implemented styles and HTML structure for Trivy DB settings page. - Created NotifySmokeCheck tool for validating Redis event streams and Notify deliveries.
This commit is contained in:
		| @@ -41,12 +41,13 @@ public sealed class MongoBootstrapper | ||||
|         { | ||||
|             ScannerStorageDefaults.Collections.Artifacts, | ||||
|             ScannerStorageDefaults.Collections.Images, | ||||
|             ScannerStorageDefaults.Collections.Layers, | ||||
|             ScannerStorageDefaults.Collections.Links, | ||||
|             ScannerStorageDefaults.Collections.Jobs, | ||||
|             ScannerStorageDefaults.Collections.LifecycleRules, | ||||
|             ScannerStorageDefaults.Collections.Migrations, | ||||
|         }; | ||||
|             ScannerStorageDefaults.Collections.Layers, | ||||
|             ScannerStorageDefaults.Collections.Links, | ||||
|             ScannerStorageDefaults.Collections.Jobs, | ||||
|             ScannerStorageDefaults.Collections.LifecycleRules, | ||||
|             ScannerStorageDefaults.Collections.RuntimeEvents, | ||||
|             ScannerStorageDefaults.Collections.Migrations, | ||||
|         }; | ||||
|  | ||||
|         using var cursor = await _database.ListCollectionNamesAsync(cancellationToken: cancellationToken).ConfigureAwait(false); | ||||
|         var existing = await cursor.ToListAsync(cancellationToken).ConfigureAwait(false); | ||||
| @@ -67,11 +68,12 @@ public sealed class MongoBootstrapper | ||||
|     { | ||||
|         await EnsureArtifactIndexesAsync(cancellationToken).ConfigureAwait(false); | ||||
|         await EnsureImageIndexesAsync(cancellationToken).ConfigureAwait(false); | ||||
|         await EnsureLayerIndexesAsync(cancellationToken).ConfigureAwait(false); | ||||
|         await EnsureLinkIndexesAsync(cancellationToken).ConfigureAwait(false); | ||||
|         await EnsureJobIndexesAsync(cancellationToken).ConfigureAwait(false); | ||||
|         await EnsureLifecycleIndexesAsync(cancellationToken).ConfigureAwait(false); | ||||
|     } | ||||
|         await EnsureLayerIndexesAsync(cancellationToken).ConfigureAwait(false); | ||||
|         await EnsureLinkIndexesAsync(cancellationToken).ConfigureAwait(false); | ||||
|         await EnsureJobIndexesAsync(cancellationToken).ConfigureAwait(false); | ||||
|         await EnsureLifecycleIndexesAsync(cancellationToken).ConfigureAwait(false); | ||||
|         await EnsureRuntimeEventIndexesAsync(cancellationToken).ConfigureAwait(false); | ||||
|     } | ||||
|  | ||||
|     private Task EnsureArtifactIndexesAsync(CancellationToken cancellationToken) | ||||
|     { | ||||
| @@ -176,6 +178,32 @@ public sealed class MongoBootstrapper | ||||
|                 .Ascending(x => x.Class), | ||||
|             new CreateIndexOptions { Name = "lifecycle_artifact_class", Unique = true }); | ||||
|  | ||||
|         return collection.Indexes.CreateManyAsync(new[] { expiresIndex, artifactIndex }, cancellationToken); | ||||
|     } | ||||
| } | ||||
|         return collection.Indexes.CreateManyAsync(new[] { expiresIndex, artifactIndex }, cancellationToken); | ||||
|     } | ||||
|  | ||||
|     private Task EnsureRuntimeEventIndexesAsync(CancellationToken cancellationToken) | ||||
|     { | ||||
|         var collection = _database.GetCollection<RuntimeEventDocument>(ScannerStorageDefaults.Collections.RuntimeEvents); | ||||
|         var models = new List<CreateIndexModel<RuntimeEventDocument>> | ||||
|         { | ||||
|             new( | ||||
|                 Builders<RuntimeEventDocument>.IndexKeys.Ascending(x => x.EventId), | ||||
|                 new CreateIndexOptions { Name = "runtime_event_eventId", Unique = true }), | ||||
|             new( | ||||
|                 Builders<RuntimeEventDocument>.IndexKeys | ||||
|                     .Ascending(x => x.Tenant) | ||||
|                     .Ascending(x => x.Node) | ||||
|                     .Ascending(x => x.When), | ||||
|                 new CreateIndexOptions { Name = "runtime_event_tenant_node_when" }), | ||||
|             new( | ||||
|                 Builders<RuntimeEventDocument>.IndexKeys.Ascending(x => x.ExpiresAt), | ||||
|                 new CreateIndexOptions | ||||
|                 { | ||||
|                     Name = "runtime_event_expiresAt", | ||||
|                     ExpireAfter = TimeSpan.Zero | ||||
|                 }) | ||||
|         }; | ||||
|  | ||||
|         return collection.Indexes.CreateManyAsync(models, cancellationToken); | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user