Compare commits
1 Commits
test-cover
...
dependabot
Author | SHA1 | Date | |
---|---|---|---|
![]() |
1f93f3b262 |
@@ -5,11 +5,8 @@ BACKEND_PORT=3000
|
|||||||
WEB_PORT=3001
|
WEB_PORT=3001
|
||||||
|
|
||||||
echo "Configuring backend environment variables..."
|
echo "Configuring backend environment variables..."
|
||||||
|
|
||||||
cd packages/backend
|
cd packages/backend
|
||||||
|
|
||||||
rm -rf .env
|
rm -rf .env
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
PORT=$BACKEND_PORT
|
PORT=$BACKEND_PORT
|
||||||
WEB_APP_URL=http://localhost:$WEB_PORT
|
WEB_APP_URL=http://localhost:$WEB_PORT
|
||||||
@@ -24,34 +21,23 @@ WEBHOOK_SECRET_KEY=sample_webhook_secret_key
|
|||||||
APP_SECRET_KEY=sample_app_secret_key
|
APP_SECRET_KEY=sample_app_secret_key
|
||||||
REDIS_HOST=redis
|
REDIS_HOST=redis
|
||||||
SERVE_WEB_APP_SEPARATELY=true" >> .env
|
SERVE_WEB_APP_SEPARATELY=true" >> .env
|
||||||
|
|
||||||
echo "Installing backend dependencies..."
|
|
||||||
|
|
||||||
yarn
|
|
||||||
|
|
||||||
cd $CURRENT_DIR
|
cd $CURRENT_DIR
|
||||||
|
|
||||||
echo "Configuring web environment variables..."
|
echo "Configuring web environment variables..."
|
||||||
|
|
||||||
cd packages/web
|
cd packages/web
|
||||||
|
|
||||||
rm -rf .env
|
rm -rf .env
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
PORT=$WEB_PORT
|
PORT=$WEB_PORT
|
||||||
REACT_APP_BACKEND_URL=http://localhost:$BACKEND_PORT
|
REACT_APP_BACKEND_URL=http://localhost:$BACKEND_PORT
|
||||||
" >> .env
|
" >> .env
|
||||||
|
|
||||||
echo "Installing web dependencies..."
|
|
||||||
|
|
||||||
yarn
|
|
||||||
|
|
||||||
cd $CURRENT_DIR
|
cd $CURRENT_DIR
|
||||||
|
|
||||||
|
echo "Installing and linking dependencies..."
|
||||||
|
yarn
|
||||||
|
yarn lerna bootstrap
|
||||||
|
|
||||||
echo "Migrating database..."
|
echo "Migrating database..."
|
||||||
|
|
||||||
cd packages/backend
|
cd packages/backend
|
||||||
|
|
||||||
yarn db:migrate
|
yarn db:migrate
|
||||||
yarn db:seed:user
|
yarn db:seed:user
|
||||||
|
|
||||||
|
9
.github/workflows/backend.yml
vendored
9
.github/workflows/backend.yml
vendored
@@ -41,11 +41,8 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
node-version: 18
|
node-version: 18
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: yarn
|
run: cd packages/backend && yarn
|
||||||
working-directory: packages/backend
|
|
||||||
- name: Copy .env-example.test file to .env.test
|
- name: Copy .env-example.test file to .env.test
|
||||||
run: cp .env-example.test .env.test
|
run: cd packages/backend && cp .env-example.test .env.test
|
||||||
working-directory: packages/backend
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: yarn test:coverage
|
run: cd packages/backend && yarn test
|
||||||
working-directory: packages/backend
|
|
||||||
|
30
.github/workflows/ci.yml
vendored
30
.github/workflows/ci.yml
vendored
@@ -18,13 +18,11 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
node-version: '18'
|
node-version: '18'
|
||||||
cache: 'yarn'
|
cache: 'yarn'
|
||||||
cache-dependency-path: packages/backend/yarn.lock
|
cache-dependency-path: yarn.lock
|
||||||
- run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
|
- run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
|
||||||
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
|
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
|
||||||
- run: yarn --frozen-lockfile
|
- run: yarn --frozen-lockfile
|
||||||
working-directory: packages/backend
|
- run: cd packages/backend && yarn lint
|
||||||
- run: yarn lint
|
|
||||||
working-directory: packages/backend
|
|
||||||
- run: echo "🍏 This job's status is ${{ job.status }}."
|
- run: echo "🍏 This job's status is ${{ job.status }}."
|
||||||
start-backend-server:
|
start-backend-server:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -37,13 +35,11 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
node-version: '18'
|
node-version: '18'
|
||||||
cache: 'yarn'
|
cache: 'yarn'
|
||||||
cache-dependency-path: packages/backend/yarn.lock
|
cache-dependency-path: yarn.lock
|
||||||
- run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
|
- run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
|
||||||
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
|
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
|
||||||
- run: yarn --frozen-lockfile
|
- run: yarn --frozen-lockfile && yarn lerna bootstrap
|
||||||
working-directory: packages/backend
|
- run: cd packages/backend && yarn start
|
||||||
- run: yarn start
|
|
||||||
working-directory: packages/backend
|
|
||||||
env:
|
env:
|
||||||
ENCRYPTION_KEY: sample_encryption_key
|
ENCRYPTION_KEY: sample_encryption_key
|
||||||
WEBHOOK_SECRET_KEY: sample_webhook_secret_key
|
WEBHOOK_SECRET_KEY: sample_webhook_secret_key
|
||||||
@@ -59,13 +55,11 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
node-version: '18'
|
node-version: '18'
|
||||||
cache: 'yarn'
|
cache: 'yarn'
|
||||||
cache-dependency-path: packages/backend/yarn.lock
|
cache-dependency-path: yarn.lock
|
||||||
- run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
|
- run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
|
||||||
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
|
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
|
||||||
- run: yarn --frozen-lockfile
|
- run: yarn --frozen-lockfile && yarn lerna bootstrap
|
||||||
working-directory: packages/backend
|
- run: cd packages/backend && yarn start:worker
|
||||||
- run: yarn start:worker
|
|
||||||
working-directory: packages/backend
|
|
||||||
env:
|
env:
|
||||||
ENCRYPTION_KEY: sample_encryption_key
|
ENCRYPTION_KEY: sample_encryption_key
|
||||||
WEBHOOK_SECRET_KEY: sample_webhook_secret_key
|
WEBHOOK_SECRET_KEY: sample_webhook_secret_key
|
||||||
@@ -81,13 +75,11 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
node-version: '18'
|
node-version: '18'
|
||||||
cache: 'yarn'
|
cache: 'yarn'
|
||||||
cache-dependency-path: packages/web/yarn.lock
|
cache-dependency-path: yarn.lock
|
||||||
- run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
|
- run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
|
||||||
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
|
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
|
||||||
- run: yarn --frozen-lockfile
|
- run: yarn --frozen-lockfile && yarn lerna bootstrap
|
||||||
working-directory: packages/web
|
- run: cd packages/web && yarn build
|
||||||
- run: yarn build
|
|
||||||
working-directory: packages/web
|
|
||||||
env:
|
env:
|
||||||
CI: false
|
CI: false
|
||||||
- run: echo "🍏 This job's status is ${{ job.status }}."
|
- run: echo "🍏 This job's status is ${{ job.status }}."
|
||||||
|
14
.github/workflows/playwright.yml
vendored
14
.github/workflows/playwright.yml
vendored
@@ -58,21 +58,13 @@ jobs:
|
|||||||
- uses: actions/setup-node@v3
|
- uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
node-version: 18
|
||||||
- name: Install web dependencies
|
- name: Install dependencies
|
||||||
run: yarn
|
run: yarn && yarn lerna bootstrap
|
||||||
working-directory: ./packages/web
|
|
||||||
- name: Install backend dependencies
|
|
||||||
run: yarn
|
|
||||||
working-directory: ./packages/backend
|
|
||||||
- name: Install e2e-tests dependencies
|
|
||||||
run: yarn
|
|
||||||
working-directory: ./packages/e2e-tests
|
|
||||||
- name: Install Playwright Browsers
|
- name: Install Playwright Browsers
|
||||||
run: yarn playwright install --with-deps
|
run: yarn playwright install --with-deps
|
||||||
working-directory: ./packages/e2e-tests
|
|
||||||
- name: Build Automatisch web
|
- name: Build Automatisch web
|
||||||
run: yarn build
|
|
||||||
working-directory: ./packages/web
|
working-directory: ./packages/web
|
||||||
|
run: yarn build
|
||||||
env:
|
env:
|
||||||
# Keep this until we clean up warnings in build processes
|
# Keep this until we clean up warnings in build processes
|
||||||
CI: false
|
CI: false
|
||||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@@ -4,6 +4,7 @@ logs
|
|||||||
npm-debug.log*
|
npm-debug.log*
|
||||||
yarn-debug.log*
|
yarn-debug.log*
|
||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
|
lerna-debug.log*
|
||||||
.pnpm-debug.log*
|
.pnpm-debug.log*
|
||||||
|
|
||||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||||
|
@@ -11,12 +11,10 @@ WORKDIR /automatisch
|
|||||||
# copy the app, note .dockerignore
|
# copy the app, note .dockerignore
|
||||||
COPY . /automatisch
|
COPY . /automatisch
|
||||||
|
|
||||||
RUN cd packages/web && yarn
|
RUN yarn
|
||||||
|
|
||||||
RUN cd packages/web && yarn build
|
RUN cd packages/web && yarn build
|
||||||
|
|
||||||
RUN cd packages/backend && yarn --production
|
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
rm -rf /usr/local/share/.cache/ && \
|
rm -rf /usr/local/share/.cache/ && \
|
||||||
apk del build-dependencies
|
apk del build-dependencies
|
||||||
|
13
lerna.json
Normal file
13
lerna.json
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"packages": [
|
||||||
|
"packages/*"
|
||||||
|
],
|
||||||
|
"version": "0.10.0",
|
||||||
|
"npmClient": "yarn",
|
||||||
|
"useWorkspaces": true,
|
||||||
|
"command": {
|
||||||
|
"add": {
|
||||||
|
"exact": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
32
package.json
Normal file
32
package.json
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"name": "@automatisch/root",
|
||||||
|
"license": "See LICENSE file",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"start": "lerna run --stream --parallel --scope=@*/{web,backend} dev",
|
||||||
|
"start:web": "lerna run --stream --scope=@*/web dev",
|
||||||
|
"start:backend": "lerna run --stream --scope=@*/backend dev",
|
||||||
|
"build:docs": "cd ./packages/docs && yarn install && yarn build"
|
||||||
|
},
|
||||||
|
"workspaces": {
|
||||||
|
"packages": [
|
||||||
|
"packages/*"
|
||||||
|
],
|
||||||
|
"nohoist": [
|
||||||
|
"**/babel-loader",
|
||||||
|
"**/webpack",
|
||||||
|
"**/@automatisch/web",
|
||||||
|
"**/ajv"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"eslint": "^8.13.0",
|
||||||
|
"eslint-config-prettier": "^8.3.0",
|
||||||
|
"eslint-plugin-prettier": "^4.0.0",
|
||||||
|
"lerna": "^4.0.0",
|
||||||
|
"prettier": "^2.5.1"
|
||||||
|
},
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
}
|
||||||
|
}
|
@@ -12,7 +12,6 @@
|
|||||||
"pretest": "APP_ENV=test node ./test/setup/prepare-test-env.js",
|
"pretest": "APP_ENV=test node ./test/setup/prepare-test-env.js",
|
||||||
"test": "APP_ENV=test vitest run",
|
"test": "APP_ENV=test vitest run",
|
||||||
"test:watch": "APP_ENV=test vitest watch",
|
"test:watch": "APP_ENV=test vitest watch",
|
||||||
"test:coverage": "yarn test --coverage",
|
|
||||||
"lint": "eslint .",
|
"lint": "eslint .",
|
||||||
"db:create": "node ./bin/database/create.js",
|
"db:create": "node ./bin/database/create.js",
|
||||||
"db:seed:user": "node ./bin/database/seed-user.js",
|
"db:seed:user": "node ./bin/database/seed-user.js",
|
||||||
@@ -24,7 +23,6 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@bull-board/express": "^3.10.1",
|
"@bull-board/express": "^3.10.1",
|
||||||
"@casl/ability": "^6.5.0",
|
"@casl/ability": "^6.5.0",
|
||||||
"@faker-js/faker": "^9.2.0",
|
|
||||||
"@node-saml/passport-saml": "^4.0.4",
|
"@node-saml/passport-saml": "^4.0.4",
|
||||||
"@rudderstack/rudder-sdk-node": "^1.1.2",
|
"@rudderstack/rudder-sdk-node": "^1.1.2",
|
||||||
"@sentry/node": "^7.42.0",
|
"@sentry/node": "^7.42.0",
|
||||||
@@ -38,10 +36,7 @@
|
|||||||
"crypto-js": "^4.1.1",
|
"crypto-js": "^4.1.1",
|
||||||
"debug": "~2.6.9",
|
"debug": "~2.6.9",
|
||||||
"dotenv": "^10.0.0",
|
"dotenv": "^10.0.0",
|
||||||
"eslint": "^8.13.0",
|
"express": "~4.20.0",
|
||||||
"eslint-config-prettier": "^8.3.0",
|
|
||||||
"eslint-plugin-prettier": "^4.0.0",
|
|
||||||
"express": "~4.18.2",
|
|
||||||
"express-async-errors": "^3.1.1",
|
"express-async-errors": "^3.1.1",
|
||||||
"express-basic-auth": "^1.2.1",
|
"express-basic-auth": "^1.2.1",
|
||||||
"fast-xml-parser": "^4.0.11",
|
"fast-xml-parser": "^4.0.11",
|
||||||
@@ -66,7 +61,6 @@
|
|||||||
"pg": "^8.7.1",
|
"pg": "^8.7.1",
|
||||||
"php-serialize": "^4.0.2",
|
"php-serialize": "^4.0.2",
|
||||||
"pluralize": "^8.0.0",
|
"pluralize": "^8.0.0",
|
||||||
"prettier": "^2.5.1",
|
|
||||||
"raw-body": "^2.5.2",
|
"raw-body": "^2.5.2",
|
||||||
"showdown": "^2.1.0",
|
"showdown": "^2.1.0",
|
||||||
"uuid": "^9.0.1",
|
"uuid": "^9.0.1",
|
||||||
@@ -98,11 +92,10 @@
|
|||||||
"url": "https://github.com/automatisch/automatisch/issues"
|
"url": "https://github.com/automatisch/automatisch/issues"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@vitest/coverage-v8": "^2.1.5",
|
|
||||||
"node-gyp": "^10.1.0",
|
"node-gyp": "^10.1.0",
|
||||||
"nodemon": "^2.0.13",
|
"nodemon": "^2.0.13",
|
||||||
"supertest": "^6.3.3",
|
"supertest": "^6.3.3",
|
||||||
"vitest": "^2.1.5"
|
"vitest": "^1.1.3"
|
||||||
},
|
},
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"access": "public"
|
"access": "public"
|
||||||
|
@@ -12,7 +12,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: 'https://api.airtable.com',
|
apiBaseUrl: 'https://api.airtable.com',
|
||||||
iconUrl: '{BASE_URL}/apps/airtable/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/airtable/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/airtable/connection',
|
authDocUrl: '{DOCS_URL}/apps/airtable/connection',
|
||||||
primaryColor: '#FFBF00',
|
primaryColor: 'FFBF00',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -12,7 +12,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: 'https://cloud.appwrite.io',
|
apiBaseUrl: 'https://cloud.appwrite.io',
|
||||||
iconUrl: '{BASE_URL}/apps/appwrite/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/appwrite/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/appwrite/connection',
|
authDocUrl: '{DOCS_URL}/apps/appwrite/connection',
|
||||||
primaryColor: '#FD366E',
|
primaryColor: 'FD366E',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [setBaseUrl, addAuthHeader],
|
beforeRequest: [setBaseUrl, addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -12,7 +12,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: '',
|
apiBaseUrl: '',
|
||||||
iconUrl: '{BASE_URL}/apps/azure-openai/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/azure-openai/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/azure-openai/connection',
|
authDocUrl: '{DOCS_URL}/apps/azure-openai/connection',
|
||||||
primaryColor: '#000000',
|
primaryColor: '000000',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [setBaseUrl, addAuthHeader],
|
beforeRequest: [setBaseUrl, addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -11,7 +11,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://carbone.io',
|
baseUrl: 'https://carbone.io',
|
||||||
apiBaseUrl: 'https://api.carbone.io',
|
apiBaseUrl: 'https://api.carbone.io',
|
||||||
primaryColor: '#6f42c1',
|
primaryColor: '6f42c1',
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
actions,
|
actions,
|
||||||
|
@@ -12,8 +12,8 @@ export default defineApp({
|
|||||||
baseUrl: 'https://clickup.com',
|
baseUrl: 'https://clickup.com',
|
||||||
apiBaseUrl: 'https://api.clickup.com/api',
|
apiBaseUrl: 'https://api.clickup.com/api',
|
||||||
iconUrl: '{BASE_URL}/apps/clickup/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/clickup/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/clickup/connection',
|
authDocUrl: 'https://automatisch.io/docs/apps/clickup/connection',
|
||||||
primaryColor: '#FD71AF',
|
primaryColor: 'FD71AF',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -8,7 +8,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: '',
|
apiBaseUrl: '',
|
||||||
iconUrl: '{BASE_URL}/apps/code/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/code/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/code/connection',
|
authDocUrl: '{DOCS_URL}/apps/code/connection',
|
||||||
primaryColor: '#000000',
|
primaryColor: '000000',
|
||||||
supportsConnections: false,
|
supportsConnections: false,
|
||||||
actions,
|
actions,
|
||||||
});
|
});
|
||||||
|
@@ -9,6 +9,6 @@ export default defineApp({
|
|||||||
supportsConnections: false,
|
supportsConnections: false,
|
||||||
baseUrl: '',
|
baseUrl: '',
|
||||||
apiBaseUrl: '',
|
apiBaseUrl: '',
|
||||||
primaryColor: '#001F52',
|
primaryColor: '001F52',
|
||||||
actions,
|
actions,
|
||||||
});
|
});
|
||||||
|
@@ -9,6 +9,6 @@ export default defineApp({
|
|||||||
supportsConnections: false,
|
supportsConnections: false,
|
||||||
baseUrl: '',
|
baseUrl: '',
|
||||||
apiBaseUrl: '',
|
apiBaseUrl: '',
|
||||||
primaryColor: '#001F52',
|
primaryColor: '001F52',
|
||||||
actions,
|
actions,
|
||||||
});
|
});
|
||||||
|
@@ -11,7 +11,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://deepl.com',
|
baseUrl: 'https://deepl.com',
|
||||||
apiBaseUrl: 'https://api.deepl.com',
|
apiBaseUrl: 'https://api.deepl.com',
|
||||||
primaryColor: '#0d2d45',
|
primaryColor: '0d2d45',
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
actions,
|
actions,
|
||||||
|
@@ -9,6 +9,6 @@ export default defineApp({
|
|||||||
supportsConnections: false,
|
supportsConnections: false,
|
||||||
baseUrl: '',
|
baseUrl: '',
|
||||||
apiBaseUrl: '',
|
apiBaseUrl: '',
|
||||||
primaryColor: '#001F52',
|
primaryColor: '001F52',
|
||||||
actions,
|
actions,
|
||||||
});
|
});
|
||||||
|
@@ -14,7 +14,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://discord.com',
|
baseUrl: 'https://discord.com',
|
||||||
apiBaseUrl: 'https://discord.com/api',
|
apiBaseUrl: 'https://discord.com/api',
|
||||||
primaryColor: '#5865f2',
|
primaryColor: '5865f2',
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
dynamicData,
|
dynamicData,
|
||||||
|
@@ -11,7 +11,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: 'https://disqus.com/api',
|
apiBaseUrl: 'https://disqus.com/api',
|
||||||
iconUrl: '{BASE_URL}/apps/disqus/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/disqus/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/disqus/connection',
|
authDocUrl: '{DOCS_URL}/apps/disqus/connection',
|
||||||
primaryColor: '#2E9FFF',
|
primaryColor: '2E9FFF',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -11,7 +11,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://dropbox.com',
|
baseUrl: 'https://dropbox.com',
|
||||||
apiBaseUrl: 'https://api.dropboxapi.com',
|
apiBaseUrl: 'https://api.dropboxapi.com',
|
||||||
primaryColor: '#0061ff',
|
primaryColor: '0061ff',
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
actions,
|
actions,
|
||||||
|
@@ -9,6 +9,6 @@ export default defineApp({
|
|||||||
supportsConnections: false,
|
supportsConnections: false,
|
||||||
baseUrl: '',
|
baseUrl: '',
|
||||||
apiBaseUrl: '',
|
apiBaseUrl: '',
|
||||||
primaryColor: '#001F52',
|
primaryColor: '001F52',
|
||||||
actions,
|
actions,
|
||||||
});
|
});
|
||||||
|
@@ -10,7 +10,7 @@ export default defineApp({
|
|||||||
iconUrl: '{BASE_URL}/apps/flickr/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/flickr/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/flickr/connection',
|
authDocUrl: '{DOCS_URL}/apps/flickr/connection',
|
||||||
docUrl: 'https://automatisch.io/docs/flickr',
|
docUrl: 'https://automatisch.io/docs/flickr',
|
||||||
primaryColor: '#000000',
|
primaryColor: '000000',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://www.flickr.com/',
|
baseUrl: 'https://www.flickr.com/',
|
||||||
apiBaseUrl: 'https://www.flickr.com/services',
|
apiBaseUrl: 'https://www.flickr.com/services',
|
||||||
|
@@ -11,7 +11,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://flowers-software.com',
|
baseUrl: 'https://flowers-software.com',
|
||||||
apiBaseUrl: 'https://webapp.flowers-software.com/api',
|
apiBaseUrl: 'https://webapp.flowers-software.com/api',
|
||||||
primaryColor: '#02AFC7',
|
primaryColor: '02AFC7',
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
triggers,
|
triggers,
|
||||||
|
@@ -10,7 +10,7 @@ export default defineApp({
|
|||||||
supportsConnections: false,
|
supportsConnections: false,
|
||||||
baseUrl: '',
|
baseUrl: '',
|
||||||
apiBaseUrl: '',
|
apiBaseUrl: '',
|
||||||
primaryColor: '#001F52',
|
primaryColor: '001F52',
|
||||||
actions,
|
actions,
|
||||||
dynamicFields,
|
dynamicFields,
|
||||||
});
|
});
|
||||||
|
@@ -11,7 +11,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: '',
|
apiBaseUrl: '',
|
||||||
iconUrl: '{BASE_URL}/apps/ghost/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/ghost/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/ghost/connection',
|
authDocUrl: '{DOCS_URL}/apps/ghost/connection',
|
||||||
primaryColor: '#15171A',
|
primaryColor: '15171A',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [setBaseUrl, addAuthHeader],
|
beforeRequest: [setBaseUrl, addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -12,7 +12,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: 'https://api.github.com',
|
apiBaseUrl: 'https://api.github.com',
|
||||||
iconUrl: '{BASE_URL}/apps/github/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/github/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/github/connection',
|
authDocUrl: '{DOCS_URL}/apps/github/connection',
|
||||||
primaryColor: '#000000',
|
primaryColor: '000000',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -12,7 +12,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: 'https://gitlab.com',
|
apiBaseUrl: 'https://gitlab.com',
|
||||||
iconUrl: '{BASE_URL}/apps/gitlab/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/gitlab/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/gitlab/connection',
|
authDocUrl: '{DOCS_URL}/apps/gitlab/connection',
|
||||||
primaryColor: '#FC6D26',
|
primaryColor: 'FC6D26',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [setBaseUrl, addAuthHeader],
|
beforeRequest: [setBaseUrl, addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -11,7 +11,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: 'https://www.googleapis.com/calendar',
|
apiBaseUrl: 'https://www.googleapis.com/calendar',
|
||||||
iconUrl: '{BASE_URL}/apps/google-calendar/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/google-calendar/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/google-calendar/connection',
|
authDocUrl: '{DOCS_URL}/apps/google-calendar/connection',
|
||||||
primaryColor: '#448AFF',
|
primaryColor: '448AFF',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -11,7 +11,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: 'https://www.googleapis.com/drive',
|
apiBaseUrl: 'https://www.googleapis.com/drive',
|
||||||
iconUrl: '{BASE_URL}/apps/google-drive/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/google-drive/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/google-drive/connection',
|
authDocUrl: '{DOCS_URL}/apps/google-drive/connection',
|
||||||
primaryColor: '#1FA463',
|
primaryColor: '1FA463',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -11,7 +11,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: 'https://forms.googleapis.com',
|
apiBaseUrl: 'https://forms.googleapis.com',
|
||||||
iconUrl: '{BASE_URL}/apps/google-forms/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/google-forms/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/google-forms/connection',
|
authDocUrl: '{DOCS_URL}/apps/google-forms/connection',
|
||||||
primaryColor: '#673AB7',
|
primaryColor: '673AB7',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -13,7 +13,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: 'https://sheets.googleapis.com',
|
apiBaseUrl: 'https://sheets.googleapis.com',
|
||||||
iconUrl: '{BASE_URL}/apps/google-sheets/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/google-sheets/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/google-sheets/connection',
|
authDocUrl: '{DOCS_URL}/apps/google-sheets/connection',
|
||||||
primaryColor: '#0F9D58',
|
primaryColor: '0F9D58',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -12,7 +12,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: 'https://tasks.googleapis.com',
|
apiBaseUrl: 'https://tasks.googleapis.com',
|
||||||
iconUrl: '{BASE_URL}/apps/google-tasks/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/google-tasks/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/google-tasks/connection',
|
authDocUrl: '{DOCS_URL}/apps/google-tasks/connection',
|
||||||
primaryColor: '#0066DA',
|
primaryColor: '0066DA',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -11,7 +11,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: 'https://app.tryhelix.ai',
|
apiBaseUrl: 'https://app.tryhelix.ai',
|
||||||
iconUrl: '{BASE_URL}/apps/helix/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/helix/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/helix/connection',
|
authDocUrl: '{DOCS_URL}/apps/helix/connection',
|
||||||
primaryColor: '#000000',
|
primaryColor: '000000',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [setBaseUrl, addAuthHeader],
|
beforeRequest: [setBaseUrl, addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -9,6 +9,6 @@ export default defineApp({
|
|||||||
supportsConnections: false,
|
supportsConnections: false,
|
||||||
baseUrl: '',
|
baseUrl: '',
|
||||||
apiBaseUrl: '',
|
apiBaseUrl: '',
|
||||||
primaryColor: '#000000',
|
primaryColor: '000000',
|
||||||
actions,
|
actions,
|
||||||
});
|
});
|
||||||
|
@@ -11,7 +11,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://www.hubspot.com',
|
baseUrl: 'https://www.hubspot.com',
|
||||||
apiBaseUrl: 'https://api.hubapi.com',
|
apiBaseUrl: 'https://api.hubapi.com',
|
||||||
primaryColor: '#F95C35',
|
primaryColor: 'F95C35',
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
actions,
|
actions,
|
||||||
|
@@ -13,7 +13,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: 'https://invoicing.co/api',
|
apiBaseUrl: 'https://invoicing.co/api',
|
||||||
iconUrl: '{BASE_URL}/apps/invoice-ninja/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/invoice-ninja/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/invoice-ninja/connection',
|
authDocUrl: '{DOCS_URL}/apps/invoice-ninja/connection',
|
||||||
primaryColor: '#000000',
|
primaryColor: '000000',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [setBaseUrl, addAuthHeader],
|
beforeRequest: [setBaseUrl, addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -9,11 +9,11 @@ export default defineApp({
|
|||||||
name: 'Jotform',
|
name: 'Jotform',
|
||||||
key: 'jotform',
|
key: 'jotform',
|
||||||
iconUrl: '{BASE_URL}/apps/jotform/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/jotform/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/jotform/connection',
|
authDocUrl: 'https://automatisch.io/docs/apps/jotform/connection',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://www.jotform.com',
|
baseUrl: 'https://www.jotform.com',
|
||||||
apiBaseUrl: 'https://api.jotform.com',
|
apiBaseUrl: 'https://api.jotform.com',
|
||||||
primaryColor: '#FF6100',
|
primaryColor: 'FF6100',
|
||||||
beforeRequest: [setBaseUrl, addAuthHeader],
|
beforeRequest: [setBaseUrl, addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
triggers,
|
triggers,
|
||||||
|
@@ -12,8 +12,8 @@ export default defineApp({
|
|||||||
baseUrl: 'https://mailchimp.com',
|
baseUrl: 'https://mailchimp.com',
|
||||||
apiBaseUrl: '',
|
apiBaseUrl: '',
|
||||||
iconUrl: '{BASE_URL}/apps/mailchimp/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/mailchimp/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/mailchimp/connection',
|
authDocUrl: 'https://automatisch.io/docs/apps/mailchimp/connection',
|
||||||
primaryColor: '#000000',
|
primaryColor: '000000',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [setBaseUrl, addAuthHeader],
|
beforeRequest: [setBaseUrl, addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -7,11 +7,11 @@ export default defineApp({
|
|||||||
name: 'MailerLite',
|
name: 'MailerLite',
|
||||||
key: 'mailerlite',
|
key: 'mailerlite',
|
||||||
iconUrl: '{BASE_URL}/apps/mailerlite/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/mailerlite/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/mailerlite/connection',
|
authDocUrl: 'https://automatisch.io/docs/apps/mailerlite/connection',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://www.mailerlite.com',
|
baseUrl: 'https://www.mailerlite.com',
|
||||||
apiBaseUrl: 'https://connect.mailerlite.com/api',
|
apiBaseUrl: 'https://connect.mailerlite.com/api',
|
||||||
primaryColor: '#09C269',
|
primaryColor: '09C269',
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
triggers,
|
triggers,
|
||||||
|
@@ -13,7 +13,7 @@ export default defineApp({
|
|||||||
authDocUrl: '{DOCS_URL}/apps/mattermost/connection',
|
authDocUrl: '{DOCS_URL}/apps/mattermost/connection',
|
||||||
baseUrl: 'https://mattermost.com',
|
baseUrl: 'https://mattermost.com',
|
||||||
apiBaseUrl: '', // there is no cloud version of this app, user always need to provide address of own instance when creating connection
|
apiBaseUrl: '', // there is no cloud version of this app, user always need to provide address of own instance when creating connection
|
||||||
primaryColor: '#4a154b',
|
primaryColor: '4a154b',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [setBaseUrl, addXRequestedWithHeader, addAuthHeader],
|
beforeRequest: [setBaseUrl, addXRequestedWithHeader, addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -11,7 +11,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: 'https://api.miro.com',
|
apiBaseUrl: 'https://api.miro.com',
|
||||||
iconUrl: '{BASE_URL}/apps/miro/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/miro/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/miro/connection',
|
authDocUrl: '{DOCS_URL}/apps/miro/connection',
|
||||||
primaryColor: '#F2CA02',
|
primaryColor: 'F2CA02',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -13,7 +13,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: 'https://api.notion.com',
|
apiBaseUrl: 'https://api.notion.com',
|
||||||
iconUrl: '{BASE_URL}/apps/notion/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/notion/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/notion/connection',
|
authDocUrl: '{DOCS_URL}/apps/notion/connection',
|
||||||
primaryColor: '#000000',
|
primaryColor: '000000',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [addAuthHeader, addNotionVersionHeader],
|
beforeRequest: [addAuthHeader, addNotionVersionHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -11,7 +11,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://ntfy.sh',
|
baseUrl: 'https://ntfy.sh',
|
||||||
apiBaseUrl: 'https://ntfy.sh',
|
apiBaseUrl: 'https://ntfy.sh',
|
||||||
primaryColor: '#56bda8',
|
primaryColor: '56bda8',
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
actions,
|
actions,
|
||||||
|
@@ -10,7 +10,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://odoo.com',
|
baseUrl: 'https://odoo.com',
|
||||||
apiBaseUrl: '',
|
apiBaseUrl: '',
|
||||||
primaryColor: '#9c5789',
|
primaryColor: '9c5789',
|
||||||
auth,
|
auth,
|
||||||
actions,
|
actions,
|
||||||
});
|
});
|
||||||
|
@@ -11,7 +11,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: 'https://api.openai.com',
|
apiBaseUrl: 'https://api.openai.com',
|
||||||
iconUrl: '{BASE_URL}/apps/openai/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/openai/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/openai/connection',
|
authDocUrl: '{DOCS_URL}/apps/openai/connection',
|
||||||
primaryColor: '#000000',
|
primaryColor: '000000',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -13,7 +13,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: '',
|
apiBaseUrl: '',
|
||||||
iconUrl: '{BASE_URL}/apps/pipedrive/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/pipedrive/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/pipedrive/connection',
|
authDocUrl: '{DOCS_URL}/apps/pipedrive/connection',
|
||||||
primaryColor: '#FFFFFF',
|
primaryColor: 'FFFFFF',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [setBaseUrl, addAuthHeader],
|
beforeRequest: [setBaseUrl, addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -12,7 +12,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://placetel.de',
|
baseUrl: 'https://placetel.de',
|
||||||
apiBaseUrl: 'https://api.placetel.de',
|
apiBaseUrl: 'https://api.placetel.de',
|
||||||
primaryColor: '#069dd9',
|
primaryColor: '069dd9',
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
triggers,
|
triggers,
|
||||||
|
@@ -10,7 +10,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: '',
|
baseUrl: '',
|
||||||
apiBaseUrl: '',
|
apiBaseUrl: '',
|
||||||
primaryColor: '#336791',
|
primaryColor: '336791',
|
||||||
auth,
|
auth,
|
||||||
actions,
|
actions,
|
||||||
});
|
});
|
||||||
|
@@ -10,7 +10,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: 'https://api.pushover.net',
|
apiBaseUrl: 'https://api.pushover.net',
|
||||||
iconUrl: '{BASE_URL}/apps/pushover/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/pushover/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/pushover/connection',
|
authDocUrl: '{DOCS_URL}/apps/pushover/connection',
|
||||||
primaryColor: '#249DF1',
|
primaryColor: '249DF1',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
auth,
|
auth,
|
||||||
actions,
|
actions,
|
||||||
|
@@ -11,7 +11,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: 'https://oauth.reddit.com',
|
apiBaseUrl: 'https://oauth.reddit.com',
|
||||||
iconUrl: '{BASE_URL}/apps/reddit/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/reddit/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/reddit/connection',
|
authDocUrl: '{DOCS_URL}/apps/reddit/connection',
|
||||||
primaryColor: '#FF4500',
|
primaryColor: 'FF4500',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -11,7 +11,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://www.remove.bg',
|
baseUrl: 'https://www.remove.bg',
|
||||||
apiBaseUrl: 'https://api.remove.bg/v1.0',
|
apiBaseUrl: 'https://api.remove.bg/v1.0',
|
||||||
primaryColor: '#55636c',
|
primaryColor: '55636c',
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
actions,
|
actions,
|
||||||
|
@@ -9,6 +9,6 @@ export default defineApp({
|
|||||||
supportsConnections: false,
|
supportsConnections: false,
|
||||||
baseUrl: '',
|
baseUrl: '',
|
||||||
apiBaseUrl: '',
|
apiBaseUrl: '',
|
||||||
primaryColor: '#ff8800',
|
primaryColor: 'ff8800',
|
||||||
triggers,
|
triggers,
|
||||||
});
|
});
|
||||||
|
@@ -13,7 +13,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://salesforce.com',
|
baseUrl: 'https://salesforce.com',
|
||||||
apiBaseUrl: '',
|
apiBaseUrl: '',
|
||||||
primaryColor: '#00A1E0',
|
primaryColor: '00A1E0',
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
triggers,
|
triggers,
|
||||||
|
@@ -9,7 +9,7 @@ export default defineApp({
|
|||||||
authDocUrl: '{DOCS_URL}/apps/scheduler/connection',
|
authDocUrl: '{DOCS_URL}/apps/scheduler/connection',
|
||||||
baseUrl: '',
|
baseUrl: '',
|
||||||
apiBaseUrl: '',
|
apiBaseUrl: '',
|
||||||
primaryColor: '#0059F7',
|
primaryColor: '0059F7',
|
||||||
supportsConnections: false,
|
supportsConnections: false,
|
||||||
triggers,
|
triggers,
|
||||||
});
|
});
|
||||||
|
@@ -12,7 +12,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: '',
|
apiBaseUrl: '',
|
||||||
iconUrl: '{BASE_URL}/apps/self-hosted-llm/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/self-hosted-llm/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/self-hosted-llm/connection',
|
authDocUrl: '{DOCS_URL}/apps/self-hosted-llm/connection',
|
||||||
primaryColor: '#000000',
|
primaryColor: '000000',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [setBaseUrl, addAuthHeader],
|
beforeRequest: [setBaseUrl, addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -13,7 +13,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://signalwire.com',
|
baseUrl: 'https://signalwire.com',
|
||||||
apiBaseUrl: '',
|
apiBaseUrl: '',
|
||||||
primaryColor: '#044cf6',
|
primaryColor: '044cf6',
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
triggers,
|
triggers,
|
||||||
|
@@ -13,7 +13,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://slack.com',
|
baseUrl: 'https://slack.com',
|
||||||
apiBaseUrl: 'https://slack.com/api',
|
apiBaseUrl: 'https://slack.com/api',
|
||||||
primaryColor: '#4a154b',
|
primaryColor: '4a154b',
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
actions,
|
actions,
|
||||||
|
@@ -10,7 +10,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: '',
|
baseUrl: '',
|
||||||
apiBaseUrl: '',
|
apiBaseUrl: '',
|
||||||
primaryColor: '#2DAAE1',
|
primaryColor: '2DAAE1',
|
||||||
auth,
|
auth,
|
||||||
actions,
|
actions,
|
||||||
});
|
});
|
||||||
|
@@ -11,7 +11,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://spotify.com',
|
baseUrl: 'https://spotify.com',
|
||||||
apiBaseUrl: 'https://api.spotify.com',
|
apiBaseUrl: 'https://api.spotify.com',
|
||||||
primaryColor: '#000000',
|
primaryColor: '000000',
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
actions,
|
actions,
|
||||||
|
@@ -11,7 +11,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://www.strava.com',
|
baseUrl: 'https://www.strava.com',
|
||||||
apiBaseUrl: 'https://www.strava.com/api',
|
apiBaseUrl: 'https://www.strava.com/api',
|
||||||
primaryColor: '#fc4c01',
|
primaryColor: 'fc4c01',
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
actions,
|
actions,
|
||||||
|
@@ -11,7 +11,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://stripe.com',
|
baseUrl: 'https://stripe.com',
|
||||||
apiBaseUrl: 'https://api.stripe.com',
|
apiBaseUrl: 'https://api.stripe.com',
|
||||||
primaryColor: '#635bff',
|
primaryColor: '635bff',
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
triggers,
|
triggers,
|
||||||
|
@@ -11,7 +11,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://telegram.org',
|
baseUrl: 'https://telegram.org',
|
||||||
apiBaseUrl: 'https://api.telegram.org',
|
apiBaseUrl: 'https://api.telegram.org',
|
||||||
primaryColor: '#2AABEE',
|
primaryColor: '2AABEE',
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
actions,
|
actions,
|
||||||
|
@@ -13,7 +13,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://todoist.com',
|
baseUrl: 'https://todoist.com',
|
||||||
apiBaseUrl: 'https://api.todoist.com/rest/v2',
|
apiBaseUrl: 'https://api.todoist.com/rest/v2',
|
||||||
primaryColor: '#e44332',
|
primaryColor: 'e44332',
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
triggers,
|
triggers,
|
||||||
|
@@ -12,7 +12,7 @@ export default defineApp({
|
|||||||
iconUrl: '{BASE_URL}/apps/trello/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/trello/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/trello/connection',
|
authDocUrl: '{DOCS_URL}/apps/trello/connection',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
primaryColor: '#0079bf',
|
primaryColor: '0079bf',
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
actions,
|
actions,
|
||||||
|
@@ -13,7 +13,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://twilio.com',
|
baseUrl: 'https://twilio.com',
|
||||||
apiBaseUrl: 'https://api.twilio.com',
|
apiBaseUrl: 'https://api.twilio.com',
|
||||||
primaryColor: '#e1000f',
|
primaryColor: 'e1000f',
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
triggers,
|
triggers,
|
||||||
|
@@ -12,7 +12,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://twitter.com',
|
baseUrl: 'https://twitter.com',
|
||||||
apiBaseUrl: 'https://api.twitter.com',
|
apiBaseUrl: 'https://api.twitter.com',
|
||||||
primaryColor: '#1da1f2',
|
primaryColor: '1da1f2',
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
triggers,
|
triggers,
|
||||||
|
@@ -12,7 +12,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://typeform.com',
|
baseUrl: 'https://typeform.com',
|
||||||
apiBaseUrl: 'https://api.typeform.com',
|
apiBaseUrl: 'https://api.typeform.com',
|
||||||
primaryColor: '#262627',
|
primaryColor: '262627',
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
triggers,
|
triggers,
|
||||||
|
@@ -14,7 +14,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: '',
|
baseUrl: '',
|
||||||
apiBaseUrl: '',
|
apiBaseUrl: '',
|
||||||
primaryColor: '#39a86d',
|
primaryColor: '39a86d',
|
||||||
beforeRequest: [setBaseUrl, addAuthHeader],
|
beforeRequest: [setBaseUrl, addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
triggers,
|
triggers,
|
||||||
|
@@ -10,7 +10,7 @@ export default defineApp({
|
|||||||
supportsConnections: false,
|
supportsConnections: false,
|
||||||
baseUrl: '',
|
baseUrl: '',
|
||||||
apiBaseUrl: '',
|
apiBaseUrl: '',
|
||||||
primaryColor: '#0059F7',
|
primaryColor: '0059F7',
|
||||||
actions,
|
actions,
|
||||||
triggers,
|
triggers,
|
||||||
});
|
});
|
||||||
|
@@ -8,7 +8,7 @@ export default {
|
|||||||
key: 'instanceUrl',
|
key: 'instanceUrl',
|
||||||
label: 'WordPress instance URL',
|
label: 'WordPress instance URL',
|
||||||
type: 'string',
|
type: 'string',
|
||||||
required: true,
|
required: false,
|
||||||
readOnly: false,
|
readOnly: false,
|
||||||
value: null,
|
value: null,
|
||||||
placeholder: null,
|
placeholder: null,
|
||||||
|
@@ -13,7 +13,7 @@ export default defineApp({
|
|||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
baseUrl: 'https://wordpress.com',
|
baseUrl: 'https://wordpress.com',
|
||||||
apiBaseUrl: '',
|
apiBaseUrl: '',
|
||||||
primaryColor: '#464342',
|
primaryColor: '464342',
|
||||||
beforeRequest: [setBaseUrl, addAuthHeader],
|
beforeRequest: [setBaseUrl, addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
triggers,
|
triggers,
|
||||||
|
@@ -11,7 +11,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: 'https://api.xero.com',
|
apiBaseUrl: 'https://api.xero.com',
|
||||||
iconUrl: '{BASE_URL}/apps/xero/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/xero/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/xero/connection',
|
authDocUrl: '{DOCS_URL}/apps/xero/connection',
|
||||||
primaryColor: '#13B5EA',
|
primaryColor: '13B5EA',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -10,7 +10,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: 'https://api.ynab.com/v1',
|
apiBaseUrl: 'https://api.ynab.com/v1',
|
||||||
iconUrl: '{BASE_URL}/apps/you-need-a-budget/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/you-need-a-budget/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/you-need-a-budget/connection',
|
authDocUrl: '{DOCS_URL}/apps/you-need-a-budget/connection',
|
||||||
primaryColor: '#19223C',
|
primaryColor: '19223C',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -10,7 +10,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: 'https://www.googleapis.com/youtube',
|
apiBaseUrl: 'https://www.googleapis.com/youtube',
|
||||||
iconUrl: '{BASE_URL}/apps/youtube/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/youtube/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/youtube/connection',
|
authDocUrl: '{DOCS_URL}/apps/youtube/connection',
|
||||||
primaryColor: '#FF0000',
|
primaryColor: 'FF0000',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -12,7 +12,7 @@ export default defineApp({
|
|||||||
apiBaseUrl: '',
|
apiBaseUrl: '',
|
||||||
iconUrl: '{BASE_URL}/apps/zendesk/assets/favicon.svg',
|
iconUrl: '{BASE_URL}/apps/zendesk/assets/favicon.svg',
|
||||||
authDocUrl: '{DOCS_URL}/apps/zendesk/connection',
|
authDocUrl: '{DOCS_URL}/apps/zendesk/connection',
|
||||||
primaryColor: '#17494d',
|
primaryColor: '17494d',
|
||||||
supportsConnections: true,
|
supportsConnections: true,
|
||||||
beforeRequest: [addAuthHeader],
|
beforeRequest: [addAuthHeader],
|
||||||
auth,
|
auth,
|
||||||
|
@@ -52,7 +52,7 @@ const appConfig = {
|
|||||||
isDev: appEnv === 'development',
|
isDev: appEnv === 'development',
|
||||||
isTest: appEnv === 'test',
|
isTest: appEnv === 'test',
|
||||||
isProd: appEnv === 'production',
|
isProd: appEnv === 'production',
|
||||||
version: '0.14.0',
|
version: '0.13.1',
|
||||||
postgresDatabase: process.env.POSTGRES_DATABASE || 'automatisch_development',
|
postgresDatabase: process.env.POSTGRES_DATABASE || 'automatisch_development',
|
||||||
postgresSchema: process.env.POSTGRES_SCHEMA || 'public',
|
postgresSchema: process.env.POSTGRES_SCHEMA || 'public',
|
||||||
postgresPort: parseInt(process.env.POSTGRES_PORT || '5432'),
|
postgresPort: parseInt(process.env.POSTGRES_PORT || '5432'),
|
||||||
|
@@ -32,7 +32,7 @@ describe('POST /api/v1/access-tokens', () => {
|
|||||||
})
|
})
|
||||||
.expect(422);
|
.expect(422);
|
||||||
|
|
||||||
expect(response.body.errors.general).toStrictEqual([
|
expect(response.body.errors.general).toEqual([
|
||||||
'Incorrect email or password.',
|
'Incorrect email or password.',
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
@@ -83,7 +83,7 @@ describe('POST /api/v1/admin/apps/:appKey/auth-clients', () => {
|
|||||||
.send(appAuthClient)
|
.send(appAuthClient)
|
||||||
.expect(422);
|
.expect(422);
|
||||||
|
|
||||||
expect(response.body.meta.type).toStrictEqual('ModelValidation');
|
expect(response.body.meta.type).toEqual('ModelValidation');
|
||||||
expect(response.body.errors).toMatchObject({
|
expect(response.body.errors).toMatchObject({
|
||||||
name: ["must have required property 'name'"],
|
name: ["must have required property 'name'"],
|
||||||
formattedAuthDefaults: [
|
formattedAuthDefaults: [
|
||||||
|
@@ -10,11 +10,11 @@ export default async (request, response) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const appConfigParams = (request) => {
|
const appConfigParams = (request) => {
|
||||||
const { customConnectionAllowed, shared, disabled } = request.body;
|
const { allowCustomConnection, shared, disabled } = request.body;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
key: request.params.appKey,
|
key: request.params.appKey,
|
||||||
customConnectionAllowed,
|
allowCustomConnection,
|
||||||
shared,
|
shared,
|
||||||
disabled,
|
disabled,
|
||||||
};
|
};
|
||||||
|
@@ -23,7 +23,7 @@ describe('POST /api/v1/admin/apps/:appKey/config', () => {
|
|||||||
|
|
||||||
it('should return created app config', async () => {
|
it('should return created app config', async () => {
|
||||||
const appConfig = {
|
const appConfig = {
|
||||||
customConnectionAllowed: true,
|
allowCustomConnection: true,
|
||||||
shared: true,
|
shared: true,
|
||||||
disabled: false,
|
disabled: false,
|
||||||
};
|
};
|
||||||
@@ -44,7 +44,7 @@ describe('POST /api/v1/admin/apps/:appKey/config', () => {
|
|||||||
it('should return HTTP 422 for already existing app config', async () => {
|
it('should return HTTP 422 for already existing app config', async () => {
|
||||||
const appConfig = {
|
const appConfig = {
|
||||||
key: 'gitlab',
|
key: 'gitlab',
|
||||||
customConnectionAllowed: true,
|
allowCustomConnection: true,
|
||||||
shared: true,
|
shared: true,
|
||||||
disabled: false,
|
disabled: false,
|
||||||
};
|
};
|
||||||
@@ -59,7 +59,7 @@ describe('POST /api/v1/admin/apps/:appKey/config', () => {
|
|||||||
})
|
})
|
||||||
.expect(422);
|
.expect(422);
|
||||||
|
|
||||||
expect(response.body.meta.type).toStrictEqual('UniqueViolationError');
|
expect(response.body.meta.type).toEqual('UniqueViolationError');
|
||||||
expect(response.body.errors).toMatchObject({
|
expect(response.body.errors).toMatchObject({
|
||||||
key: ["'key' must be unique."],
|
key: ["'key' must be unique."],
|
||||||
});
|
});
|
||||||
|
@@ -32,7 +32,7 @@ describe('GET /api/v1/admin/apps/:appKey/auth-clients/:appAuthClientId', () => {
|
|||||||
.expect(200);
|
.expect(200);
|
||||||
|
|
||||||
const expectedPayload = getAppAuthClientMock(currentAppAuthClient);
|
const expectedPayload = getAppAuthClientMock(currentAppAuthClient);
|
||||||
expect(response.body).toStrictEqual(expectedPayload);
|
expect(response.body).toEqual(expectedPayload);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return not found response for not existing app auth client ID', async () => {
|
it('should return not found response for not existing app auth client ID', async () => {
|
||||||
|
@@ -39,6 +39,6 @@ describe('GET /api/v1/admin/apps/:appKey/auth-clients', () => {
|
|||||||
appAuthClientOne,
|
appAuthClientOne,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
expect(response.body).toStrictEqual(expectedPayload);
|
expect(response.body).toEqual(expectedPayload);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@@ -8,19 +8,16 @@ export default async (request, response) => {
|
|||||||
})
|
})
|
||||||
.throwIfNotFound();
|
.throwIfNotFound();
|
||||||
|
|
||||||
await appConfig.$query().patchAndFetch({
|
await appConfig.$query().patchAndFetch(appConfigParams(request));
|
||||||
...appConfigParams(request),
|
|
||||||
key: request.params.appKey,
|
|
||||||
});
|
|
||||||
|
|
||||||
renderObject(response, appConfig);
|
renderObject(response, appConfig);
|
||||||
};
|
};
|
||||||
|
|
||||||
const appConfigParams = (request) => {
|
const appConfigParams = (request) => {
|
||||||
const { customConnectionAllowed, shared, disabled } = request.body;
|
const { allowCustomConnection, shared, disabled } = request.body;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
customConnectionAllowed,
|
allowCustomConnection,
|
||||||
shared,
|
shared,
|
||||||
disabled,
|
disabled,
|
||||||
};
|
};
|
||||||
|
@@ -24,7 +24,7 @@ describe('PATCH /api/v1/admin/apps/:appKey/config', () => {
|
|||||||
it('should return updated app config', async () => {
|
it('should return updated app config', async () => {
|
||||||
const appConfig = {
|
const appConfig = {
|
||||||
key: 'gitlab',
|
key: 'gitlab',
|
||||||
customConnectionAllowed: true,
|
allowCustomConnection: true,
|
||||||
shared: true,
|
shared: true,
|
||||||
disabled: false,
|
disabled: false,
|
||||||
};
|
};
|
||||||
@@ -34,7 +34,7 @@ describe('PATCH /api/v1/admin/apps/:appKey/config', () => {
|
|||||||
const newAppConfigValues = {
|
const newAppConfigValues = {
|
||||||
shared: false,
|
shared: false,
|
||||||
disabled: true,
|
disabled: true,
|
||||||
customConnectionAllowed: false,
|
allowCustomConnection: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
const response = await request(app)
|
const response = await request(app)
|
||||||
@@ -55,7 +55,7 @@ describe('PATCH /api/v1/admin/apps/:appKey/config', () => {
|
|||||||
const appConfig = {
|
const appConfig = {
|
||||||
shared: false,
|
shared: false,
|
||||||
disabled: true,
|
disabled: true,
|
||||||
customConnectionAllowed: false,
|
allowCustomConnection: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
await request(app)
|
await request(app)
|
||||||
@@ -68,7 +68,7 @@ describe('PATCH /api/v1/admin/apps/:appKey/config', () => {
|
|||||||
it('should return HTTP 422 for invalid app config data', async () => {
|
it('should return HTTP 422 for invalid app config data', async () => {
|
||||||
const appConfig = {
|
const appConfig = {
|
||||||
key: 'gitlab',
|
key: 'gitlab',
|
||||||
customConnectionAllowed: true,
|
allowCustomConnection: true,
|
||||||
shared: true,
|
shared: true,
|
||||||
disabled: false,
|
disabled: false,
|
||||||
};
|
};
|
||||||
@@ -83,7 +83,7 @@ describe('PATCH /api/v1/admin/apps/:appKey/config', () => {
|
|||||||
})
|
})
|
||||||
.expect(422);
|
.expect(422);
|
||||||
|
|
||||||
expect(response.body.meta.type).toStrictEqual('ModelValidation');
|
expect(response.body.meta.type).toEqual('ModelValidation');
|
||||||
expect(response.body.errors).toMatchObject({
|
expect(response.body.errors).toMatchObject({
|
||||||
disabled: ['must be boolean'],
|
disabled: ['must be boolean'],
|
||||||
});
|
});
|
||||||
|
@@ -1,28 +1,23 @@
|
|||||||
|
import pick from 'lodash/pick.js';
|
||||||
import { renderObject } from '../../../../../helpers/renderer.js';
|
import { renderObject } from '../../../../../helpers/renderer.js';
|
||||||
import Config from '../../../../../models/config.js';
|
import Config from '../../../../../models/config.js';
|
||||||
|
|
||||||
export default async (request, response) => {
|
export default async (request, response) => {
|
||||||
const config = await Config.query().updateFirstOrInsert(
|
const config = configParams(request);
|
||||||
configParams(request)
|
|
||||||
);
|
await Config.batchUpdate(config);
|
||||||
|
|
||||||
renderObject(response, config);
|
renderObject(response, config);
|
||||||
};
|
};
|
||||||
|
|
||||||
const configParams = (request) => {
|
const configParams = (request) => {
|
||||||
const {
|
const updatableConfigurationKeys = [
|
||||||
logoSvgData,
|
'logo.svgData',
|
||||||
palettePrimaryDark,
|
'palette.primary.dark',
|
||||||
palettePrimaryLight,
|
'palette.primary.light',
|
||||||
palettePrimaryMain,
|
'palette.primary.main',
|
||||||
title,
|
'title',
|
||||||
} = request.body;
|
];
|
||||||
|
|
||||||
return {
|
return pick(request.body, updatableConfigurationKeys);
|
||||||
logoSvgData,
|
|
||||||
palettePrimaryDark,
|
|
||||||
palettePrimaryLight,
|
|
||||||
palettePrimaryMain,
|
|
||||||
title,
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
@@ -5,7 +5,7 @@ import app from '../../../../../app.js';
|
|||||||
import createAuthTokenByUserId from '../../../../../helpers/create-auth-token-by-user-id.js';
|
import createAuthTokenByUserId from '../../../../../helpers/create-auth-token-by-user-id.js';
|
||||||
import { createUser } from '../../../../../../test/factories/user.js';
|
import { createUser } from '../../../../../../test/factories/user.js';
|
||||||
import { createRole } from '../../../../../../test/factories/role.js';
|
import { createRole } from '../../../../../../test/factories/role.js';
|
||||||
import { updateConfig } from '../../../../../../test/factories/config.js';
|
import { createBulkConfig } from '../../../../../../test/factories/config.js';
|
||||||
import * as license from '../../../../../helpers/license.ee.js';
|
import * as license from '../../../../../helpers/license.ee.js';
|
||||||
|
|
||||||
describe('PATCH /api/v1/admin/config', () => {
|
describe('PATCH /api/v1/admin/config', () => {
|
||||||
@@ -30,13 +30,13 @@ describe('PATCH /api/v1/admin/config', () => {
|
|||||||
|
|
||||||
const appConfig = {
|
const appConfig = {
|
||||||
title,
|
title,
|
||||||
palettePrimaryMain: palettePrimaryMain,
|
'palette.primary.main': palettePrimaryMain,
|
||||||
palettePrimaryDark: palettePrimaryDark,
|
'palette.primary.dark': palettePrimaryDark,
|
||||||
palettePrimaryLight: palettePrimaryLight,
|
'palette.primary.light': palettePrimaryLight,
|
||||||
logoSvgData: logoSvgData,
|
'logo.svgData': logoSvgData,
|
||||||
};
|
};
|
||||||
|
|
||||||
await updateConfig(appConfig);
|
await createBulkConfig(appConfig);
|
||||||
|
|
||||||
const newTitle = 'Updated title';
|
const newTitle = 'Updated title';
|
||||||
|
|
||||||
@@ -50,8 +50,8 @@ describe('PATCH /api/v1/admin/config', () => {
|
|||||||
.send(newConfigValues)
|
.send(newConfigValues)
|
||||||
.expect(200);
|
.expect(200);
|
||||||
|
|
||||||
expect(response.body.data.title).toStrictEqual(newTitle);
|
expect(response.body.data.title).toEqual(newTitle);
|
||||||
expect(response.body.meta.type).toStrictEqual('Config');
|
expect(response.body.meta.type).toEqual('Object');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return created config for unexisting config', async () => {
|
it('should return created config for unexisting config', async () => {
|
||||||
@@ -67,8 +67,8 @@ describe('PATCH /api/v1/admin/config', () => {
|
|||||||
.send(newConfigValues)
|
.send(newConfigValues)
|
||||||
.expect(200);
|
.expect(200);
|
||||||
|
|
||||||
expect(response.body.data.title).toStrictEqual(newTitle);
|
expect(response.body.data.title).toEqual(newTitle);
|
||||||
expect(response.body.meta.type).toStrictEqual('Config');
|
expect(response.body.meta.type).toEqual('Object');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return null for deleted config entry', async () => {
|
it('should return null for deleted config entry', async () => {
|
||||||
@@ -83,6 +83,6 @@ describe('PATCH /api/v1/admin/config', () => {
|
|||||||
.expect(200);
|
.expect(200);
|
||||||
|
|
||||||
expect(response.body.data.title).toBeNull();
|
expect(response.body.data.title).toBeNull();
|
||||||
expect(response.body.meta.type).toStrictEqual('Config');
|
expect(response.body.meta.type).toEqual('Object');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@@ -27,6 +27,6 @@ describe('GET /api/v1/admin/permissions/catalog', () => {
|
|||||||
|
|
||||||
const expectedPayload = await getPermissionsCatalogMock();
|
const expectedPayload = await getPermissionsCatalogMock();
|
||||||
|
|
||||||
expect(response.body).toStrictEqual(expectedPayload);
|
expect(response.body).toEqual(expectedPayload);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@@ -58,7 +58,7 @@ describe('POST /api/v1/admin/roles', () => {
|
|||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(response.body).toStrictEqual(expectedPayload);
|
expect(response.body).toEqual(expectedPayload);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return unprocessable entity response for invalid role data', async () => {
|
it('should return unprocessable entity response for invalid role data', async () => {
|
||||||
|
@@ -92,4 +92,21 @@ describe('DELETE /api/v1/admin/roles/:roleId', () => {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should not delete role and permissions on unsuccessful response', async () => {
|
||||||
|
const role = await createRole();
|
||||||
|
const permission = await createPermission({ roleId: role.id });
|
||||||
|
await createUser({ roleId: role.id });
|
||||||
|
|
||||||
|
await request(app)
|
||||||
|
.delete(`/api/v1/admin/roles/${role.id}`)
|
||||||
|
.set('Authorization', token)
|
||||||
|
.expect(422);
|
||||||
|
|
||||||
|
const refetchedRole = await role.$query();
|
||||||
|
const refetchedPermission = await permission.$query();
|
||||||
|
|
||||||
|
expect(refetchedRole).toStrictEqual(role);
|
||||||
|
expect(refetchedPermission).toStrictEqual(permission);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@@ -34,7 +34,7 @@ describe('GET /api/v1/admin/roles/:roleId', () => {
|
|||||||
permissionTwo,
|
permissionTwo,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
expect(response.body).toStrictEqual(expectedPayload);
|
expect(response.body).toEqual(expectedPayload);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return not found response for not existing role UUID', async () => {
|
it('should return not found response for not existing role UUID', async () => {
|
||||||
|
@@ -28,6 +28,6 @@ describe('GET /api/v1/admin/roles', () => {
|
|||||||
|
|
||||||
const expectedPayload = await getRolesMock([roleOne, roleTwo]);
|
const expectedPayload = await getRolesMock([roleOne, roleTwo]);
|
||||||
|
|
||||||
expect(response.body).toStrictEqual(expectedPayload);
|
expect(response.body).toEqual(expectedPayload);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@@ -46,6 +46,6 @@ describe('GET /api/v1/admin/saml-auth-providers/:samlAuthProviderId/role-mapping
|
|||||||
roleMappingTwo,
|
roleMappingTwo,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
expect(response.body).toStrictEqual(expectedPayload);
|
expect(response.body).toEqual(expectedPayload);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@@ -30,7 +30,7 @@ describe('GET /api/v1/admin/saml-auth-provider/:samlAuthProviderId', () => {
|
|||||||
|
|
||||||
const expectedPayload = await getSamlAuthProviderMock(samlAuthProvider);
|
const expectedPayload = await getSamlAuthProviderMock(samlAuthProvider);
|
||||||
|
|
||||||
expect(response.body).toStrictEqual(expectedPayload);
|
expect(response.body).toEqual(expectedPayload);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return not found response for not existing saml auth provider UUID', async () => {
|
it('should return not found response for not existing saml auth provider UUID', async () => {
|
||||||
|
@@ -34,6 +34,6 @@ describe('GET /api/v1/admin/saml-auth-providers', () => {
|
|||||||
samlAuthProviderOne,
|
samlAuthProviderOne,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
expect(response.body).toStrictEqual(expectedPayload);
|
expect(response.body).toEqual(expectedPayload);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@@ -30,7 +30,7 @@ describe('GET /api/v1/admin/users/:userId', () => {
|
|||||||
.expect(200);
|
.expect(200);
|
||||||
|
|
||||||
const expectedPayload = getUserMock(anotherUser, anotherUserRole);
|
const expectedPayload = getUserMock(anotherUser, anotherUserRole);
|
||||||
expect(response.body).toStrictEqual(expectedPayload);
|
expect(response.body).toEqual(expectedPayload);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return not found response for not existing user UUID', async () => {
|
it('should return not found response for not existing user UUID', async () => {
|
||||||
|
@@ -40,6 +40,6 @@ describe('GET /api/v1/admin/users', () => {
|
|||||||
[anotherUserRole, currentUserRole]
|
[anotherUserRole, currentUserRole]
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(response.body).toStrictEqual(expectedResponsePayload);
|
expect(response.body).toEqual(expectedResponsePayload);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@@ -61,8 +61,7 @@ describe('PATCH /api/v1/admin/users/:userId', () => {
|
|||||||
.send(anotherUserUpdatedData)
|
.send(anotherUserUpdatedData)
|
||||||
.expect(422);
|
.expect(422);
|
||||||
|
|
||||||
expect(response.body.meta.type).toStrictEqual('ModelValidation');
|
expect(response.body.meta.type).toEqual('ModelValidation');
|
||||||
|
|
||||||
expect(response.body.errors).toMatchObject({
|
expect(response.body.errors).toMatchObject({
|
||||||
email: ['must be string'],
|
email: ['must be string'],
|
||||||
fullName: ['must be string'],
|
fullName: ['must be string'],
|
||||||
|
@@ -155,7 +155,7 @@ describe('POST /api/v1/apps/:appKey/connections', () => {
|
|||||||
await createAppConfig({
|
await createAppConfig({
|
||||||
key: 'gitlab',
|
key: 'gitlab',
|
||||||
disabled: false,
|
disabled: false,
|
||||||
customConnectionAllowed: true,
|
allowCustomConnection: true,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -218,7 +218,7 @@ describe('POST /api/v1/apps/:appKey/connections', () => {
|
|||||||
await createAppConfig({
|
await createAppConfig({
|
||||||
key: 'gitlab',
|
key: 'gitlab',
|
||||||
disabled: false,
|
disabled: false,
|
||||||
customConnectionAllowed: false,
|
allowCustomConnection: false,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user