More tests

This commit is contained in:
Klemek
2019-06-22 11:00:02 +02:00
parent d343179764
commit def326676c
4 changed files with 55 additions and 32 deletions
+1 -4
View File
@@ -154,10 +154,7 @@ module.exports = (config) => {
app.post(config['webhook']['endpoint'], (req, res) => {
if (config['modules']['webhook']) {
if (config['webhook']['signature_header'] && config['webhook']['secret']) {
const payload = JSON.stringify(req.body);
if (!payload) {
return res.sendStatus(403);
}
const payload = JSON.stringify(req.body) || '';
const hmac = crypto.createHmac('sha1', config['webhook']['secret']);
const digest = 'sha1=' + hmac.update(payload).digest('hex');
const checksum = req.headers[config['webhook']['signature_header']];
+52 -26
View File
@@ -13,19 +13,24 @@ const config = require('../src/config')();
config['test'] = true;
config['data_dir'] = dataDir;
config['webhook']['endpoint'] = '/webhooktest';
config['rss']['endpoint'] = '/rsstest';
config['rss']['length'] = 2;
config['home']['index'] = testIndex;
config['home']['error'] = testError;
config['article']['template'] = testTemplate;
config['home']['hidden'].push('.test');
config['rss']['endpoint'] = '/rsstest';
config['rss']['length'] = 2;
config['webhook']['endpoint'] = '/webhooktest';
config['access_log'] = path.join(dataDir, 'access.log');
config['error_log'] = path.join(dataDir, 'error.log');
const app = require('../src/app')(config);
beforeEach((done, fail) => {
config['data_dir'] = dataDir;
config['article']['index'] = 'index.md';
config['home']['hidden'] = ['.ejs', '.test'];
config['access_log'] = '';
config['error_log'] = '';
config['modules']['rss'] = true;
config['modules']['webhook'] = true;
utils.deleteFolderSync(dataDir);
fs.mkdirSync(dataDir);
app.reload(done, fail);
@@ -37,17 +42,22 @@ afterAll(() => {
}
});
describe('Test reload', () => {
test('reload fail', (done, fail) => {
config['data_dir'] = '';
app.reload(fail, done);
});
});
describe('Test request logging', () => {
test('test no log', (done) => {
const tmp = config['access_log'];
config['access_log'] = '';
request(app).get('/rsstest').then(() => {
config['access_log'] = tmp;
expect(fs.existsSync(path.join(dataDir, 'access.log'))).toBe(false);
done();
});
});
test('test get 200', (done) => {
config['access_log'] = path.join(dataDir, 'access.log');
request(app).get('/rsstest').then(() => {
fs.readFile(path.join(dataDir, 'access.log'), {encoding: 'UTF-8'}, (err, data) => {
expect(err).toBeNull();
@@ -57,6 +67,7 @@ describe('Test request logging', () => {
});
});
test('test post 400', (done) => {
config['access_log'] = path.join(dataDir, 'access.log');
request(app).post('/rsstest').then(() => {
fs.readFile(path.join(dataDir, 'access.log'), {encoding: 'UTF-8'}, (err, data) => {
expect(err).toBeNull();
@@ -66,6 +77,7 @@ describe('Test request logging', () => {
});
});
test('test 2 requests', (done) => {
config['access_log'] = path.join(dataDir, 'access.log');
request(app).get('/rss').then(() => {
request(app).post('/rsstest').then(() => {
fs.readFile(path.join(dataDir, 'access.log'), {encoding: 'UTF-8'}, (err, data) => {
@@ -81,22 +93,16 @@ describe('Test request logging', () => {
describe('Test error logging', () => {
test('test no log', (done) => {
const tmp = config['home']['hidden'];
config['home']['hidden'] = null;
const tmp2 = config['errpr_log'];
config['error_log'] = '';
request(app).get('/somefile.txt').then(() => {
config['home']['hidden'] = tmp;
config['error_log'] = tmp2;
expect(fs.existsSync(path.join(dataDir, 'error.log'))).toBe(false);
done();
});
});
test('test null error ', (done) => {
const tmp = config['home']['hidden'];
config['home']['hidden'] = null;
config['error_log'] = path.join(dataDir, 'error.log');
request(app).get('/somefile.txt').then(() => {
config['home']['hidden'] = tmp;
fs.readFile(path.join(dataDir, 'error.log'), {encoding: 'UTF-8'}, (err, data) => {
expect(err).toBeNull();
const start = data.split('\n').slice(0, 2).join('\n');
@@ -123,6 +129,13 @@ describe('Test root path', () => {
done();
});
});
test('500 render error', (done) => {
fs.writeFileSync(path.join(dataDir, testIndex), 'articles <%= null.length %>');
request(app).get('/').then((response) => {
expect(response.statusCode).toBe(500);
done();
});
});
test('200 no articles', (done) => {
fs.writeFileSync(path.join(dataDir, testIndex), 'articles <%= articles.length %>');
request(app).get('/').then((response) => {
@@ -156,7 +169,6 @@ describe('Test RSS feed', () => {
config['modules']['rss'] = false;
request(app).get('/rsstest').then((response) => {
expect(response.statusCode).toBe(404);
config['modules']['rss'] = true;
done();
});
});
@@ -168,6 +180,16 @@ describe('Test RSS feed', () => {
done();
});
});
test('200 rss cache', (done) => {
request(app).get('/rsstest').then(() => {
request(app).get('/rsstest').then((response) => {
expect(response.statusCode).toBe(200);
expect(response.text.length).toBeGreaterThan(0);
expect(response.text.split('<item>').length).toBe(1);
done();
});
});
});
test('200 2 rss items', (done, fail) => {
utils.createEmptyDirs([
path.join(dataDir, '2019', '05', '05'),
@@ -213,7 +235,6 @@ describe('Test webhook', () => {
config['modules']['webhook'] = false;
request(app).post('/webhooktest').then((response) => {
expect(response.statusCode).toBe(400);
config['modules']['webhook'] = true;
done();
});
});
@@ -244,14 +265,6 @@ describe('Test webhook', () => {
done();
});
});
test('403 no payload', (done) => {
config['webhook']['signature_header'] = 'testheader';
config['webhook']['secret'] = 'testvalue';
request(app).post('/webhooktest').then((response) => {
expect(response.statusCode).toBe(403);
done();
});
});
test('403 wrong secret', (done) => {
config['webhook']['signature_header'] = 'testheader';
config['webhook']['secret'] = 'testvalue';
@@ -282,6 +295,19 @@ describe('Test articles rendering', () => {
});
});
test('500 no index', (done, fail) => {
utils.createEmptyDirs([path.join(dataDir, '2019', '05', '05'),]);
fs.writeFileSync(path.join(dataDir, '2019', '05', '05', 'index.md'), '# Hello');
fs.writeFileSync(path.join(dataDir, testTemplate), '<%- article.content %><%- `<a href="${article.url}">reload</a>` %>');
app.reload(() => {
config['article']['index'] = 'invalid.md';
request(app).get('/2019/05/05/hello/').then((response) => {
expect(response.statusCode).toBe(500);
done();
});
}, fail);
});
test('500 no template', (done, fail) => {
utils.createEmptyDirs([path.join(dataDir, '2019', '05', '05'),]);
fs.writeFileSync(path.join(dataDir, '2019', '05', '05', 'index.md'), '# Hello');
+1 -1
View File
@@ -22,6 +22,7 @@ const config = {
const fw = require('../src/file_walker')(config);
beforeEach(() => {
config['data_dir'] = dataDir;
utils.deleteFolderSync(dataDir);
fs.mkdirSync(dataDir);
});
@@ -193,7 +194,6 @@ describe('Test article fetching', () => {
fw.fetchArticles((err, list) => {
expect(err).not.toBeNull();
expect(list).not.toBeDefined();
config['data_dir'] = dataDir;
done();
});
});
+1 -1
View File
@@ -19,6 +19,7 @@ const config = {
const renderer = require('../src/renderer')(config);
beforeEach(() => {
config['modules']['prism'] = true;
utils.deleteFolderSync(dataDir);
fs.mkdirSync(dataDir);
});
@@ -61,7 +62,6 @@ test('no prism', (done) => {
renderer.render(file, (err, html) => {
expect(err).toBeNull();
expect(html).toBe('<pre><code class="python language-python">print("hello")\n</code></pre>\n<pre><code class="python language-python">print("hello")\n</code></pre>');
config['modules']['prism'] = true;
done();
});
});