Some checks failed
		
		
	
	Docs CI / lint-and-preview (push) Has been cancelled
				
			Build Test Deploy / build-test (push) Has been cancelled
				
			Build Test Deploy / authority-container (push) Has been cancelled
				
			Build Test Deploy / docs (push) Has been cancelled
				
			Build Test Deploy / deploy (push) Has been cancelled
				
			
		
			
				
	
	
		
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using StellaOps.Scanner.Core.Utility;
 | |
| using Xunit;
 | |
| 
 | |
| namespace StellaOps.Scanner.Core.Tests.Utility;
 | |
| 
 | |
| public sealed class ScannerIdentifiersTests
 | |
| {
 | |
|     [Fact]
 | |
|     public void CreateJobId_IsDeterministicAndCaseInsensitive()
 | |
|     {
 | |
|         var first = ScannerIdentifiers.CreateJobId("registry.example.com/repo:latest", "SHA256:ABC", "Tenant-A", "salt");
 | |
|         var second = ScannerIdentifiers.CreateJobId("REGISTRY.EXAMPLE.COM/REPO:latest", "sha256:abc", "tenant-a", "salt");
 | |
| 
 | |
|         Assert.Equal(first, second);
 | |
|     }
 | |
| 
 | |
|     [Fact]
 | |
|     public void CreateDeterministicHash_ProducesLowercaseHex()
 | |
|     {
 | |
|         var hash = ScannerIdentifiers.CreateDeterministicHash("scan", "abc", "123");
 | |
| 
 | |
|         Assert.Matches("^[0-9a-f]{64}$", hash);
 | |
|         Assert.Equal(hash, hash.ToLowerInvariant());
 | |
|     }
 | |
| 
 | |
|     [Fact]
 | |
|     public void NormalizeImageReference_LowercasesRegistryAndRepository()
 | |
|     {
 | |
|         var normalized = ScannerIdentifiers.NormalizeImageReference("Registry.Example.com/StellaOps/Scanner:1.0");
 | |
| 
 | |
|         Assert.Equal("registry.example.com/stellaops/scanner:1.0", normalized);
 | |
|     }
 | |
| }
 |