diff --git a/app/controllers/api/event_streams_controller.rb b/app/controllers/api/event_streams_controller.rb index ce35ab7f52..2179be9422 100644 --- a/app/controllers/api/event_streams_controller.rb +++ b/app/controllers/api/event_streams_controller.rb @@ -1,4 +1,11 @@ module Api class EventStreamsController < BaseController + def options + render_options(@req.collection, build_additional_fields) + end + + def build_additional_fields + {:timeline_events => EventStream.timeline_options} + end end end diff --git a/spec/requests/event_streams_spec.rb b/spec/requests/event_streams_spec.rb index 8f05a82b23..b2c487ce32 100644 --- a/spec/requests/event_streams_spec.rb +++ b/spec/requests/event_streams_spec.rb @@ -162,4 +162,24 @@ expect(response).to have_http_status(:forbidden) end end + + describe 'OPTIONS /api/event_streams' do + it 'returns expected and additional attributes' do + MiqEventDefinitionSet.seed + options(api_event_streams_url) + + expect_options_results(:event_streams) + + body = response.parsed_body + expect(body["data"].keys).to eq(["timeline_events"]) + expect(body["data"]["timeline_events"].keys.sort).to eq(%w[EmsEvent MiqEvent]) + expect(body["data"]["timeline_events"]["EmsEvent"].keys.sort).to eq(%w[description group_levels group_names]) + expect(body["data"]["timeline_events"]["EmsEvent"]["group_names"].keys.sort).to include("addition", "other", "security") + expect(body["data"]["timeline_events"]["EmsEvent"]["group_levels"].keys.sort).to eq(%w[critical detail warning]) + + expect(body["data"]["timeline_events"]["MiqEvent"].keys.sort).to eq(%w[description group_levels group_names]) + expect(body["data"]["timeline_events"]["MiqEvent"]["group_names"].keys.sort).to include("auth_validation", "other", "tags") + expect(body["data"]["timeline_events"]["MiqEvent"]["group_levels"].keys.sort).to eq(%w[detail failure success]) + end + end end