@@ -98,6 +98,52 @@ def test_invalid_yaml(self):
9898 str (e .exception ),
9999 )
100100
101+ def test_parse_context_variable_config (self ):
102+ config = cel .NewEnvConfigFromYaml ("""
103+ context_variable:
104+ type_name: "cel.expr.conformance.proto2.TestAllTypes"
105+ """ )
106+ self .assertEqual (
107+ config .context_type , "cel.expr.conformance.proto2.TestAllTypes"
108+ )
109+
110+ def test_parse_context_variable_config_alternative_syntax (self ):
111+ config = cel .NewEnvConfigFromYaml ("""
112+ context_variable:
113+ type: "cel.expr.conformance.proto2.TestAllTypes"
114+ """ )
115+ self .assertEqual (
116+ config .context_type , "cel.expr.conformance.proto2.TestAllTypes"
117+ )
118+
119+ def test_parse_context_variable_malformed (self ):
120+ with self .assertRaisesRegex (
121+ Exception , "Node 'context_variable' is not a map"
122+ ):
123+ cel .NewEnvConfigFromYaml ("context_variable: 123" )
124+
125+ def test_parse_context_variable_malformed2 (self ):
126+ with self .assertRaisesRegex (
127+ Exception , "Node 'context_variable' does not have a valid type"
128+ ):
129+ cel .NewEnvConfigFromYaml ("""
130+ context_variable:
131+ type:
132+ foo: bar
133+ """ )
134+
135+ def test_context_variable_basic (self ):
136+ config = cel .NewEnvConfigFromYaml ("""
137+ context_variable:
138+ type_name: "cel.expr.conformance.proto2.TestAllTypes"
139+ """ )
140+ env = cel .NewEnv (config = config )
141+ ast = env .compile ("single_int32 > 10" )
142+ self .assertIsNotNone (ast )
143+
144+ with self .assertRaises (Exception ):
145+ env .compile ("non_existent_field > 10" )
146+
101147 def test_config_export_container (self ):
102148 env : cel .Env = cel .NewEnv (container = "test.container" )
103149 yaml : str = env .config ().to_yaml ()
0 commit comments