1 | (function (handleInput, helper, Joi, request, fs, path) {
|
2 | 'use strict';
|
3 |
|
4 | var expect = helper.chai.expect;
|
5 | var lcovData = fs.readFileSync(__dirname + '/mock/lcov.info').toString();
|
6 | var originalCodacyToken = process.env.CODACY_PROJECT_TOKEN || process.env.CODACY_REPO_TOKEN;
|
7 |
|
8 | describe('Handle Input', function () {
|
9 | beforeEach(function () {
|
10 | helper.clearEnvironmentVariables();
|
11 | process.env.CODACY_PROJECT_TOKEN = originalCodacyToken;
|
12 | });
|
13 | it('should be able to use the mock end-point', function () {
|
14 | var bodyValidator = Joi.object({
|
15 | total: Joi.number().valid(50),
|
16 | fileReports: Joi.array().items(Joi.object({
|
17 | filename: Joi.string().valid('filename'),
|
18 | total: Joi.number().valid(10),
|
19 | coverage: Joi.object({
|
20 | 1: Joi.number().valid(1),
|
21 | 2: Joi.number().valid(3)
|
22 | })
|
23 | }).required())
|
24 | });
|
25 |
|
26 | var sampleCoverageData = {
|
27 | total: 50,
|
28 | fileReports: [
|
29 | {
|
30 | filename: 'filename',
|
31 | total: 10,
|
32 | coverage: {
|
33 | 1: 1,
|
34 | 2: 3
|
35 | }
|
36 | }
|
37 | ]
|
38 | };
|
39 |
|
40 | return helper.setupMockEndpoint('1234', '4321', bodyValidator)
|
41 | .then(function () {
|
42 | return expect(request({
|
43 | url: 'https://api.codacy.com/2.0/coverage/4321/javascript',
|
44 | method: 'POST',
|
45 | json: sampleCoverageData,
|
46 | resolveWithFullResponse: true
|
47 | }).promise()).to.eventually.satisfy(function (res) {
|
48 | expect(res.statusCode).to.equal(200);
|
49 | return true;
|
50 | });
|
51 | });
|
52 | });
|
53 | it('should be able to parse lcov data', function () {
|
54 | var expectedCoverage = {
|
55 | total: 92,
|
56 | fileReports: Joi.array().items(Joi.compile({
|
57 | filename: path.normalize('lib/reporter.js'),
|
58 | coverage: {
|
59 | 1: 1,
|
60 | 25: 1,
|
61 | 39: 1,
|
62 | 40: 3,
|
63 | 44: 3,
|
64 | 48: 3,
|
65 | 50: 3,
|
66 | 52: 3,
|
67 | 54: 3,
|
68 | 55: 3,
|
69 | 61: 3,
|
70 | 63: 3,
|
71 | 67: 3,
|
72 | 73: 2,
|
73 | 74: 1,
|
74 | 75: 1,
|
75 | 76: 1,
|
76 | 77: 1,
|
77 | 79: 2,
|
78 | 81: 1,
|
79 | 82: 1,
|
80 | 83: 1,
|
81 | 84: 1,
|
82 | 87: 3
|
83 | },
|
84 | total: 92
|
85 | }))
|
86 | };
|
87 |
|
88 | return helper.setupMockEndpoint('1234', '4321', Joi.compile(expectedCoverage))
|
89 | .then(function () {
|
90 | return expect(handleInput(lcovData, {
|
91 | token: '1234',
|
92 | commit: '4321'
|
93 | })).to.eventually.be.fulfilled();
|
94 | });
|
95 | });
|
96 | it('should be able to parse lcov data with path prefix', function () {
|
97 | var expectedCoverage = {
|
98 | total: 92,
|
99 | fileReports: Joi.array().items(Joi.compile({
|
100 | filename: path.normalize('my-project/lib/reporter.js'),
|
101 | coverage: {
|
102 | 1: 1,
|
103 | 25: 1,
|
104 | 39: 1,
|
105 | 40: 3,
|
106 | 44: 3,
|
107 | 48: 3,
|
108 | 50: 3,
|
109 | 52: 3,
|
110 | 54: 3,
|
111 | 55: 3,
|
112 | 61: 3,
|
113 | 63: 3,
|
114 | 67: 3,
|
115 | 73: 2,
|
116 | 74: 1,
|
117 | 75: 1,
|
118 | 76: 1,
|
119 | 77: 1,
|
120 | 79: 2,
|
121 | 81: 1,
|
122 | 82: 1,
|
123 | 83: 1,
|
124 | 84: 1,
|
125 | 87: 3
|
126 | },
|
127 | total: 92
|
128 | }))
|
129 | };
|
130 |
|
131 | return helper.setupMockEndpoint('1234', '4321', Joi.compile(expectedCoverage))
|
132 | .then(function () {
|
133 | return expect(handleInput(lcovData, {
|
134 | token: '1234',
|
135 | commit: '4321',
|
136 | prefix: 'my-project' + path.sep
|
137 | })).to.eventually.be.fulfilled();
|
138 | });
|
139 | });
|
140 | it('shouldn\'t be able to send coverage with invalid input', function () {
|
141 | process.env.CODACY_PROJECT_TOKEN = '';
|
142 | return expect(handleInput()).to.eventually.be.rejectedWith(Error, 'Token is required');
|
143 | });
|
144 | });
|
145 |
|
146 | }(require('../lib/handleInput'), require('./helper'), require('joi'), require('request-promise'), require('fs'), require('path')));
|