ci: test basic application response of the docker build
Note by muxator: This commit introduced a copied & modified version of the testing files loadSettings.js and pad.js. It's Christmas night, and we want to shipt this feature, so I merged it anyway, adding a note in both the original and copied files so that hopefully someone in the distant future is going to merge them back again.pull/3688/head
parent
69fd393708
commit
92f07a544b
|
@ -21,8 +21,12 @@ jobs:
|
||||||
script:
|
script:
|
||||||
- "tests/frontend/travis/runner.sh"
|
- "tests/frontend/travis/runner.sh"
|
||||||
- name: "Test the Dockerfile"
|
- name: "Test the Dockerfile"
|
||||||
|
install:
|
||||||
|
- "cd src && npm install && cd -"
|
||||||
script:
|
script:
|
||||||
- "docker build ."
|
- "docker build -t etherpad:test ."
|
||||||
|
- "docker run -d -p 9001:9001 etherpad:test && sleep 3"
|
||||||
|
- "cd src && npm run test-container"
|
||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
irc:
|
irc:
|
||||||
|
|
|
@ -82,7 +82,8 @@
|
||||||
"url": "https://github.com/ether/etherpad-lite.git"
|
"url": "https://github.com/ether/etherpad-lite.git"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "nyc mocha --timeout 5000 ../tests/backend/specs/api"
|
"test": "nyc mocha --timeout 5000 ../tests/backend/specs/api",
|
||||||
|
"test-container": "nyc mocha --timeout 5000 ../tests/container/specs/api"
|
||||||
},
|
},
|
||||||
"version": "1.8.0",
|
"version": "1.8.0",
|
||||||
"license": "Apache-2.0"
|
"license": "Apache-2.0"
|
||||||
|
|
|
@ -1,3 +1,10 @@
|
||||||
|
/*
|
||||||
|
* ACHTUNG: there is a copied & modified version of this file in
|
||||||
|
* <basedir>/tests/container/loadSettings.js
|
||||||
|
*
|
||||||
|
* TODO: unify those two files, and merge in a single one.
|
||||||
|
*/
|
||||||
|
|
||||||
var jsonminify = require(__dirname+"/../../src/node_modules/jsonminify");
|
var jsonminify = require(__dirname+"/../../src/node_modules/jsonminify");
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,10 @@
|
||||||
|
/*
|
||||||
|
* ACHTUNG: there is a copied & modified version of this file in
|
||||||
|
* <basedir>/tests/container/spacs/api/pad.js
|
||||||
|
*
|
||||||
|
* TODO: unify those two files, and merge in a single one.
|
||||||
|
*/
|
||||||
|
|
||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
const supertest = require(__dirname+'/../../../../src/node_modules/supertest');
|
const supertest = require(__dirname+'/../../../../src/node_modules/supertest');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
/*
|
||||||
|
* ACHTUNG: this file was copied & modified from the analogous
|
||||||
|
* <basedir>/tests/backend/loadSettings.js
|
||||||
|
*
|
||||||
|
* TODO: unify those two files, and merge in a single one.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var jsonminify = require(__dirname+"/../../src/node_modules/jsonminify");
|
||||||
|
const fs = require('fs');
|
||||||
|
|
||||||
|
function loadSettings(){
|
||||||
|
var settingsStr = fs.readFileSync(__dirname+"/../../settings.json.docker").toString();
|
||||||
|
// try to parse the settings
|
||||||
|
try {
|
||||||
|
if(settingsStr) {
|
||||||
|
settingsStr = jsonminify(settingsStr).replace(",]","]").replace(",}","}");
|
||||||
|
var settings = JSON.parse(settingsStr);
|
||||||
|
|
||||||
|
// custom settings for running in a container
|
||||||
|
settings.ip = 'localhost';
|
||||||
|
settings.port = '9001';
|
||||||
|
|
||||||
|
return settings;
|
||||||
|
}
|
||||||
|
}catch(e){
|
||||||
|
console.error("whoops something is bad with settings");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.loadSettings = loadSettings;
|
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* ACHTUNG: this file was copied & modified from the analogous
|
||||||
|
* <basedir>/tests/backend/specs/api/pad.js
|
||||||
|
*
|
||||||
|
* TODO: unify those two files, and merge in a single one.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const supertest = require(__dirname+'/../../../../src/node_modules/supertest');
|
||||||
|
const settings = require(__dirname+'/../../loadSettings').loadSettings();
|
||||||
|
const api = supertest('http://'+settings.ip+":"+settings.port);
|
||||||
|
|
||||||
|
var apiVersion = 1;
|
||||||
|
|
||||||
|
describe('Connectivity', function(){
|
||||||
|
it('can connect', function(done) {
|
||||||
|
api.get('/api/')
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
.expect(200, done)
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('API Versioning', function(){
|
||||||
|
it('finds the version tag', function(done) {
|
||||||
|
api.get('/api/')
|
||||||
|
.expect(function(res){
|
||||||
|
if (!res.body.currentVersion) throw new Error("No version set in API");
|
||||||
|
return;
|
||||||
|
})
|
||||||
|
.expect(200, done)
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('Permission', function(){
|
||||||
|
it('errors with invalid APIKey', function(done) {
|
||||||
|
api.get('/api/'+apiVersion+'/createPad?apikey=wrong_password&padID=test')
|
||||||
|
.expect(401, done)
|
||||||
|
});
|
||||||
|
})
|
Loading…
Reference in New Issue