1
0
mirror of https://git.cloudron.io/cloudron/syncthing-app synced 2025-09-14 17:09:07 +00:00

Compare commits

..

5 Commits

Author SHA1 Message Date
Dennis Schwerdel
37558f3b10 Updated postinstall message 2017-06-07 13:26:54 +02:00
Dennis Schwerdel
0e8b61d7d4 Only usernames work, not emails 2017-06-07 13:24:43 +02:00
Dennis Schwerdel
37b6969e24 Fixed wrong URL 2017-06-06 10:22:12 +02:00
Dennis Schwerdel
13de61d86e Fixed tests 2017-05-23 21:45:05 +02:00
Dennis Schwerdel
b5aadcde74 Caching ldap auth and fixed tests 2017-05-23 15:08:50 +02:00
5 changed files with 38 additions and 51 deletions

View File

@@ -2,26 +2,10 @@
* Initial version * Initial version
[0.1.1] [0.1.1]
* Added screenshots * Huge speedup by caching ldap
[0.2.0] [0.1.2]
* Updated to 2017-01-25T03-14-52Z * Fixed wrong URL
[0.2.1] [0.1.3]
* Updated to 2017-02-16T01-47-30Z * Updated postinstall message
* This version fixes the settings bug
[0.2.2]
* New base image 0.10.0
[0.2.3]
* Updated to 2017-03-16T21-50-32Z
[0.2.4]
* Updated to 2017-04-25T01-27-49Z
[0.2.5]
* Updated to 2017-04-29T00-40-27Z
[0.2.6]
* Updated to 2017-05-05T01-14-51Z

View File

@@ -5,7 +5,7 @@
"description": "file://DESCRIPTION.md", "description": "file://DESCRIPTION.md",
"changelog": "file://CHANGELOG", "changelog": "file://CHANGELOG",
"tagline": "Decentralized file synchronization", "tagline": "Decentralized file synchronization",
"version": "0.1.0", "version": "0.1.3",
"healthCheckPath": "/check", "healthCheckPath": "/check",
"httpPort": 8000, "httpPort": 8000,
"addons": { "addons": {
@@ -21,7 +21,7 @@
} }
}, },
"manifestVersion": 1, "manifestVersion": 1,
"website": "http://www.synthing.net", "website": "http://syncthing.net",
"contactEmail": "support@cloudron.io", "contactEmail": "support@cloudron.io",
"icon": "logo.png", "icon": "logo.png",
"tags": [ "tags": [

View File

@@ -1,5 +1,6 @@
This application integrates with Cloudron authentication. This application integrates with Cloudron authentication.
However, all Cloudron users share the same Syncthing session. However, all Cloudron users share the same Syncthing session.
Please note that only the username is accepted as login and not the email address.
Syncthing contains an internal user `admin` that is needed by Cloudron but not exposed. Syncthing contains an internal user `admin` that is needed by Cloudron but not exposed.
Please do not change the password of that account. Please do not change the password of that account.

View File

@@ -28,6 +28,9 @@ http {
proxy_buffering off; proxy_buffering off;
proxy_cache_path /tmp/proxy_cache levels=1:2 keys_zone=my_cache:10m max_size=100m inactive=60m use_temp_path=off; proxy_cache_path /tmp/proxy_cache levels=1:2 keys_zone=my_cache:10m max_size=100m inactive=60m use_temp_path=off;
proxy_cache my_cache; proxy_cache my_cache;
auth_ldap_cache_enabled on;
auth_ldap_cache_expiration_time 300000;
auth_ldap_cache_size 100;
server { server {
error_log /dev/stderr warn; error_log /dev/stderr warn;

View File

@@ -51,59 +51,58 @@ describe('Application life cycle test', function () {
var SYNC_PORT = 22001; var SYNC_PORT = 22001;
var app; var app;
function pageLoaded(callback) { function pageLoaded() {
browser.wait(until.titleMatches(/[0-9a-f]{12} \| Syncthing/), TEST_TIMEOUT).then(callback); return browser.wait(until.titleMatches(/[0-9a-f]{12} \| Syncthing/), TEST_TIMEOUT);
} }
function visible(selector, callback) { function visible(selector) {
return browser.wait(until.elementLocated(selector), TEST_TIMEOUT).then(function () { return browser.wait(until.elementLocated(selector), TEST_TIMEOUT).then(function () {
browser.wait(until.elementIsVisible(browser.findElement(selector)), TEST_TIMEOUT).then(function () { return browser.wait(until.elementIsVisible(browser.findElement(selector)), TEST_TIMEOUT);
callback();
});
}); });
} }
function loadPage(callback) { function loadPage(callback) {
browser.manage().deleteAllCookies(); browser.manage().deleteAllCookies();
browser.get('https://' + username + ':' + password + '@' + app.fqdn); browser.get('https://' + username + ':' + password + '@' + app.fqdn);
pageLoaded(function() { return pageLoaded().then(function() {
callback(); callback();
}); });
} }
function addFolder(callback) { function addFolder(callback) {
pageLoaded(function() { return pageLoaded().then(function() {
browser.findElement(by.css('[ng-click*=addFolder]')).click(); browser.findElement(by.css('[ng-click*=addFolder]')).click();
visible(by.id('folderPath'), function() { return visible(by.id('folderPath')).then(function() {
browser.findElement(by.id('folderLabel')).sendKeys('test').then(function() { return browser.findElement(by.id('folderLabel')).sendKeys('test');
browser.findElement(by.id('folderPath')).sendKeys('/app/data/test').then(function() { }).then(function() {
//Clear and re-enter the folder to avoid race with auto-completion return browser.findElement(by.id('folderPath')).sendKeys('/app/data/test');
browser.findElement(by.id('folderPath')).clear().then(function() { }).then(function() {
browser.findElement(by.id('folderPath')).sendKeys('/app/data/test').then(function() { //Clear and re-enter the folder to avoid race with auto-completion
browser.findElement(by.css('[ng-click*=saveFolder]')).click().then(function() { return browser.findElement(by.id('folderPath')).clear();
browser.wait(until.elementLocated(by.css('#folders .panel-status span[ng-switch-when=unshared]')), TEST_TIMEOUT).then(function() { }).then(function() {
callback(); return browser.findElement(by.id('folderPath')).sendKeys('/app/data/test');
}); }).then(function() {
}); return browser.findElement(by.css('[ng-click*=saveFolder]')).click();
}); }).then(function() {
}); return browser.wait(until.elementLocated(by.css('#folders .panel-status span[ng-switch-when=unshared]')), TEST_TIMEOUT);
}); }).then(function() {
}); callback();
}); });
}); });
} }
function removeFolder(callback) { function removeFolder(callback) {
pageLoaded(function() { browser.get('https://' + username + ':' + password + '@' + app.fqdn);
return pageLoaded().then(function() {
browser.findElement(by.css('#folders button')).click(); browser.findElement(by.css('#folders button')).click();
setTimeout(function() { setTimeout(function() {
browser.findElement(by.css('#folder-0 button[ng-click*=editFolder]')).click(); browser.findElement(by.css('#folder-0 button[ng-click*=editFolder]')).click();
setTimeout(function() { setTimeout(function() {
browser.findElement(by.css('[ng-click*=deleteFolder]')).click().then(function() { browser.findElement(by.css('[ng-click*=deleteFolder]')).click().then(function() {
setTimeout(callback, 500); //This needs to run for some time setTimeout(callback, 1000); //This needs to run for some time
}); });
}, 500); //No way to check for visibility of angular-js components }, 1000); //No way to check for visibility of angular-js components
}, 500); //No way to check for visibility of angular-js components }, 1000); //No way to check for visibility of angular-js components
}); });
} }
@@ -141,7 +140,7 @@ describe('Application life cycle test', function () {
it('move to different location', function () { it('move to different location', function () {
browser.manage().deleteAllCookies(); browser.manage().deleteAllCookies();
execSync('cloudron configure --location ' + LOCATION + '2', { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' }); execSync('cloudron configure --wait --location ' + LOCATION + '2', { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
var inspect = JSON.parse(execSync('cloudron inspect')); var inspect = JSON.parse(execSync('cloudron inspect'));
app = inspect.apps.filter(function (a) { return a.location === LOCATION + '2'; })[0]; app = inspect.apps.filter(function (a) { return a.location === LOCATION + '2'; })[0];
expect(app).to.be.an('object'); expect(app).to.be.an('object');