@@ -20,6 +20,7 @@ import { login } from '../tasks/login';
20
20
import { request } from '../tasks/common' ;
21
21
22
22
const INPUT_TEST_PACKAGE = 'input_package-1.0.0' ;
23
+ const OTEL_INPUT_TEST_PACKAGE = 'otel_input_package-1.0.0' ;
23
24
24
25
describe ( 'Input package with custom data stream type' , ( ) => {
25
26
beforeEach ( ( ) => {
@@ -121,3 +122,127 @@ describe('Input package with custom data stream type', () => {
121
122
cy . get ( '[data-test-subj="templateDetails"' ) . contains ( `${ dataStreamType } -${ datasetName } -*` ) ;
122
123
} ) ;
123
124
} ) ;
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