]> git.immae.eu Git - perso/Immae/Projets/Nodejs/Surfer.git/commitdiff
Add cloudron tests
authorGirish Ramakrishnan <girish@forwardbias.in>
Fri, 27 Nov 2015 23:11:30 +0000 (15:11 -0800)
committerGirish Ramakrishnan <girish@forwardbias.in>
Fri, 27 Nov 2015 23:21:07 +0000 (15:21 -0800)
README.md
package.json
test/test.js [new file with mode: 0755]

index b9402584f41d8255d5e12d700a0d3fc4fe1159cf..cee5e0588e922f4af9e0397f287c4e90a3c701e4 100644 (file)
--- a/README.md
+++ b/README.md
@@ -42,3 +42,14 @@ Put some files:
 
     surfer put [file]
  
+## Testing
+
+The e2e tests are located in the `test/` folder and require [nodejs](http://nodejs.org/). They are creating a fresh build, install the app on your Cloudron, perform tests, backup, restore and test if the files are still ok.
+
+```
+cd surfer/test
+
+npm install
+USERNAME=<cloudron username> PASSWORD=<cloudron password> mocha --bail test.js
+```
+
index 6b48a0bf55e7c656b1eb7e391ee97375b6510d5a..d0607f631b37d5d00a3700cf59a6d647b6ec71ad 100644 (file)
     "safetydance": "0.0.16",
     "superagent": "^1.2.0",
     "underscore": "^1.8.3"
+  },
+  "devDependencies": {
+    "expect.js": "^0.3.1",
+    "mocha": "^2.3.4",
+    "rimraf": "^2.4.4"
   }
 }
diff --git a/test/test.js b/test/test.js
new file mode 100755 (executable)
index 0000000..85c5c04
--- /dev/null
@@ -0,0 +1,82 @@
+#!/usr/bin/env node
+
+'use strict';
+
+var execSync = require('child_process').execSync,
+    expect = require('expect.js'),
+    path = require('path'),
+    superagent = require('superagent');
+
+process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
+
+describe('Application life cycle test', function () {
+    this.timeout(0);
+    var LOCATION = 'surfertest';
+    var app;
+    var username = process.env.USERNAME;
+    var password = process.env.PASSWORD;
+
+    before(function (done) {
+        if (!process.env.USERNAME) return done(new Error('USERNAME env var not set'));
+        if (!process.env.PASSWORD) return done(new Error('PASSWORD env var not set'));
+
+        done();
+    });
+
+    after(function (done) {
+        done();
+    });
+
+    xit('build app', function () {
+        execSync('cloudron build', { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
+    });
+
+    it('install app', function () {
+        execSync('cloudron install --new --location ' + LOCATION, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
+    });
+
+    it('can get app information', function () {
+        var inspect = JSON.parse(execSync('cloudron inspect'));
+
+        app = inspect.apps.filter(function (a) { return a.location === LOCATION; })[0];
+
+        expect(app).to.be.an('object');
+    });
+
+    it('can get the main page', function (done) {
+        superagent.get('https://' + app.fqdn).end(function (error, result) {
+            expect(error).to.be(null);
+            expect(result.status).to.eql(200);
+
+            done();
+        });
+    });
+
+    it('can login using cli', function (done) {
+        execSync(__dirname + '../cli/surfer.js login https://' + app.fqdn, { input: username + '\n' + password + '\n' });
+        done();
+    });
+
+    it('can upload file', function (done) {
+        execSync(__dirname + '../cli/surfer.js put test.js');
+        done();
+    });
+
+    it('backup app', function () {
+        execSync('cloudron backup --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
+    });
+
+    it('restore app', function () {
+        execSync('cloudron restore --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
+    });
+
+    it('can get the uploaded file', function (done) {
+        var testFile = execSync(__dirname + '../cli/surfer.js get test.js').toString('utf8');
+        console.log(testFile);
+        done();
+    });
+
+    xit('uninstall app', function () {
+        execSync('cloudron uninstall --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
+    });
+});