Skip to content

Commit 5b9cf87

Browse files
author
Dushyant Bhalgami
authored
Merge pull request #140 from meshde/review-metadata-status-tests
Add test cases for review status and private metadata field hiding
2 parents 6d70129 + b521346 commit 5b9cf87

File tree

6 files changed

+234
-0
lines changed

6 files changed

+234
-0
lines changed

scripts/data/Submissions.json

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@
1313
"reviewerId": "c23a4180-65aa-42ec-a945-5fd21dec0503",
1414
"scoreCardId": 123456789,
1515
"submissionId": "a12a4180-65aa-42ec-a945-5fd21dec0501",
16+
"metadata": {
17+
"public": "public data",
18+
"private": "private data"
19+
},
1620
"created": "2018-05-20T07:00:30.123Z",
1721
"updated": "2018-06-01T07:36:28.178Z",
1822
"createdBy": "admin",
@@ -25,6 +29,10 @@
2529
"reviewerId": "c23a4180-65aa-42ec-a945-5fd21dec0503",
2630
"scoreCardId": 123456789,
2731
"submissionId": "a12a4180-65aa-42ec-a945-5fd21dec0501",
32+
"metadata": {
33+
"public": "public data",
34+
"private": "private data"
35+
},
2836
"created": "2018-05-20T07:00:30.123Z",
2937
"updated": "2018-06-01T07:36:28.178Z",
3038
"createdBy": "admin",
@@ -74,6 +82,10 @@
7482
"reviewerId": "c23a4180-65aa-42ec-a945-5fd21dec0503",
7583
"scoreCardId": 123456789,
7684
"submissionId": "a12a4180-65aa-42ec-a945-5fd21dec0503",
85+
"metadata": {
86+
"public": "public data",
87+
"private": "private data"
88+
},
7789
"created": "2018-05-20T07:00:30.123Z",
7890
"updated": "2018-06-01T07:36:28.178Z",
7991
"createdBy": "admin",
@@ -86,6 +98,10 @@
8698
"reviewerId": "c23a4180-65aa-42ec-a945-5fd21dec0502",
8799
"scoreCardId": 123456789,
88100
"submissionId": "a12a4180-65aa-42ec-a945-5fd21dec0503",
101+
"metadata": {
102+
"public": "public data",
103+
"private": "private data"
104+
},
89105
"created": "2018-05-20T07:00:30.123Z",
90106
"updated": "2018-06-01T07:36:28.178Z",
91107
"createdBy": "admin",
@@ -98,6 +114,10 @@
98114
"reviewerId": "c23a4180-65aa-42ec-a945-5fd21dec0503",
99115
"scoreCardId": 123456789,
100116
"submissionId": "a12a4180-65aa-42ec-a945-5fd21dec0503",
117+
"metadata": {
118+
"public": "public data",
119+
"private": "private data"
120+
},
101121
"created": "2018-05-20T07:00:30.123Z",
102122
"updated": "2018-06-01T07:36:28.178Z",
103123
"createdBy": "admin",
@@ -123,6 +143,10 @@
123143
"reviewerId": "c23a4180-65aa-42ec-a945-5fd21dec0503",
124144
"scoreCardId": 123456789,
125145
"submissionId": "a12a4180-65aa-42ec-a945-5fd21dec0504",
146+
"metadata": {
147+
"public": "public data",
148+
"private": "private data"
149+
},
126150
"created": "2018-05-20T07:00:30.123Z",
127151
"updated": "2018-06-01T07:36:28.178Z",
128152
"createdBy": "admin",
@@ -135,6 +159,10 @@
135159
"reviewerId": "c23a4180-65aa-42ec-a945-5fd21dec0502",
136160
"scoreCardId": 123456789,
137161
"submissionId": "a12a4180-65aa-42ec-a945-5fd21dec0504",
162+
"metadata": {
163+
"public": "public data",
164+
"private": "private data"
165+
},
138166
"created": "2018-05-20T07:00:30.123Z",
139167
"updated": "2018-06-01T07:36:28.178Z",
140168
"createdBy": "admin",
@@ -160,6 +188,10 @@
160188
"reviewerId": "c23a4180-65aa-42ec-a945-5fd21dec0503",
161189
"scoreCardId": 123456789,
162190
"submissionId": "a12a4180-65aa-42ec-a945-5fd21dec0505",
191+
"metadata": {
192+
"public": "public data",
193+
"private": "private data"
194+
},
163195
"created": "2018-05-20T07:00:30.123Z",
164196
"updated": "2018-06-01T07:36:28.178Z",
165197
"createdBy": "admin",
@@ -185,6 +217,10 @@
185217
"reviewerId": "c23a4180-65aa-42ec-a945-5fd21dec0503",
186218
"scoreCardId": 123456789,
187219
"submissionId": "a12a4180-65aa-42ec-a945-5fd21dec0505",
220+
"metadata": {
221+
"public": "public data",
222+
"private": "private data"
223+
},
188224
"created": "2018-05-20T07:00:30.123Z",
189225
"updated": "2018-06-01T07:36:28.178Z",
190226
"createdBy": "admin",

test/common/testData.js

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,23 @@ const testSubmissionsES = {
182182
type: 'ContestSubmission',
183183
updated: '2018-06-01T07:36:28.178Z',
184184
url: 'https://software.topcoder.com/review/actions/DownloadContestSubmission?uid=123458',
185+
review: [ {
186+
id: 'd24d4180-65aa-42ec-a945-5fd21dec0502',
187+
score: 92,
188+
reviewerId: 'c23a4180-65aa-42ec-a945-5fd21dec0503',
189+
submissionId: 'a12a4180-65aa-42ec-a945-5fd21dec0501',
190+
scoreCardId: 123456789,
191+
status: 'queued',
192+
metadata: {
193+
public: 'public data',
194+
private: 'private data'
195+
},
196+
typeId: 'c56a4180-65aa-42ec-a945-5fd21dec0501',
197+
created: '2018-05-20T07:00:30.123Z',
198+
updated: '2018-06-01T07:36:28.178Z',
199+
createdBy: 'admin',
200+
updatedBy: 'admin'
201+
} ],
185202
memberId: 'b24d4180-65aa-42ec-a945-5fd21dec0503' } },
186203
{ _index: 'submission',
187204
_type: '_doc',
@@ -196,6 +213,23 @@ const testSubmissionsES = {
196213
type: 'ContestSubmission',
197214
updated: '2018-06-01T07:36:28.178Z',
198215
url: 'https://software.topcoder.com/review/actions/DownloadContestSubmission?uid=123456',
216+
review: [ {
217+
id: 'd24d4180-65aa-42ec-a945-5fd21dec0502',
218+
score: 92,
219+
reviewerId: 'c23a4180-65aa-42ec-a945-5fd21dec0503',
220+
submissionId: 'a12a4180-65aa-42ec-a945-5fd21dec0501',
221+
scoreCardId: 123456789,
222+
status: 'queued',
223+
metadata: {
224+
public: 'public data',
225+
private: 'private data'
226+
},
227+
typeId: 'c56a4180-65aa-42ec-a945-5fd21dec0501',
228+
created: '2018-05-20T07:00:30.123Z',
229+
updated: '2018-06-01T07:36:28.178Z',
230+
createdBy: 'admin',
231+
updatedBy: 'admin'
232+
} ],
199233
memberId: 'b24d4180-65aa-42ec-a945-5fd21dec0501' } },
200234
{ _index: 'submission',
201235
_type: '_doc',
@@ -210,6 +244,23 @@ const testSubmissionsES = {
210244
type: 'ContestSubmission',
211245
updated: '2018-06-01T07:36:28.178Z',
212246
url: 'https://software.topcoder.com/review/actions/DownloadContestSubmission?uid=123457',
247+
review: [ {
248+
id: 'd24d4180-65aa-42ec-a945-5fd21dec0502',
249+
score: 92,
250+
reviewerId: 'c23a4180-65aa-42ec-a945-5fd21dec0503',
251+
submissionId: 'a12a4180-65aa-42ec-a945-5fd21dec0501',
252+
scoreCardId: 123456789,
253+
status: 'queued',
254+
metadata: {
255+
public: 'public data',
256+
private: 'private data'
257+
},
258+
typeId: 'c56a4180-65aa-42ec-a945-5fd21dec0501',
259+
created: '2018-05-20T07:00:30.123Z',
260+
updated: '2018-06-01T07:36:28.178Z',
261+
createdBy: 'admin',
262+
updatedBy: 'admin'
263+
} ],
213264
memberId: 'b24d4180-65aa-42ec-a945-5fd21dec0502' } },
214265
{ _index: 'submission',
215266
_type: '_doc',
@@ -224,6 +275,23 @@ const testSubmissionsES = {
224275
type: 'ContestSubmission',
225276
updated: '2018-06-01T07:36:28.178Z',
226277
url: 'https://software.topcoder.com/review/actions/DownloadContestSubmission?uid=123460',
278+
review: [ {
279+
id: 'd24d4180-65aa-42ec-a945-5fd21dec0502',
280+
score: 92,
281+
reviewerId: 'c23a4180-65aa-42ec-a945-5fd21dec0503',
282+
submissionId: 'a12a4180-65aa-42ec-a945-5fd21dec0501',
283+
scoreCardId: 123456789,
284+
status: 'queued',
285+
metadata: {
286+
public: 'public data',
287+
private: 'private data'
288+
},
289+
typeId: 'c56a4180-65aa-42ec-a945-5fd21dec0501',
290+
created: '2018-05-20T07:00:30.123Z',
291+
updated: '2018-06-01T07:36:28.178Z',
292+
createdBy: 'admin',
293+
updatedBy: 'admin'
294+
} ],
227295
memberId: 'b24d4180-65aa-42ec-a945-5fd21dec0505' } },
228296
{ _index: 'submission',
229297
_type: '_doc',
@@ -238,6 +306,23 @@ const testSubmissionsES = {
238306
type: 'ContestSubmission',
239307
updated: '2018-06-01T07:36:28.178Z',
240308
url: 'https://software.topcoder.com/review/actions/DownloadContestSubmission?uid=123459',
309+
review: [ {
310+
id: 'd24d4180-65aa-42ec-a945-5fd21dec0502',
311+
score: 92,
312+
reviewerId: 'c23a4180-65aa-42ec-a945-5fd21dec0503',
313+
submissionId: 'a12a4180-65aa-42ec-a945-5fd21dec0501',
314+
scoreCardId: 123456789,
315+
status: 'queued',
316+
metadata: {
317+
public: 'public data',
318+
private: 'private data'
319+
},
320+
typeId: 'c56a4180-65aa-42ec-a945-5fd21dec0501',
321+
created: '2018-05-20T07:00:30.123Z',
322+
updated: '2018-06-01T07:36:28.178Z',
323+
createdBy: 'admin',
324+
updatedBy: 'admin'
325+
} ],
241326
memberId: 'b24d4180-65aa-42ec-a945-5fd21dec0504' } } ]
242327

243328
}

test/e2e/ReviewService.test.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,27 @@ describe('Review Service tests', () => {
136136
res.body.submissionId.should.be.eql(submissionId)
137137
res.body.scoreCardId.should.be.eql(testReview.Item.scoreCardId)
138138
res.body.typeId.should.be.eql(reviewTypeId)
139+
res.body.status.should.be.eql(testReview.Item.status)
140+
done()
141+
})
142+
}).timeout(20000)
143+
144+
it('Creating review without status should be created with status "completed"', (done) => {
145+
chai.request(app)
146+
.post(`${config.API_VERSION}/reviews`)
147+
.set('Authorization', `Bearer ${config.ADMIN_TOKEN}`)
148+
.send(_.extend({ typeId: reviewTypeId, submissionId: submissionId }, _.omit(testReview.Item, ['id', 'typeId', 'submissionId', 'status', 'created', 'updated', 'createdBy', 'updatedBy'])))
149+
.end((err, res) => {
150+
res.should.have.status(200)
151+
res.body.should.have.all.keys(Object.keys(testReview.Item))
152+
res.body.id.should.not.be.eql(null)
153+
reviewId = res.body.id
154+
res.body.score.should.be.eql(testReview.Item.score)
155+
res.body.reviewerId.should.be.eql(testReview.Item.reviewerId)
156+
res.body.submissionId.should.be.eql(submissionId)
157+
res.body.scoreCardId.should.be.eql(testReview.Item.scoreCardId)
158+
res.body.typeId.should.be.eql(reviewTypeId)
159+
res.body.status.should.be.eql('completed')
139160
done()
140161
})
141162
}).timeout(20000)

test/e2e/SubmissionService.test.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -559,5 +559,41 @@ describe('Submission Service tests', () => {
559559
done()
560560
})
561561
}).timeout(20000)
562+
563+
it('Getting submissions with Admin token should include review.metadata.public and review.metadata.private', (done) => {
564+
chai.request(app)
565+
.get(`${config.API_VERSION}/submissions`)
566+
.set('Authorization', `Bearer ${config.ADMIN_TOKEN}`)
567+
.end((err, res) => {
568+
res.should.have.status(200)
569+
res.body.should.have.nested.property('[0].review[0].metadata.public')
570+
res.body.should.have.nested.property('[0].review[0].metadata.private')
571+
done()
572+
})
573+
}).timeout(20000)
574+
575+
it('Getting submissions with Copilot token should include review.metadata.public and review.metadata.private', (done) => {
576+
chai.request(app)
577+
.get(`${config.API_VERSION}/submissions`)
578+
.set('Authorization', `Bearer ${config.COPILOT_TOKEN}`)
579+
.end((err, res) => {
580+
res.should.have.status(200)
581+
res.body.should.have.nested.property('[0].review[0].metadata.public')
582+
res.body.should.have.nested.property('[0].review[0].metadata.private')
583+
done()
584+
})
585+
}).timeout(20000)
586+
587+
it('Getting submissions with User token should include review.metadata.public but not review.metadata.private', (done) => {
588+
chai.request(app)
589+
.get(`${config.API_VERSION}/submissions`)
590+
.set('Authorization', `Bearer ${config.USER_TOKEN}`)
591+
.end((err, res) => {
592+
res.should.have.status(200)
593+
res.body.should.have.nested.property('[0].review[0].metadata.public')
594+
res.body.should.not.have.nested.property('[0].review[0].metadata.private')
595+
done()
596+
})
597+
}).timeout(20000)
562598
})
563599
})

test/unit/ReviewService.test.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,26 @@ describe('Review Service tests', () => {
177177
res.body.submissionId.should.be.eql(testReview.Item.submissionId)
178178
res.body.scoreCardId.should.be.eql(testReview.Item.scoreCardId)
179179
res.body.typeId.should.be.eql(testReview.Item.typeId)
180+
res.body.status.should.be.eql(testReview.Item.status)
181+
done()
182+
})
183+
}).timeout(10000)
184+
185+
it('Creating review without status should be created with status "completed"', (done) => {
186+
chai.request(app)
187+
.post(`${config.API_VERSION}/reviews`)
188+
.set('Authorization', `Bearer ${config.ADMIN_TOKEN}`)
189+
.send(_.omit(testReview.Item, ['id', 'status', 'created', 'updated', 'createdBy', 'updatedBy']))
190+
.end((err, res) => {
191+
res.should.have.status(200)
192+
res.body.should.have.all.keys(Object.keys(testReview.Item))
193+
res.body.id.should.not.be.eql(null)
194+
res.body.score.should.be.eql(testReview.Item.score)
195+
res.body.reviewerId.should.be.eql(testReview.Item.reviewerId)
196+
res.body.submissionId.should.be.eql(testReview.Item.submissionId)
197+
res.body.scoreCardId.should.be.eql(testReview.Item.scoreCardId)
198+
res.body.typeId.should.be.eql(testReview.Item.typeId)
199+
res.body.status.should.be.eql('completed')
180200
done()
181201
})
182202
}).timeout(10000)

test/unit/SubmissionService.test.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -560,5 +560,41 @@ describe('Submission Service tests', () => {
560560
done()
561561
})
562562
})
563+
564+
it('Getting submissions with Admin token should include review.metadata.public and review.metadata.private', (done) => {
565+
chai.request(app)
566+
.get(`${config.API_VERSION}/submissions`)
567+
.set('Authorization', `Bearer ${config.ADMIN_TOKEN}`)
568+
.end((err, res) => {
569+
res.should.have.status(200)
570+
res.body.should.have.nested.property('[0].review[0].metadata.public')
571+
res.body.should.have.nested.property('[0].review[0].metadata.private')
572+
done()
573+
})
574+
})
575+
576+
it('Getting submissions with Copilot token should include review.metadata.public and review.metadata.private', (done) => {
577+
chai.request(app)
578+
.get(`${config.API_VERSION}/submissions`)
579+
.set('Authorization', `Bearer ${config.COPILOT_TOKEN}`)
580+
.end((err, res) => {
581+
res.should.have.status(200)
582+
res.body.should.have.nested.property('[0].review[0].metadata.public')
583+
res.body.should.have.nested.property('[0].review[0].metadata.private')
584+
done()
585+
})
586+
})
587+
588+
it('Getting submissions with User token should include review.metadata.public but not review.metadata.private', (done) => {
589+
chai.request(app)
590+
.get(`${config.API_VERSION}/submissions`)
591+
.set('Authorization', `Bearer ${config.USER_TOKEN}`)
592+
.end((err, res) => {
593+
res.should.have.status(200)
594+
res.body.should.have.nested.property('[0].review[0].metadata.public')
595+
res.body.should.not.have.nested.property('[0].review[0].metadata.private')
596+
done()
597+
})
598+
})
563599
})
564600
})

0 commit comments

Comments
 (0)