5
5
*/
6
6
7
7
import * as Rx from 'rxjs' ;
8
- import { createMockReportingCore } from '../../../../test_helpers' ;
8
+ import { createMockReportingCore , createMockBrowserDriverFactory } from '../../../../test_helpers' ;
9
9
import { cryptoFactory } from '../../../../server/lib/crypto' ;
10
10
import { executeJobFactory } from './index' ;
11
11
import { generatePngObservableFactory } from '../lib/generate_png' ;
12
+ import { CancellationToken } from '../../../../common/cancellation_token' ;
12
13
import { LevelLogger } from '../../../../server/lib' ;
14
+ import { ReportingCore , CaptureConfig } from '../../../../server/types' ;
15
+ import { JobDocPayloadPNG } from '../../types' ;
13
16
14
17
jest . mock ( '../lib/generate_png' , ( ) => ( { generatePngObservableFactory : jest . fn ( ) } ) ) ;
15
18
16
- let mockReporting ;
19
+ let mockReporting : ReportingCore ;
17
20
18
- const cancellationToken = {
21
+ const cancellationToken = ( {
19
22
on : jest . fn ( ) ,
20
- } ;
23
+ } as unknown ) as CancellationToken ;
21
24
22
25
const mockLoggerFactory = {
23
26
get : jest . fn ( ) . mockImplementation ( ( ) => ( {
@@ -28,12 +31,16 @@ const mockLoggerFactory = {
28
31
} ;
29
32
const getMockLogger = ( ) => new LevelLogger ( mockLoggerFactory ) ;
30
33
34
+ const captureConfig = { } as CaptureConfig ;
35
+
31
36
const mockEncryptionKey = 'abcabcsecuresecret' ;
32
- const encryptHeaders = async headers => {
37
+ const encryptHeaders = async ( headers : Record < string , string > ) => {
33
38
const crypto = cryptoFactory ( mockEncryptionKey ) ;
34
39
return await crypto . encrypt ( headers ) ;
35
40
} ;
36
41
42
+ const getJobDocPayload = ( baseObj : any ) => baseObj as JobDocPayloadPNG ;
43
+
37
44
beforeEach ( async ( ) => {
38
45
const kbnConfig = {
39
46
'server.basePath' : '/sbp' ,
@@ -45,8 +52,8 @@ beforeEach(async () => {
45
52
'kibanaServer.protocol' : 'http' ,
46
53
} ;
47
54
const mockReportingConfig = {
48
- get : ( ...keys ) => reportingConfig [ keys . join ( '.' ) ] ,
49
- kbnConfig : { get : ( ...keys ) => kbnConfig [ keys . join ( '.' ) ] } ,
55
+ get : ( ...keys : string [ ] ) => ( reportingConfig as any ) [ keys . join ( '.' ) ] ,
56
+ kbnConfig : { get : ( ...keys : string [ ] ) => ( kbnConfig as any ) [ keys . join ( '.' ) ] } ,
50
57
} ;
51
58
52
59
mockReporting = await createMockReportingCore ( mockReportingConfig ) ;
@@ -60,22 +67,30 @@ beforeEach(async () => {
60
67
mockGetElasticsearch . mockImplementation ( ( ) => Promise . resolve ( mockElasticsearch ) ) ;
61
68
mockReporting . getElasticsearchService = mockGetElasticsearch ;
62
69
63
- generatePngObservableFactory . mockReturnValue ( jest . fn ( ) ) ;
70
+ ( generatePngObservableFactory as jest . Mock ) . mockReturnValue ( jest . fn ( ) ) ;
64
71
} ) ;
65
72
66
- afterEach ( ( ) => generatePngObservableFactory . mockReset ( ) ) ;
73
+ afterEach ( ( ) => ( generatePngObservableFactory as jest . Mock ) . mockReset ( ) ) ;
67
74
68
75
test ( `passes browserTimezone to generatePng` , async ( ) => {
69
76
const encryptedHeaders = await encryptHeaders ( { } ) ;
77
+ const mockBrowserDriverFactory = await createMockBrowserDriverFactory ( getMockLogger ( ) ) ;
70
78
71
- const generatePngObservable = generatePngObservableFactory ( ) ;
72
- generatePngObservable . mockReturnValue ( Rx . of ( Buffer . from ( '' ) ) ) ;
79
+ const generatePngObservable = generatePngObservableFactory (
80
+ captureConfig ,
81
+ mockBrowserDriverFactory
82
+ ) ;
83
+ ( generatePngObservable as jest . Mock ) . mockReturnValue ( Rx . of ( Buffer . from ( '' ) ) ) ;
73
84
74
85
const executeJob = await executeJobFactory ( mockReporting , getMockLogger ( ) ) ;
75
86
const browserTimezone = 'UTC' ;
76
87
await executeJob (
77
88
'pngJobId' ,
78
- { relativeUrl : '/app/kibana#/something' , browserTimezone, headers : encryptedHeaders } ,
89
+ getJobDocPayload ( {
90
+ relativeUrl : '/app/kibana#/something' ,
91
+ browserTimezone,
92
+ headers : encryptedHeaders ,
93
+ } ) ,
79
94
cancellationToken
80
95
) ;
81
96
@@ -92,12 +107,17 @@ test(`returns content_type of application/png`, async () => {
92
107
const executeJob = await executeJobFactory ( mockReporting , getMockLogger ( ) ) ;
93
108
const encryptedHeaders = await encryptHeaders ( { } ) ;
94
109
95
- const generatePngObservable = generatePngObservableFactory ( ) ;
96
- generatePngObservable . mockReturnValue ( Rx . of ( Buffer . from ( '' ) ) ) ;
110
+ const mockBrowserDriverFactory = await createMockBrowserDriverFactory ( getMockLogger ( ) ) ;
111
+
112
+ const generatePngObservable = generatePngObservableFactory (
113
+ captureConfig ,
114
+ mockBrowserDriverFactory
115
+ ) ;
116
+ ( generatePngObservable as jest . Mock ) . mockReturnValue ( Rx . of ( Buffer . from ( '' ) ) ) ;
97
117
98
118
const { content_type : contentType } = await executeJob (
99
119
'pngJobId' ,
100
- { relativeUrl : '/app/kibana#/something' , timeRange : { } , headers : encryptedHeaders } ,
120
+ getJobDocPayload ( { relativeUrl : '/app/kibana#/something' , headers : encryptedHeaders } ) ,
101
121
cancellationToken
102
122
) ;
103
123
expect ( contentType ) . toBe ( 'image/png' ) ;
@@ -106,14 +126,19 @@ test(`returns content_type of application/png`, async () => {
106
126
test ( `returns content of generatePng getBuffer base64 encoded` , async ( ) => {
107
127
const testContent = 'test content' ;
108
128
109
- const generatePngObservable = generatePngObservableFactory ( ) ;
110
- generatePngObservable . mockReturnValue ( Rx . of ( { buffer : Buffer . from ( testContent ) } ) ) ;
129
+ const mockBrowserDriverFactory = await createMockBrowserDriverFactory ( getMockLogger ( ) ) ;
130
+
131
+ const generatePngObservable = generatePngObservableFactory (
132
+ captureConfig ,
133
+ mockBrowserDriverFactory
134
+ ) ;
135
+ ( generatePngObservable as jest . Mock ) . mockReturnValue ( Rx . of ( { buffer : Buffer . from ( testContent ) } ) ) ;
111
136
112
137
const executeJob = await executeJobFactory ( mockReporting , getMockLogger ( ) ) ;
113
138
const encryptedHeaders = await encryptHeaders ( { } ) ;
114
139
const { content } = await executeJob (
115
140
'pngJobId' ,
116
- { relativeUrl : '/app/kibana#/something' , timeRange : { } , headers : encryptedHeaders } ,
141
+ getJobDocPayload ( { relativeUrl : '/app/kibana#/something' , headers : encryptedHeaders } ) ,
117
142
cancellationToken
118
143
) ;
119
144
0 commit comments