@@ -20,6 +20,7 @@ import { login } from '../tasks/login';
2020import { request } from '../tasks/common' ;
2121
2222const INPUT_TEST_PACKAGE = 'input_package-1.0.0' ;
23+ const OTEL_INPUT_TEST_PACKAGE = 'otel_input_package-1.0.0' ;
2324
2425describe ( 'Input package with custom data stream type' , ( ) => {
2526 beforeEach ( ( ) => {
@@ -121,3 +122,127 @@ describe('Input package with custom data stream type', () => {
121122 cy . get ( '[data-test-subj="templateDetails"' ) . contains ( `${ dataStreamType } -${ datasetName } -*` ) ;
122123 } ) ;
123124} ) ;
125+
126+ describe ( 'OTel input package with custom data stream type' , ( ) => {
127+ beforeEach ( ( ) => {
128+ login ( ) ;
129+ } ) ;
130+
131+ const agentPolicyId = 'test-otel-input-package-policy' ;
132+ const agentPolicyName = 'Test input package policy' ;
133+ const packagePolicyName = 'input-package-policy' ;
134+ const datasetName = 'check' ; // Default from the package.
135+ const dataStreamType = 'logs' ;
136+
137+ before ( ( ) => {
138+ cy . task ( 'installTestPackage' , OTEL_INPUT_TEST_PACKAGE ) ;
139+
140+ request ( {
141+ method : 'POST' ,
142+ url : `/api/fleet/agent_policies` ,
143+ body : {
144+ id : agentPolicyId ,
145+ name : agentPolicyName ,
146+ description : 'desc' ,
147+ namespace : 'default' ,
148+ monitoring_enabled : [ ] ,
149+ } ,
150+ headers : { 'kbn-xsrf' : 'cypress' , 'Elastic-Api-Version' : `${ API_VERSIONS . public . v1 } ` } ,
151+ } ) ;
152+ } ) ;
153+
154+ after ( ( ) => {
155+ cleanupAgentPolicies ( ) ;
156+ cy . task ( 'uninstallTestPackage' , OTEL_INPUT_TEST_PACKAGE ) ;
157+ } ) ;
158+
159+ it ( 'should successfully create a package policy' , ( ) => {
160+ cy . visit ( `/app/integrations/detail/${ OTEL_INPUT_TEST_PACKAGE } /overview` ) ;
161+ cy . getBySel ( ADD_INTEGRATION_POLICY_BTN ) . click ( ) ;
162+
163+ cy . getBySel ( POLICY_EDITOR . POLICY_NAME_INPUT ) . click ( ) . clear ( ) . type ( packagePolicyName ) ;
164+ cy . getBySel ( 'multiTextInput-http-endpoints-to-check' )
165+ . find ( '[data-test-subj="multiTextInputRow-0"]' )
166+ . click ( )
167+ . type ( 'https://www.elastic.co/integrations' ) ;
168+
169+ // Select logs data stream type.
170+ cy . get ( '[data-test-subj^="advancedStreamOptionsToggle"]' ) . click ( ) ;
171+ cy . get ( '[data-test-subj="packagePolicyDataStreamType"' )
172+ . find ( `label[for="${ dataStreamType } "]` )
173+ . click ( ) ;
174+
175+ cy . getBySel ( EXISTING_HOSTS_TAB ) . click ( ) ;
176+
177+ cy . getBySel ( POLICY_EDITOR . AGENT_POLICY_SELECT ) . click ( ) ;
178+ cy . getBySel ( 'agentPolicyMultiItem' ) . each ( ( $el ) => {
179+ if ( $el . text ( ) === agentPolicyName ) {
180+ $el . trigger ( 'click' ) ;
181+ }
182+ } ) ;
183+ cy . wait ( 1000 ) ; // wait for policy id to be set
184+ cy . getBySel ( CREATE_PACKAGE_POLICY_SAVE_BTN ) . click ( ) ;
185+
186+ cy . getBySel ( CONFIRM_MODAL . CANCEL_BUTTON ) . click ( ) ;
187+ } ) ;
188+
189+ it ( `agent policy configures the dataset and type` , ( ) => {
190+ cy . request ( {
191+ method : 'GET' ,
192+ url : `/api/fleet/agent_policies/${ agentPolicyId } /full` ,
193+ } ) . then ( ( { body } ) => {
194+ expect ( body . item ) . to . have . property ( 'processors' ) ;
195+ let routingTransform ;
196+ Object . entries ( body . item . processors ) . forEach ( ( [ name , config ] ) => {
197+ if ( ! name . match ( / t r a n s f o r m \/ .* - r o u t i n g / ) ) {
198+ return ;
199+ }
200+ routingTransform = config ;
201+ } ) ;
202+ expect ( routingTransform ) . to . deep . equal ( {
203+ log_statements : [
204+ {
205+ context : 'log' ,
206+ statements : [
207+ `set(attributes["data_stream.type"], "${ dataStreamType } ")` ,
208+ `set(attributes["data_stream.dataset"], "${ datasetName } ")` ,
209+ 'set(attributes["data_stream.namespace"], "default")' ,
210+ ] ,
211+ } ,
212+ ] ,
213+ } ) ;
214+ } ) ;
215+ } ) ;
216+
217+ it ( `${ dataStreamType } checkbox should be checked` , ( ) => {
218+ cy . visit ( `/app/integrations/detail/${ OTEL_INPUT_TEST_PACKAGE } /policies` ) ;
219+
220+ cy . getBySel ( INTEGRATION_NAME_LINK ) . contains ( packagePolicyName ) . click ( ) ;
221+
222+ cy . get ( 'button' ) . contains ( 'Change defaults' ) . click ( ) ;
223+ cy . get ( '[data-test-subj^="advancedStreamOptionsToggle"]' ) . click ( ) ;
224+ cy . get ( '[data-test-subj="packagePolicyDataStreamType"' )
225+ . find ( `input#${ dataStreamType } ` )
226+ . should ( 'be.checked' ) ;
227+ } ) ;
228+
229+ it ( 'should not allow to edit data stream type' , ( ) => {
230+ cy . visit ( `/app/integrations/detail/${ OTEL_INPUT_TEST_PACKAGE } /policies` ) ;
231+
232+ cy . getBySel ( INTEGRATION_NAME_LINK ) . contains ( packagePolicyName ) . click ( ) ;
233+
234+ cy . get ( 'button' ) . contains ( 'Change defaults' ) . click ( ) ;
235+ cy . get ( '[data-test-subj^="advancedStreamOptionsToggle"]' ) . click ( ) ;
236+ cy . get ( '[data-test-subj="packagePolicyDataStreamType"' )
237+ . find ( 'input' )
238+ . should ( 'have.length' , 3 )
239+ . each ( ( $el ) => cy . wrap ( $el ) . should ( 'be.disabled' ) ) ;
240+ } ) ;
241+
242+ it ( 'has an index template' , ( ) => {
243+ cy . visit ( `app/management/data/index_management/templates/${ dataStreamType } -${ datasetName } ` ) ;
244+
245+ // Check that the index pattern appears in the view.
246+ cy . get ( '[data-test-subj="templateDetails"' ) . contains ( `${ dataStreamType } -${ datasetName } .otel-*` ) ;
247+ } ) ;
248+ } ) ;
0 commit comments