@@ -64,17 +64,72 @@ def test_eventing_app(self):
6464 self .assertEqual (state .title , "eventing_app" )
6565
6666 jobs = self .service .jobs
67+ stream = jobs .oneshot (
68+ 'search index="_internal" | fields status | head 4000 | eventingcsc status=200 | head 10' ,
69+ output_mode = 'json' ,
70+ )
71+ reader = results .JSONResultsReader (stream )
72+ items = list (reader )
73+
74+ actual_results = [item for item in items if isinstance (item , dict )]
75+ informational_messages = [
76+ item for item in items if isinstance (item , results .Message )
77+ ]
78+
79+ self .assertTrue (len (actual_results ) > 0 )
80+
81+ fatal_messages = [
82+ msg for msg in informational_messages if msg .type in ['FATAL' , 'ERROR' ]
83+ ]
84+ self .assertEqual (
85+ len (fatal_messages ),
86+ 0 ,
87+ f"Should not have FATAL/ERROR messages, but got: { [msg .message for msg in fatal_messages ]} " ,
88+ )
89+
90+ first_result = actual_results [0 ]
91+ self .assertIn ('status' , first_result )
92+ self .assertEqual (first_result ['status' ], '200' )
93+
94+ def test_eventing_app_malformed_query_missing_field (self ):
95+ app_name = "eventing_app"
96+ # Fetch the app
97+ app = self .service .apps [app_name ]
98+ app .refresh ()
99+
100+ jobs = self .service .jobs
101+ # wrong search query because `status` field is not being passed to eventing app
67102 stream = jobs .oneshot (
68103 'search index="_internal" | head 4000 | eventingcsc status=200 | head 10' ,
69- output_mode = " json" ,
104+ output_mode = ' json' ,
70105 )
71- result = results .JSONResultsReader (stream )
72- ds = list (result )
106+ reader = results .JSONResultsReader (stream )
107+ items = list (reader )
108+
109+ self .assertTrue (len (items ) > 0 , "Should have at least one item (error message)" )
73110
74- self .assertEqual (result .is_preview , False )
75- self .assertTrue (isinstance (ds [0 ], (dict , results .Message )))
76- nonmessages = [d for d in ds if isinstance (d , dict )]
77- self .assertTrue (len (nonmessages ) <= 10 )
111+ actual_results = [item for item in items if isinstance (item , dict )]
112+ informational_messages = [
113+ item for item in items if isinstance (item , results .Message )
114+ ]
115+
116+ self .assertTrue (len (informational_messages ) > 0 )
117+
118+ error_messages = [
119+ msg for msg in informational_messages if msg .type in ['FATAL' , 'ERROR' ]
120+ ]
121+ self .assertTrue (len (error_messages ) > 0 )
122+
123+ error_message = error_messages [0 ]
124+ self .assertIn ('eventingcsc' , error_message .message )
125+ self .assertIn ('status' , error_message .message )
126+ self .assertIn ('KeyError' , error_message .message )
127+
128+ self .assertEqual (
129+ len (actual_results ),
130+ 0 ,
131+ f"Should not have actual results, but got: { actual_results } " ,
132+ )
78133
79134 def test_generating_app (self ):
80135 app_name = "generating_app"
0 commit comments