@@ -33,6 +33,7 @@ import {
3333 parseAlertConfig ,
3434 parseFields ,
3535 parseSchedule ,
36+ parseSpaces ,
3637} from '../../src/push/monitor' ;
3738import { Server } from '../utils/server' ;
3839import { createTestMonitor } from '../utils/test-config' ;
@@ -85,6 +86,7 @@ describe('Monitors', () => {
8586 locations : [ 'europe-west2-a' , 'australia-southeast1-a' ] ,
8687 privateLocations : [ 'germany' ] ,
8788 fields : { area : 'website' } ,
89+ spaces : [ 'test' ] ,
8890 } ) ;
8991 } ) ;
9092
@@ -105,8 +107,12 @@ describe('Monitors', () => {
105107 match : 'test' ,
106108 } ,
107109 fields : { area : 'website' } ,
110+ spaces : [ 'test' ] ,
111+ } ) ;
112+ monitor . update ( {
113+ locations : [ 'brazil' ] ,
114+ fields : { env : 'dev' } ,
108115 } ) ;
109- monitor . update ( { locations : [ 'brazil' ] , fields : { env : 'dev' } } ) ;
110116 const { schemas : schemas1 } = await buildMonitorSchema ( [ monitor ] , true ) ;
111117 expect ( schemas1 [ 0 ] . hash ) . not . toEqual ( schemas [ 0 ] . hash ) ;
112118 expect ( schemas1 [ 0 ] . fields ) . toEqual ( {
@@ -497,6 +503,57 @@ heartbeat.monitors:
497503 ` ) ;
498504
499505 const [ mon ] = await createLightweightMonitors ( PROJECT_DIR , {
506+ space : 'default' ,
507+ auth : 'foo' ,
508+ params : { foo : 'bar' } ,
509+ kibanaVersion : '8.8.0' ,
510+ locations : [ 'australia_east' ] ,
511+ tags : [ 'gtag1' , 'gtag2' ] ,
512+ privateLocations : [ 'gbaz' ] ,
513+ schedule : 10 ,
514+ retestOnFailure : false ,
515+ spaces : [ 'default' ] ,
516+ } ) ;
517+
518+ expect ( mon . config ) . toEqual ( {
519+ id : 'test-icmp' ,
520+ name : 'test-icmp' ,
521+ locations : [ 'australia_east' ] ,
522+ privateLocations : [ 'baz' ] ,
523+ type : 'icmp' ,
524+ params : { foo : 'bar' } ,
525+ schedule : 5 ,
526+ tags : [ 'ltag1' , 'ltag2' ] ,
527+ retestOnFailure : false ,
528+ fields : {
529+ baz : 'qux' ,
530+ foo : 'bar' ,
531+ } ,
532+ spaces : [ 'default' ] ,
533+ } ) ;
534+ } ) ;
535+
536+ it ( 'supports spaces in config' , async ( ) => {
537+ await writeHBFile ( `
538+ heartbeat.monitors:
539+ - type: icmp
540+ schedule: @every 5m
541+ id: "test-icmp"
542+ name: "test-icmp"
543+ privateLocations:
544+ - baz
545+ tags:
546+ - ltag1
547+ - ltag2
548+ fields.foo: bar
549+ fields.baz: qux
550+ spaces:
551+ - space1
552+ - space2
553+ ` ) ;
554+
555+ const [ mon ] = await createLightweightMonitors ( PROJECT_DIR , {
556+ space : 'default' ,
500557 auth : 'foo' ,
501558 params : { foo : 'bar' } ,
502559 kibanaVersion : '8.8.0' ,
@@ -521,6 +578,7 @@ heartbeat.monitors:
521578 baz : 'qux' ,
522579 foo : 'bar' ,
523580 } ,
581+ spaces : [ 'default' , 'space1' , 'space2' ] ,
524582 } ) ;
525583 } ) ;
526584 } ) ;
@@ -677,4 +735,58 @@ heartbeat.monitors:
677735 expect ( result ) . toBeUndefined ( ) ;
678736 } ) ;
679737 } ) ;
738+
739+ describe ( 'parseSpaces' , ( ) => {
740+ it ( 'returns empty object if no spaces are defined' , ( ) => {
741+ expect ( parseSpaces ( { } , { } as any ) ) . toEqual ( { } ) ;
742+ expect ( parseSpaces ( { spaces : undefined } , { } as any ) ) . toEqual ( { } ) ;
743+ expect ( parseSpaces ( { } , { spaces : undefined } as any ) ) . toEqual ( { } ) ;
744+ } ) ;
745+
746+ it ( 'merges config and options spaces, including global space' , ( ) => {
747+ const config = { spaces : [ 'space1' ] } ;
748+ const options = { spaces : [ 'space2' ] , space : 'global' } ;
749+ expect ( parseSpaces ( config , options as any ) ) . toEqual ( {
750+ spaces : [ 'global' , 'space1' , 'space2' ] ,
751+ } ) ;
752+ } ) ;
753+
754+ it ( 'handles only config spaces' , ( ) => {
755+ expect ( parseSpaces ( { spaces : [ 'foo' ] } , { } as any ) ) . toEqual ( {
756+ spaces : [ 'foo' ] ,
757+ } ) ;
758+ } ) ;
759+
760+ it ( 'handles only options spaces' , ( ) => {
761+ expect ( parseSpaces ( { } , { spaces : [ 'bar' ] } as any ) ) . toEqual ( {
762+ spaces : [ 'bar' ] ,
763+ } ) ;
764+ } ) ;
765+
766+ it ( 'handles global space only' , ( ) => {
767+ expect ( parseSpaces ( { } , { space : 'default' } as any ) ) . toEqual ( { } ) ;
768+ } ) ;
769+
770+ it ( 'deduplicates spaces' , ( ) => {
771+ const config = { spaces : [ 'space1' , 'space2' ] } ;
772+ const options = { spaces : [ 'space2' , 'space3' ] , space : 'space1' } ;
773+ expect ( parseSpaces ( config , options as any ) ) . toEqual ( {
774+ spaces : [ 'space1' , 'space2' , 'space3' ] ,
775+ } ) ;
776+ } ) ;
777+
778+ it ( 'returns wildcard if present' , ( ) => {
779+ expect (
780+ parseSpaces ( { spaces : [ '*' ] } , {
781+ space : 'default' ,
782+ spaces : [ 'foo' ] ,
783+ } as any )
784+ ) . toEqual ( {
785+ spaces : [ '*' ] ,
786+ } ) ;
787+ expect ( parseSpaces ( { } , { spaces : [ '*' ] } as any ) ) . toEqual ( {
788+ spaces : [ '*' ] ,
789+ } ) ;
790+ } ) ;
791+ } ) ;
680792} ) ;
0 commit comments