@@ -52,13 +52,27 @@ def test_no_header(self):
52
52
response = server .get ("" )
53
53
self ._assert_ok (response , {})
54
54
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
+
55
62
def test_header_with_no_value (self ):
56
63
app = client_feature_flags .ClientFeatureFlagsMiddleware (self ._echo_app )
57
64
server = werkzeug_test .Client (app , wrappers .Response )
58
65
59
66
response = server .get ("" , headers = [("X-TensorBoard-Feature-Flags" , "" )])
60
67
self ._assert_ok (response , {})
61
68
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
+
62
76
def test_header_with_no_flags (self ):
63
77
app = client_feature_flags .ClientFeatureFlagsMiddleware (self ._echo_app )
64
78
server = werkzeug_test .Client (app , wrappers .Response )
@@ -68,6 +82,15 @@ def test_header_with_no_flags(self):
68
82
)
69
83
self ._assert_ok (response , {})
70
84
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
+
71
94
def test_header_with_client_feature_flags (self ):
72
95
app = client_feature_flags .ClientFeatureFlagsMiddleware (self ._echo_app )
73
96
server = werkzeug_test .Client (app , wrappers .Response )
@@ -90,6 +113,25 @@ def test_header_with_client_feature_flags(self):
90
113
},
91
114
)
92
115
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
+
93
135
def test_header_with_json_not_decodable (self ):
94
136
app = client_feature_flags .ClientFeatureFlagsMiddleware (self ._echo_app )
95
137
server = werkzeug_test .Client (app , wrappers .Response )
@@ -107,6 +149,20 @@ def test_header_with_json_not_decodable(self):
107
149
],
108
150
)
109
151
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
+
110
166
def test_header_with_json_not_dict (self ):
111
167
app = client_feature_flags .ClientFeatureFlagsMiddleware (self ._echo_app )
112
168
server = werkzeug_test .Client (app , wrappers .Response )
@@ -124,6 +180,43 @@ def test_header_with_json_not_dict(self):
124
180
],
125
181
)
126
182
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
+
127
220
128
221
if __name__ == "__main__" :
129
222
tb_test .main ()
0 commit comments