@@ -837,6 +837,102 @@ TEST(Context, ConnectionAttributes) {
837837 EXPECT_TRUE (Protobuf::util::MessageDifferencer::Equals (*value.value ().MessageOrDie (),
838838 upstream_locality));
839839 }
840+
841+ // Test OID map properties
842+ {
843+ // Create maps of OIDs to values
844+ std::map<std::string, std::string> local_oid_map = {
845+ {" 1.2.840.113549.1.9.1" , " test@example.com" },
846+ {" 2.5.4.10" , " Test Organization" }
847+ };
848+
849+ std::map<std::string, std::string> peer_oid_map = {
850+ {" 1.2.840.113549.1.9.1" , " peer@example.com" },
851+ {" 2.5.4.11" , " Test OU" }
852+ };
853+
854+ // Set up expectations for OID maps
855+ EXPECT_CALL (*downstream_ssl_info, oidMapLocalCertificate ())
856+ .WillRepeatedly (ReturnRef (local_oid_map));
857+ EXPECT_CALL (*downstream_ssl_info, oidMapPeerCertificate ())
858+ .WillRepeatedly (ReturnRef (peer_oid_map));
859+ EXPECT_CALL (*upstream_ssl_info, oidMapLocalCertificate ())
860+ .WillRepeatedly (ReturnRef (local_oid_map));
861+ EXPECT_CALL (*upstream_ssl_info, oidMapPeerCertificate ())
862+ .WillRepeatedly (ReturnRef (peer_oid_map));
863+
864+ // Test downstream local OID map
865+ {
866+ auto value = connection[CelValue::CreateStringView (OidMapLocalCertificate)];
867+ EXPECT_TRUE (value.has_value ());
868+ ASSERT_TRUE (value.value ().IsMap ());
869+ auto & map = *value.value ().MapOrDie ();
870+
871+ auto email = map[CelValue::CreateStringView (" 1.2.840.113549.1.9.1" )];
872+ EXPECT_TRUE (email.has_value ());
873+ EXPECT_TRUE (email.value ().IsString ());
874+ EXPECT_EQ (" test@example.com" , email.value ().StringOrDie ().value ());
875+
876+ auto org = map[CelValue::CreateStringView (" 2.5.4.10" )];
877+ EXPECT_TRUE (org.has_value ());
878+ EXPECT_TRUE (org.value ().IsString ());
879+ EXPECT_EQ (" Test Organization" , org.value ().StringOrDie ().value ());
880+ }
881+
882+ // Test downstream peer OID map
883+ {
884+ auto value = connection[CelValue::CreateStringView (OidMapPeerCertificate)];
885+ EXPECT_TRUE (value.has_value ());
886+ ASSERT_TRUE (value.value ().IsMap ());
887+ auto & map = *value.value ().MapOrDie ();
888+
889+ auto email = map[CelValue::CreateStringView (" 1.2.840.113549.1.9.1" )];
890+ EXPECT_TRUE (email.has_value ());
891+ EXPECT_TRUE (email.value ().IsString ());
892+ EXPECT_EQ (" peer@example.com" , email.value ().StringOrDie ().value ());
893+
894+ auto ou = map[CelValue::CreateStringView (" 2.5.4.11" )];
895+ EXPECT_TRUE (ou.has_value ());
896+ EXPECT_TRUE (ou.value ().IsString ());
897+ EXPECT_EQ (" Test OU" , ou.value ().StringOrDie ().value ());
898+ }
899+
900+ // Test upstream local OID map
901+ {
902+ auto value = upstream[CelValue::CreateStringView (OidMapLocalCertificate)];
903+ EXPECT_TRUE (value.has_value ());
904+ ASSERT_TRUE (value.value ().IsMap ());
905+ auto & map = *value.value ().MapOrDie ();
906+
907+ auto email = map[CelValue::CreateStringView (" 1.2.840.113549.1.9.1" )];
908+ EXPECT_TRUE (email.has_value ());
909+ EXPECT_TRUE (email.value ().IsString ());
910+ EXPECT_EQ (" test@example.com" , email.value ().StringOrDie ().value ());
911+
912+ auto org = map[CelValue::CreateStringView (" 2.5.4.10" )];
913+ EXPECT_TRUE (org.has_value ());
914+ EXPECT_TRUE (org.value ().IsString ());
915+ EXPECT_EQ (" Test Organization" , org.value ().StringOrDie ().value ());
916+ }
917+
918+ // Test upstream peer OID map
919+ {
920+ auto value = upstream[CelValue::CreateStringView (OidMapPeerCertificate)];
921+ EXPECT_TRUE (value.has_value ());
922+ ASSERT_TRUE (value.value ().IsMap ());
923+ auto & map = *value.value ().MapOrDie ();
924+
925+ auto email = map[CelValue::CreateStringView (" 1.2.840.113549.1.9.1" )];
926+ EXPECT_TRUE (email.has_value ());
927+ EXPECT_TRUE (email.value ().IsString ());
928+ EXPECT_EQ (" peer@example.com" , email.value ().StringOrDie ().value ());
929+
930+ auto ou = map[CelValue::CreateStringView (" 2.5.4.11" )];
931+ EXPECT_TRUE (ou.has_value ());
932+ EXPECT_TRUE (ou.value ().IsString ());
933+ EXPECT_EQ (" Test OU" , ou.value ().StringOrDie ().value ());
934+ }
935+ }
840936}
841937
842938TEST (Context, FilterStateAttributes) {
0 commit comments