@@ -6,74 +6,42 @@ process.env.NODE_ENV = 'test'
6
6
global . Promise = require ( 'bluebird' )
7
7
8
8
const _ = require ( 'lodash' )
9
- const should = require ( 'should' )
10
- const request = require ( 'superagent' )
11
9
12
10
const testHelper = require ( '../common/testHelper' )
13
11
const { testTopics } = require ( '../common/testData' )
12
+ const dataHandler = require ( '../../src/app' )
14
13
15
14
describe ( 'Topcoder - Scorecard Review Processor E2E Test' , ( ) => {
16
15
before ( async ( ) => {
17
- // consume and commit existing messages if any
18
- await testHelper . consumeMessages ( )
19
- // init kafka producer
20
- await testHelper . initProducer ( )
21
-
22
16
// intercept logger
23
17
testHelper . interceptLogger ( )
24
-
25
- // start the application (kafka listener)
26
- await testHelper . initApp ( )
27
18
} )
28
19
29
20
after ( async ( ) => {
30
21
testHelper . restoreLogger ( )
31
-
32
- await testHelper . stopProducer ( )
33
22
} )
34
23
35
24
beforeEach ( ( ) => {
36
25
testHelper . clearInterceptedLogging ( )
37
26
} )
38
27
39
- it ( 'Should setup healthcheck with check on kafka connection' , async ( ) => {
40
- const healthcheckEndpoint = `http://localhost:${ process . env . PORT || 3000 } /health`
41
- let result = await request . get ( healthcheckEndpoint )
42
- should . equal ( result . status , 200 )
43
- should . deepEqual ( result . body , { checksRun : 1 } )
44
- testHelper . assertDebugMessage ( 'connected=true' )
45
- } )
46
-
47
28
it ( 'Should handle invalid json message' , async ( ) => {
48
29
const { testMessage } = testTopics . create
49
- await testHelper . getProducer ( ) . send ( {
50
- topic : testMessage . topic ,
51
- message : {
52
- value : '[ invalid'
53
- }
54
- } )
55
- await testHelper . waitJob ( )
30
+ await dataHandler ( [ { message : { value : '[ invalid' } , offset : 0 } ] , testMessage . topic , 0 )
56
31
testHelper . assertErrorMessage ( 'Invalid message JSON.' )
57
32
} )
58
33
59
34
it ( 'Should handle incorrect topic field message' , async ( ) => {
60
35
const { testMessage } = testTopics . create
61
36
let message = _ . cloneDeep ( testMessage )
62
37
message . topic = 'invalid'
63
- await testHelper . getProducer ( ) . send ( {
64
- topic : testMessage . topic ,
65
- message : {
66
- value : JSON . stringify ( message )
67
- }
68
- } )
69
- await testHelper . waitJob ( )
38
+ await dataHandler ( [ { message : { value : JSON . stringify ( message ) } , offset : 0 } ] , testMessage . topic , 0 )
70
39
testHelper . assertErrorMessage (
71
40
'The message topic invalid doesn\'t match the Kafka topic submission.notification.score.' )
72
41
} )
73
42
74
43
it ( 'processor create review success' , async ( ) => {
75
- await testHelper . sendMessage ( testTopics . create . testMessage )
76
- await testHelper . waitJob ( )
44
+ await dataHandler ( [ { message : { value : JSON . stringify ( testTopics . create . testMessage ) } , offset : 0 } ] , testTopics . create . testMessage . topic , 0 )
77
45
78
46
testHelper . assertDebugMessage ( 'Get submission' )
79
47
testHelper . assertDebugMessage ( 'Submission id: b91a0ca3-3988-4899-bab4-c789f22def39' )
@@ -83,8 +51,7 @@ describe('Topcoder - Scorecard Review Processor E2E Test', () => {
83
51
} )
84
52
85
53
it ( 'processor update review success' , async ( ) => {
86
- await testHelper . sendMessage ( testTopics . update . testMessage )
87
- await testHelper . waitJob ( )
54
+ await dataHandler ( [ { message : { value : JSON . stringify ( testTopics . update . testMessage ) } , offset : 0 } ] , testTopics . update . testMessage . topic , 0 )
88
55
89
56
testHelper . assertDebugMessage ( 'Get submission' )
90
57
testHelper . assertDebugMessage ( 'Submission id: b91a0ca3-3988-4899-bab4-c789f22def39' )
@@ -98,24 +65,21 @@ describe('Topcoder - Scorecard Review Processor E2E Test', () => {
98
65
it ( 'test invalid parameters, userId is forbidden for create review message.' , async ( ) => {
99
66
let message = _ . cloneDeep ( testTopics . create . testMessage )
100
67
message . payload . userId = '12345'
101
- await testHelper . sendMessage ( message )
102
- await testHelper . waitJob ( )
68
+ await dataHandler ( [ { message : { value : JSON . stringify ( message ) } , offset : 0 } ] , message . topic , 0 )
103
69
testHelper . assertErrorMessage ( '"userId" is not allowed' )
104
70
} )
105
71
106
72
it ( 'test invalid parameters, fail to retrieve review with given criteria.' , async ( ) => {
107
73
let message = _ . cloneDeep ( testTopics . update . testMessage )
108
74
message . payload . scorecardId = 300001611
109
- await testHelper . sendMessage ( message )
110
- await testHelper . waitJob ( )
75
+ await dataHandler ( [ { message : { value : JSON . stringify ( message ) } , offset : 0 } ] , message . topic , 0 )
111
76
testHelper . assertErrorMessage ( 'Review doesn\'t exist under criteria' )
112
77
} )
113
78
114
79
it ( 'test invalid eventType, fail to retrieve review with given criteria.' , async ( ) => {
115
80
let message = _ . cloneDeep ( testTopics . create . testMessage )
116
81
message . payload . eventType = 'INVALID_TYPE'
117
- await testHelper . sendMessage ( message )
118
- await testHelper . waitJob ( )
82
+ await dataHandler ( [ { message : { value : JSON . stringify ( message ) } , offset : 0 } ] , message . topic , 0 )
119
83
testHelper . assertErrorMessage ( 'Invalid or not supported eventType: INVALID_TYPE' )
120
84
} )
121
85
@@ -125,16 +89,14 @@ describe('Topcoder - Scorecard Review Processor E2E Test', () => {
125
89
it ( 'test invalid parameters, field submissionId incorrect' , async ( ) => {
126
90
let message = _ . cloneDeep ( testMessage )
127
91
message . payload . submissionId = 111111111
128
- await testHelper . sendMessage ( message )
129
- await testHelper . waitJob ( )
92
+ await dataHandler ( [ { message : { value : JSON . stringify ( message ) } , offset : 0 } ] , message . topic , 0 )
130
93
testHelper . assertErrorMessage ( 'Incorrect submission id 111111111' )
131
94
} )
132
95
133
96
it ( 'test invalid parameters, fail to get reviewType UUID.' , async ( ) => {
134
97
let message = _ . cloneDeep ( testMessage )
135
98
message . payload . reviewTypeId = 12
136
- await testHelper . sendMessage ( message )
137
- await testHelper . waitJob ( )
99
+ await dataHandler ( [ { message : { value : JSON . stringify ( message ) } , offset : 0 } ] , message . topic , 0 )
138
100
testHelper . assertErrorMessage ( 'Incorrect review type id 12' )
139
101
} )
140
102
@@ -143,8 +105,7 @@ describe('Topcoder - Scorecard Review Processor E2E Test', () => {
143
105
it ( `test invalid parameters, required field ${ requiredField } is missing` , async ( ) => {
144
106
let message = _ . cloneDeep ( testMessage )
145
107
message = _ . omit ( message , requiredField )
146
- await testHelper . sendMessage ( message )
147
- await testHelper . waitJob ( )
108
+ await dataHandler ( [ { message : { value : JSON . stringify ( message ) } , offset : 0 } ] , message . topic , 0 )
148
109
testHelper . assertErrorMessage ( `"${ _ . last ( requiredField . split ( '.' ) ) } " is required` )
149
110
} )
150
111
}
@@ -155,8 +116,7 @@ describe('Topcoder - Scorecard Review Processor E2E Test', () => {
155
116
it ( `test invalid parameters, invalid string type field ${ stringField } ` , async ( ) => {
156
117
let message = _ . cloneDeep ( testMessage )
157
118
_ . set ( message , stringField , 123 )
158
- await testHelper . sendMessage ( message )
159
- await testHelper . waitJob ( )
119
+ await dataHandler ( [ { message : { value : JSON . stringify ( message ) } , offset : 0 } ] , message . topic , 0 )
160
120
testHelper . assertErrorMessage ( `"${ _ . last ( stringField . split ( '.' ) ) } " must be a string` )
161
121
} )
162
122
}
@@ -166,16 +126,14 @@ describe('Topcoder - Scorecard Review Processor E2E Test', () => {
166
126
it ( `test invalid parameters, invalid integer type field ${ integerField } (wrong number)` , async ( ) => {
167
127
let message = _ . cloneDeep ( testMessage )
168
128
_ . set ( message , integerField , 'string' )
169
- await testHelper . sendMessage ( message )
170
- await testHelper . waitJob ( )
129
+ await dataHandler ( [ { message : { value : JSON . stringify ( message ) } , offset : 0 } ] , message . topic , 0 )
171
130
testHelper . assertErrorMessage ( `"${ _ . last ( integerField . split ( '.' ) ) } " must be a number` )
172
131
} )
173
132
174
133
it ( `test invalid parameters, invalid integer type field ${ integerField } (wrong integer)` , async ( ) => {
175
134
let message = _ . cloneDeep ( testMessage )
176
135
_ . set ( message , integerField , 1.1 )
177
- await testHelper . sendMessage ( message )
178
- await testHelper . waitJob ( )
136
+ await dataHandler ( [ { message : { value : JSON . stringify ( message ) } , offset : 0 } ] , message . topic , 0 )
179
137
if ( integerField === 'payload.reviewTypeId' ) {
180
138
testHelper . assertErrorMessage ( `"${ _ . last ( integerField . split ( '.' ) ) } " must be one of [1, 2, 5, 6, 7, 8, 9, 10, 11, 12]` )
181
139
} else {
0 commit comments