mirror of
https://git.cloudron.io/cloudron/syncthing-app
synced 2025-09-13 00:15:14 +00:00
Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
67383ed187 | ||
|
4e734b3323 | ||
|
83578811b0 | ||
|
6da37e33bd | ||
|
e700619300 | ||
|
f7bb7204b6 |
14
CHANGELOG
14
CHANGELOG
@@ -398,3 +398,17 @@
|
||||
* #8968: Error for Windows invalid file names should indicate the invalid character or name part
|
||||
* #8983: Integrate govulncheck
|
||||
|
||||
[1.23.0]
|
||||
* Update Syncthing to 1.24.0
|
||||
* [Full changelog](https://github.com/syncthing/syncthing/releases/tag/v1.25.0)
|
||||
* #8274: Usage report transport type is wrong for QUIC
|
||||
* #8482: Discovery server keeps duplicate entries
|
||||
* #9019: Web GUI loses config changes when doing multiple modifications (e.g. on slow hardware or remotely)
|
||||
* #9112: panic: counter cannot decrease in value
|
||||
* #9123: Hashed passwords via API are hashed again
|
||||
* #141: Use multiple simultaneous TCP connections
|
||||
* #5607: Move footer links to header
|
||||
|
||||
[1.24.0]
|
||||
* Update base image to 4.2.0
|
||||
|
||||
|
@@ -5,8 +5,8 @@
|
||||
"description": "file://DESCRIPTION.md",
|
||||
"changelog": "file://CHANGELOG",
|
||||
"tagline": "Decentralized file synchronization",
|
||||
"version": "1.22.7",
|
||||
"upstreamVersion": "1.23.7",
|
||||
"version": "1.24.0",
|
||||
"upstreamVersion": "1.25.0",
|
||||
"healthCheckPath": "/healthcheck",
|
||||
"httpPort": 8000,
|
||||
"addons": {
|
||||
|
@@ -1,9 +1,9 @@
|
||||
FROM cloudron/base:4.0.0@sha256:31b195ed0662bdb06a6e8a5ddbedb6f191ce92e8bee04c03fb02dd4e9d0286df
|
||||
FROM cloudron/base:4.2.0@sha256:46da2fffb36353ef714f97ae8e962bd2c212ca091108d768ba473078319a47f4
|
||||
|
||||
RUN mkdir -p /app/code
|
||||
WORKDIR /app/code
|
||||
|
||||
ARG VERSION=1.23.7
|
||||
ARG VERSION=1.25.0
|
||||
|
||||
RUN wget https://github.com/syncthing/syncthing/releases/download/v${VERSION}/syncthing-linux-amd64-v${VERSION}.tar.gz -O - | tar -xz -C /app/code --strip-components=1
|
||||
|
||||
|
60
test/package-lock.json
generated
60
test/package-lock.json
generated
@@ -9,11 +9,11 @@
|
||||
"version": "1.0.0",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"chromedriver": "^115.0.1",
|
||||
"chromedriver": "^117.0.3",
|
||||
"expect.js": "^0.3.1",
|
||||
"mocha": "^10.2.0",
|
||||
"selenium-webdriver": "^4.11.1",
|
||||
"superagent": "^8.0.9"
|
||||
"selenium-webdriver": "^4.14.0",
|
||||
"superagent": "^8.1.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@testim/chrome-version": {
|
||||
@@ -236,9 +236,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/chromedriver": {
|
||||
"version": "115.0.1",
|
||||
"resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-115.0.1.tgz",
|
||||
"integrity": "sha512-faE6WvIhXfhnoZ3nAxUXYzeDCKy612oPwpkUp0mVkA7fZPg2JHSUiYOQhUYgzHQgGvDWD5Fy2+M2xV55GKHBVQ==",
|
||||
"version": "117.0.3",
|
||||
"resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-117.0.3.tgz",
|
||||
"integrity": "sha512-c2rk2eGK5zZFBJMdviUlAJfQEBuPNIKfal4+rTFVYAmrWbMPYAqPozB+rIkc1lDP/Ryw44lPiqKglrI01ILhTQ==",
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"@testim/chrome-version": "^1.1.3",
|
||||
@@ -253,7 +253,7 @@
|
||||
"chromedriver": "bin/chromedriver"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16"
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/cliui": {
|
||||
@@ -1166,13 +1166,13 @@
|
||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
||||
},
|
||||
"node_modules/selenium-webdriver": {
|
||||
"version": "4.11.1",
|
||||
"resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.11.1.tgz",
|
||||
"integrity": "sha512-bvrnr3UZlLScErOmn8gV6cqc+1PYDHn0575CxUR2U14fMWt7OKxSy0lAThhZq4sq4d1HqP8ebz11oiHSlAQ2WA==",
|
||||
"version": "4.14.0",
|
||||
"resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.14.0.tgz",
|
||||
"integrity": "sha512-637rs8anqMKHbWxcBZpyG3Gcs+rBUtAUiqk0O/knUqH4Paj3MFUZrz88/pVGOLNryEVy2z92fZomT8p1ENl1gA==",
|
||||
"dependencies": {
|
||||
"jszip": "^3.10.1",
|
||||
"tmp": "^0.2.1",
|
||||
"ws": ">=8.13.0"
|
||||
"ws": ">=8.14.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 14.20.0"
|
||||
@@ -1262,9 +1262,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/superagent": {
|
||||
"version": "8.0.9",
|
||||
"resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.9.tgz",
|
||||
"integrity": "sha512-4C7Bh5pyHTvU33KpZgwrNKh/VQnvgtCSqPRfJAUdmrtSYePVzVg4E4OzsrbkhJj9O7SO6Bnv75K/F8XVZT8YHA==",
|
||||
"version": "8.1.2",
|
||||
"resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz",
|
||||
"integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==",
|
||||
"dependencies": {
|
||||
"component-emitter": "^1.3.0",
|
||||
"cookiejar": "^2.1.4",
|
||||
@@ -1374,9 +1374,9 @@
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
||||
},
|
||||
"node_modules/ws": {
|
||||
"version": "8.13.0",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
|
||||
"integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
|
||||
"version": "8.14.2",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz",
|
||||
"integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==",
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
},
|
||||
@@ -1633,9 +1633,9 @@
|
||||
}
|
||||
},
|
||||
"chromedriver": {
|
||||
"version": "115.0.1",
|
||||
"resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-115.0.1.tgz",
|
||||
"integrity": "sha512-faE6WvIhXfhnoZ3nAxUXYzeDCKy612oPwpkUp0mVkA7fZPg2JHSUiYOQhUYgzHQgGvDWD5Fy2+M2xV55GKHBVQ==",
|
||||
"version": "117.0.3",
|
||||
"resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-117.0.3.tgz",
|
||||
"integrity": "sha512-c2rk2eGK5zZFBJMdviUlAJfQEBuPNIKfal4+rTFVYAmrWbMPYAqPozB+rIkc1lDP/Ryw44lPiqKglrI01ILhTQ==",
|
||||
"requires": {
|
||||
"@testim/chrome-version": "^1.1.3",
|
||||
"axios": "^1.4.0",
|
||||
@@ -2300,13 +2300,13 @@
|
||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
||||
},
|
||||
"selenium-webdriver": {
|
||||
"version": "4.11.1",
|
||||
"resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.11.1.tgz",
|
||||
"integrity": "sha512-bvrnr3UZlLScErOmn8gV6cqc+1PYDHn0575CxUR2U14fMWt7OKxSy0lAThhZq4sq4d1HqP8ebz11oiHSlAQ2WA==",
|
||||
"version": "4.14.0",
|
||||
"resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.14.0.tgz",
|
||||
"integrity": "sha512-637rs8anqMKHbWxcBZpyG3Gcs+rBUtAUiqk0O/knUqH4Paj3MFUZrz88/pVGOLNryEVy2z92fZomT8p1ENl1gA==",
|
||||
"requires": {
|
||||
"jszip": "^3.10.1",
|
||||
"tmp": "^0.2.1",
|
||||
"ws": ">=8.13.0"
|
||||
"ws": ">=8.14.2"
|
||||
}
|
||||
},
|
||||
"semver": {
|
||||
@@ -2372,9 +2372,9 @@
|
||||
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="
|
||||
},
|
||||
"superagent": {
|
||||
"version": "8.0.9",
|
||||
"resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.9.tgz",
|
||||
"integrity": "sha512-4C7Bh5pyHTvU33KpZgwrNKh/VQnvgtCSqPRfJAUdmrtSYePVzVg4E4OzsrbkhJj9O7SO6Bnv75K/F8XVZT8YHA==",
|
||||
"version": "8.1.2",
|
||||
"resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz",
|
||||
"integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==",
|
||||
"requires": {
|
||||
"component-emitter": "^1.3.0",
|
||||
"cookiejar": "^2.1.4",
|
||||
@@ -2457,9 +2457,9 @@
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
||||
},
|
||||
"ws": {
|
||||
"version": "8.13.0",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
|
||||
"integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
|
||||
"version": "8.14.2",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz",
|
||||
"integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==",
|
||||
"requires": {}
|
||||
},
|
||||
"y18n": {
|
||||
|
@@ -9,10 +9,10 @@
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"chromedriver": "^115.0.1",
|
||||
"chromedriver": "^117.0.3",
|
||||
"expect.js": "^0.3.1",
|
||||
"mocha": "^10.2.0",
|
||||
"selenium-webdriver": "^4.11.1",
|
||||
"superagent": "^8.0.9"
|
||||
"selenium-webdriver": "^4.14.0",
|
||||
"superagent": "^8.1.2"
|
||||
}
|
||||
}
|
||||
|
48
test/test.js
48
test/test.js
@@ -14,21 +14,21 @@ const execSync = require('child_process').execSync,
|
||||
expect = require('expect.js'),
|
||||
superagent = require('superagent'),
|
||||
path = require('path'),
|
||||
timers = require('timers/promises'),
|
||||
{ Builder, By, Key, until } = require('selenium-webdriver'),
|
||||
{ Options } = require('selenium-webdriver/chrome');
|
||||
|
||||
describe('Application life cycle test', function () {
|
||||
this.timeout(0);
|
||||
|
||||
var LOCATION = 'test';
|
||||
var TEST_TIMEOUT = 30000;
|
||||
var FOLDER = 'xmf'; // keep this small. long folder names fail in automation, not sure why
|
||||
var SYNC_PORT = 22001;
|
||||
var EXEC_ARGS = { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' };
|
||||
const LOCATION = 'test';
|
||||
const TEST_TIMEOUT = 30000;
|
||||
const FOLDER = 'xmf'; // keep this small. long folder names fail in automation, not sure why
|
||||
const SYNC_PORT = 22001;
|
||||
const EXEC_ARGS = { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' };
|
||||
|
||||
var browser;
|
||||
var app;
|
||||
var username = 'admin', password = 'changeme';
|
||||
let browser, app;
|
||||
const username = 'admin', password = 'changeme';
|
||||
|
||||
before(function () {
|
||||
browser = new Builder().forBrowser('chrome').setChromeOptions(new Options().windowSize({ width: 1280, height: 1024 })).build();
|
||||
@@ -39,7 +39,7 @@ describe('Application life cycle test', function () {
|
||||
});
|
||||
|
||||
function getAppInfo() {
|
||||
var inspect = JSON.parse(execSync('cloudron inspect'));
|
||||
const inspect = JSON.parse(execSync('cloudron inspect'));
|
||||
app = inspect.apps.filter(function (a) { return a.location.indexOf(LOCATION) === 0; })[0];
|
||||
expect(app).to.be.an('object');
|
||||
}
|
||||
@@ -134,40 +134,38 @@ describe('Application life cycle test', function () {
|
||||
});
|
||||
}
|
||||
|
||||
function wait (done) {
|
||||
setTimeout(done, 10000);
|
||||
}
|
||||
|
||||
xit('build app', function () { execSync('cloudron build', EXEC_ARGS); });
|
||||
|
||||
it('install app', function () { execSync('cloudron install --port-bindings SYNC_PORT=' + SYNC_PORT + ' --location ' + LOCATION, EXEC_ARGS); });
|
||||
it('install app', async function () {
|
||||
execSync('cloudron install --port-bindings SYNC_PORT=' + SYNC_PORT + ' --location ' + LOCATION, EXEC_ARGS);
|
||||
await timers.setTimeout(30000);
|
||||
});
|
||||
it('can get app information', getAppInfo);
|
||||
|
||||
it('wait', wait);
|
||||
|
||||
it('fails with invalid password', invalidPassword);
|
||||
it('can load page', loadPage);
|
||||
it('can add folder', addFolder);
|
||||
|
||||
it('backup app', function () { execSync('cloudron backup create --app ' + app.id, EXEC_ARGS); });
|
||||
it('backup app', async function () {
|
||||
execSync('cloudron backup create --app ' + app.id, EXEC_ARGS);
|
||||
await timers.setTimeout(30000);
|
||||
});
|
||||
it('restore app', async function () {
|
||||
await browser.get('about:blank');
|
||||
execSync('cloudron restore --app ' + app.id, EXEC_ARGS);
|
||||
await timers.setTimeout(30000);
|
||||
});
|
||||
|
||||
it('wait', wait);
|
||||
|
||||
it('can load page', loadPage);
|
||||
it('can check folder', checkFolder);
|
||||
|
||||
it('move to different location', async function () {
|
||||
await browser.get('about:blank');
|
||||
execSync(`cloudron configure --location ${LOCATION}2 --app ${app.id}`, EXEC_ARGS);
|
||||
await timers.setTimeout(30000);
|
||||
});
|
||||
it('can get app information', getAppInfo);
|
||||
|
||||
it('wait', wait);
|
||||
|
||||
it('can load page', loadPage);
|
||||
it('can check folder', checkFolder);
|
||||
it('can remove folder', removeFolder);
|
||||
@@ -178,16 +176,18 @@ describe('Application life cycle test', function () {
|
||||
});
|
||||
|
||||
// test update
|
||||
it('can install app', function () { execSync('cloudron install --port-bindings SYNC_PORT=' + SYNC_PORT + ' --appstore-id net.syncthing.cloudronapp2 --location ' + LOCATION, EXEC_ARGS); });
|
||||
it('can install app', async function () {
|
||||
execSync('cloudron install --port-bindings SYNC_PORT=' + SYNC_PORT + ' --appstore-id net.syncthing.cloudronapp2 --location ' + LOCATION, EXEC_ARGS);
|
||||
await timers.setTimeout(30000);
|
||||
});
|
||||
it('can get app information', getAppInfo);
|
||||
it('wait', wait);
|
||||
it('can load page', loadPage);
|
||||
it('can add folder', addFolder);
|
||||
it('can update', async function () {
|
||||
await browser.get('about:blank');
|
||||
execSync('cloudron update --app ' + LOCATION, EXEC_ARGS);
|
||||
await timers.setTimeout(30000);
|
||||
});
|
||||
it('wait', wait);
|
||||
it('can check folder', checkFolder);
|
||||
|
||||
it('uninstall app', async function () {
|
||||
|
Reference in New Issue
Block a user