@@ -51,13 +51,35 @@ public void AuthorizationHeaderShouldNotBeSetWithoutCredentials()
5151 [ Fact ]
5252 public void TenantHeaderShouldBeCorrect ( )
5353 {
54- var tenantId = "lokitenant" ;
55- using var client = new TestLokiHttpClient ( ) ;
56-
57- client . SetTenant ( tenantId ) ;
58-
59- var tenantHeaders = client . Client . DefaultRequestHeaders . GetValues ( "X-Scope-OrgID" ) . ToList ( ) ;
60- tenantHeaders . ShouldBeEquivalentTo ( new List < string > { "lokitenant" } ) ;
54+ // List of test cases with tenant IDs and their expected validity
55+ var validTenantIds = new List < ( string TenantId , bool IsValid ) >
56+ {
57+ ( "tenant123" , true ) , // Only alphanumeric characters
58+ ( "tenant-123" , true ) , // Valid special characters
59+ ( "tenant..123" , false ) , // Double period ".." is not allowed
60+ ( "." , false ) , // Single period is not allowed
61+ ( "tenant!_*.123'()" , true ) , // All allowed special characters
62+ ( "tenant-123..." , false ) , // Multiple periods at the end are not allowed
63+ ( "tenant123456...test" , false ) , // Ends with a period "."
64+ ( "tenant1234567890!@" , false ) , // "@" is not allowed
65+ } ;
66+
67+ foreach ( var ( tenantId , isValid ) in validTenantIds )
68+ {
69+ using var client = new TestLokiHttpClient ( ) ;
70+
71+ if ( isValid )
72+ {
73+ client . SetTenant ( tenantId ) ;
74+
75+ var tenantHeaders = client . Client . DefaultRequestHeaders . GetValues ( "X-Scope-OrgID" ) . ToList ( ) ;
76+ tenantHeaders . ShouldBeEquivalentTo ( new List < string > { tenantId } ) ;
77+ }
78+ else
79+ {
80+ Should . Throw < ArgumentException > ( ( ) => client . SetTenant ( tenantId ) ) ;
81+ }
82+ }
6183 }
6284
6385 [ Fact ]
@@ -78,4 +100,24 @@ public void TenantHeaderShouldThrowAnExceptionOnTenantIdAgainstRule()
78100
79101 Should . Throw < ArgumentException > ( ( ) => client . SetTenant ( tenantId ) ) ;
80102 }
103+
104+ [ Fact ]
105+ public void SetDefaultHeadersShouldSetHeaderCorrectly ( )
106+ {
107+ // Arrange
108+ using var httpClient = new HttpClient ( ) ;
109+ var client = new TestLokiHttpClient ( httpClient ) ;
110+
111+ var headersToSet = new Dictionary < string , string >
112+ {
113+ { "Custom-Header" , "HeaderValue" }
114+ } ;
115+
116+ // Act
117+ client . SetDefaultHeaders ( headersToSet ) ;
118+
119+ // Assert
120+ httpClient . DefaultRequestHeaders . Contains ( "Custom-Header" ) . ShouldBeTrue ( ) ;
121+ httpClient . DefaultRequestHeaders . GetValues ( "Custom-Header" ) . ShouldBe ( new [ ] { "HeaderValue" } ) ;
122+ }
81123}
0 commit comments