11package org .hypertrace .core .grpcutils .context ;
22
3+ import static org .hypertrace .core .grpcutils .context .RequestContextConstants .TENANT_ID_HEADER_KEY ;
34import static org .junit .jupiter .api .Assertions .assertEquals ;
45import static org .junit .jupiter .api .Assertions .assertNotEquals ;
56import static org .junit .jupiter .api .Assertions .assertSame ;
1011import static org .mockito .Mockito .times ;
1112import static org .mockito .Mockito .verify ;
1213
14+ import java .util .List ;
1315import java .util .function .Consumer ;
1416import java .util .function .Function ;
1517import java .util .function .Supplier ;
@@ -20,7 +22,8 @@ class DefaultContextualKeyTest {
2022 @ Test
2123 void callsProvidedMethodsInContext () {
2224 RequestContext testContext = RequestContext .forTenantId ("test-tenant" );
23- ContextualKey <String > key = new DefaultContextualKey <>(testContext , "input" );
25+ ContextualKey <String > key =
26+ new DefaultContextualKey <>(testContext , "input" , List .of (TENANT_ID_HEADER_KEY ));
2427
2528 Function <String , String > testFunction =
2629 value ->
@@ -40,7 +43,8 @@ void callsProvidedMethodsInContext() {
4043 @ Test
4144 void runsProvidedMethodInContext () {
4245 RequestContext testContext = RequestContext .forTenantId ("test-tenant" );
43- ContextualKey <String > key = new DefaultContextualKey <>(testContext , "input" );
46+ ContextualKey <String > key =
47+ new DefaultContextualKey <>(testContext , "input" , List .of (TENANT_ID_HEADER_KEY ));
4448
4549 Consumer <String > testConsumer = mock (Consumer .class );
4650
@@ -67,19 +71,43 @@ void matchesEquivalentKeysOnly() {
6771 RequestContext tenant2Context = RequestContext .forTenantId ("second" );
6872
6973 assertEquals (
70- new DefaultContextualKey <>(tenant1Context , "input" ),
71- new DefaultContextualKey <>(tenant1Context , "input" ));
74+ new DefaultContextualKey <>(tenant1Context , "input" , List . of ( TENANT_ID_HEADER_KEY ) ),
75+ new DefaultContextualKey <>(tenant1Context , "input" , List . of ( TENANT_ID_HEADER_KEY ) ));
7276
7377 assertEquals (
74- new DefaultContextualKey <>(tenant1Context , "input" ),
75- new DefaultContextualKey <>(alternateTenant1Context , "input" ));
78+ new DefaultContextualKey <>(tenant1Context , "input" , List .of (TENANT_ID_HEADER_KEY )),
79+ new DefaultContextualKey <>(
80+ alternateTenant1Context , "input" , List .of (TENANT_ID_HEADER_KEY )));
7681
7782 assertNotEquals (
78- new DefaultContextualKey <>(tenant1Context , "input" ),
79- new DefaultContextualKey <>(tenant2Context , "input" ));
83+ new DefaultContextualKey <>(tenant1Context , "input" , List . of ( TENANT_ID_HEADER_KEY ) ),
84+ new DefaultContextualKey <>(tenant2Context , "input" , List . of ( TENANT_ID_HEADER_KEY ) ));
8085
8186 assertNotEquals (
82- new DefaultContextualKey <>(tenant1Context , "input" ),
83- new DefaultContextualKey <>(tenant1Context , "other input" ));
87+ new DefaultContextualKey <>(tenant1Context , "input" , List .of (TENANT_ID_HEADER_KEY )),
88+ new DefaultContextualKey <>(tenant1Context , "other input" , List .of (TENANT_ID_HEADER_KEY )));
89+ }
90+
91+ @ Test
92+ void matchesMultipleHeaders () {
93+ RequestContext firstContext = RequestContext .forTenantId ("tenant" );
94+ firstContext .add ("secondHeader" , "second" );
95+ firstContext .add ("thirdHeader" , "third" );
96+
97+ RequestContext secondContext = RequestContext .forTenantId ("tenant" );
98+ secondContext .add ("secondHeader" , "second" );
99+ secondContext .add ("thirdHeader" , "fourth" );
100+
101+ assertEquals (
102+ new DefaultContextualKey <>(
103+ firstContext , "input" , List .of (TENANT_ID_HEADER_KEY , "secondHeader" )),
104+ new DefaultContextualKey <>(
105+ secondContext , "input" , List .of (TENANT_ID_HEADER_KEY , "secondHeader" )));
106+
107+ assertNotEquals (
108+ new DefaultContextualKey <>(
109+ firstContext , "input" , List .of (TENANT_ID_HEADER_KEY , "secondHeader" , "thirdHeader" )),
110+ new DefaultContextualKey <>(
111+ secondContext , "input" , List .of (TENANT_ID_HEADER_KEY , "secondHeader" , "thirdHeader" )));
84112 }
85113}
0 commit comments