Skip to content

Commit 7429b56

Browse files
author
Cecylia Borek
committed
fix csc apps test
1 parent 99168f6 commit 7429b56

File tree

1 file changed

+62
-7
lines changed

1 file changed

+62
-7
lines changed

tests/searchcommands/test_csc_apps.py

Lines changed: 62 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)