@@ -52,13 +52,27 @@ def test_no_header(self):
5252 response = server .get ("" )
5353 self ._assert_ok (response , {})
5454
55+ def test_no_query_string (self ):
56+ app = client_feature_flags .ClientFeatureFlagsMiddleware (self ._echo_app )
57+ server = werkzeug_test .Client (app , wrappers .Response )
58+
59+ response = server .get ("" )
60+ self ._assert_ok (response , {})
61+
5562 def test_header_with_no_value (self ):
5663 app = client_feature_flags .ClientFeatureFlagsMiddleware (self ._echo_app )
5764 server = werkzeug_test .Client (app , wrappers .Response )
5865
5966 response = server .get ("" , headers = [("X-TensorBoard-Feature-Flags" , "" )])
6067 self ._assert_ok (response , {})
6168
69+ def test_query_string_with_no_value (self ):
70+ app = client_feature_flags .ClientFeatureFlagsMiddleware (self ._echo_app )
71+ server = werkzeug_test .Client (app , wrappers .Response )
72+
73+ response = server .get ("" , query_string = {"tensorBoardFeatureFlags" : "" })
74+ self ._assert_ok (response , {})
75+
6276 def test_header_with_no_flags (self ):
6377 app = client_feature_flags .ClientFeatureFlagsMiddleware (self ._echo_app )
6478 server = werkzeug_test .Client (app , wrappers .Response )
@@ -68,6 +82,15 @@ def test_header_with_no_flags(self):
6882 )
6983 self ._assert_ok (response , {})
7084
85+ def test_query_string_with_no_flags (self ):
86+ app = client_feature_flags .ClientFeatureFlagsMiddleware (self ._echo_app )
87+ server = werkzeug_test .Client (app , wrappers .Response )
88+
89+ response = server .get (
90+ "" , query_string = {"tensorBoardFeatureFlags" : "{}" }
91+ )
92+ self ._assert_ok (response , {})
93+
7194 def test_header_with_client_feature_flags (self ):
7295 app = client_feature_flags .ClientFeatureFlagsMiddleware (self ._echo_app )
7396 server = werkzeug_test .Client (app , wrappers .Response )
@@ -90,6 +113,25 @@ def test_header_with_client_feature_flags(self):
90113 },
91114 )
92115
116+ def test_query_string_with_client_feature_flags (self ):
117+ app = client_feature_flags .ClientFeatureFlagsMiddleware (self ._echo_app )
118+ server = werkzeug_test .Client (app , wrappers .Response )
119+
120+ response = server .get (
121+ "" ,
122+ query_string = {
123+ "tensorBoardFeatureFlags" : '{"str": "hi", "bool": true, "strArr": ["one", "two"]}'
124+ },
125+ )
126+ self ._assert_ok (
127+ response ,
128+ {
129+ "str" : "hi" ,
130+ "bool" : True ,
131+ "strArr" : ["one" , "two" ],
132+ },
133+ )
134+
93135 def test_header_with_json_not_decodable (self ):
94136 app = client_feature_flags .ClientFeatureFlagsMiddleware (self ._echo_app )
95137 server = werkzeug_test .Client (app , wrappers .Response )
@@ -107,6 +149,20 @@ def test_header_with_json_not_decodable(self):
107149 ],
108150 )
109151
152+ def test_query_string_with_json_not_decodable (self ):
153+ app = client_feature_flags .ClientFeatureFlagsMiddleware (self ._echo_app )
154+ server = werkzeug_test .Client (app , wrappers .Response )
155+
156+ with self .assertRaisesRegex (
157+ errors .InvalidArgumentError , "cannot be JSON decoded."
158+ ):
159+ response = server .get (
160+ "" ,
161+ query_string = {
162+ "tensorBoardFeatureFlags" : "some_invalid_json {} {}" ,
163+ },
164+ )
165+
110166 def test_header_with_json_not_dict (self ):
111167 app = client_feature_flags .ClientFeatureFlagsMiddleware (self ._echo_app )
112168 server = werkzeug_test .Client (app , wrappers .Response )
@@ -124,6 +180,43 @@ def test_header_with_json_not_dict(self):
124180 ],
125181 )
126182
183+ def test_query_string_with_json_not_dict (self ):
184+ app = client_feature_flags .ClientFeatureFlagsMiddleware (self ._echo_app )
185+ server = werkzeug_test .Client (app , wrappers .Response )
186+
187+ with self .assertRaisesRegex (
188+ errors .InvalidArgumentError , "cannot be decoded to a dict"
189+ ):
190+ response = server .get (
191+ "" ,
192+ query_string = {
193+ "tensorBoardFeatureFlags" : '["not", "a", "dict"]' ,
194+ },
195+ )
196+
197+ def test_header_feature_flags_take_precedence (self ):
198+ app = client_feature_flags .ClientFeatureFlagsMiddleware (self ._echo_app )
199+ server = werkzeug_test .Client (app , wrappers .Response )
200+
201+ response = server .get (
202+ "" ,
203+ headers = [
204+ (
205+ "X-TensorBoard-Feature-Flags" ,
206+ '{"a": "1", "b": "2"}' ,
207+ )
208+ ],
209+ query_string = {"tensorBoardFeatureFlags" : '{"a": "2", "c": "3"}' },
210+ )
211+ self ._assert_ok (
212+ response ,
213+ {
214+ "a" : "1" ,
215+ "b" : "2" ,
216+ "c" : "3" ,
217+ },
218+ )
219+
127220
128221if __name__ == "__main__" :
129222 tb_test .main ()
0 commit comments