mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
(core) updates from grist-core
This commit is contained in:
@@ -8,7 +8,7 @@ import {createEmptyOrgUsageSummary, OrgUsageSummary} from 'app/common/DocUsage';
|
||||
import {Document, Workspace} from 'app/common/UserAPI';
|
||||
import {Organization} from 'app/gen-server/entity/Organization';
|
||||
import {Product} from 'app/gen-server/entity/Product';
|
||||
import {HomeDBManager, UserChange} from 'app/gen-server/lib/HomeDBManager';
|
||||
import {HomeDBManager, UserChange} from 'app/gen-server/lib/homedb/HomeDBManager';
|
||||
import {TestServer} from 'test/gen-server/apiUtils';
|
||||
import {TEAM_FREE_PLAN} from 'app/common/Features';
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import {Deps} from 'app/gen-server/ApiServer';
|
||||
import {Organization} from 'app/gen-server/entity/Organization';
|
||||
import {Product} from 'app/gen-server/entity/Product';
|
||||
import {User} from 'app/gen-server/entity/User';
|
||||
import {HomeDBManager, UserChange} from 'app/gen-server/lib/HomeDBManager';
|
||||
import {HomeDBManager, UserChange} from 'app/gen-server/lib/homedb/HomeDBManager';
|
||||
import {SendGridConfig, SendGridMail} from 'app/gen-server/lib/NotifierTypes';
|
||||
import axios, {AxiosResponse} from 'axios';
|
||||
import {delay} from 'bluebird';
|
||||
|
||||
@@ -4,7 +4,7 @@ import * as chai from 'chai';
|
||||
import {configForUser} from 'test/gen-server/testUtils';
|
||||
import * as testUtils from 'test/server/testUtils';
|
||||
|
||||
import {HomeDBManager} from 'app/gen-server/lib/HomeDBManager';
|
||||
import {HomeDBManager} from 'app/gen-server/lib/homedb/HomeDBManager';
|
||||
|
||||
import {TestServer} from 'test/gen-server/apiUtils';
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import {delay} from 'app/common/delay';
|
||||
import {HomeDBManager} from 'app/gen-server/lib/HomeDBManager';
|
||||
import {HomeDBManager} from 'app/gen-server/lib/homedb/HomeDBManager';
|
||||
import {FlexServer} from 'app/server/lib/FlexServer';
|
||||
import log from 'app/server/lib/log';
|
||||
import {main as mergedServerMain} from 'app/server/mergedServerMain';
|
||||
|
||||
@@ -11,7 +11,7 @@ import {User} from 'app/gen-server/entity/User';
|
||||
import {Workspace} from 'app/gen-server/entity/Workspace';
|
||||
import {SessionUserObj} from 'app/server/lib/BrowserSession';
|
||||
import {getDocWorkerMap} from 'app/gen-server/lib/DocWorkerMap';
|
||||
import {HomeDBManager} from 'app/gen-server/lib/HomeDBManager';
|
||||
import {HomeDBManager} from 'app/gen-server/lib/homedb/HomeDBManager';
|
||||
import * as docUtils from 'app/server/lib/docUtils';
|
||||
import {FlexServer, FlexServerOptions} from 'app/server/lib/FlexServer';
|
||||
import {main as mergedServerMain, ServerType} from 'app/server/mergedServerMain';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import {QueryRunner} from "typeorm";
|
||||
import * as roles from "app/common/roles";
|
||||
import {Organization} from 'app/gen-server/entity/Organization';
|
||||
import {HomeDBManager} from 'app/gen-server/lib/HomeDBManager';
|
||||
import {HomeDBManager} from 'app/gen-server/lib/homedb/HomeDBManager';
|
||||
import {Permissions} from 'app/gen-server/lib/Permissions';
|
||||
import {assert} from 'chai';
|
||||
import {addSeedData, createInitialDb, removeConnection, setUpDB} from 'test/gen-server/seed';
|
||||
|
||||
@@ -40,7 +40,7 @@ import {Organization} from "app/gen-server/entity/Organization";
|
||||
import {Product, PRODUCTS, synchronizeProducts, teamFreeFeatures} from "app/gen-server/entity/Product";
|
||||
import {User} from "app/gen-server/entity/User";
|
||||
import {Workspace} from "app/gen-server/entity/Workspace";
|
||||
import {EXAMPLE_WORKSPACE_NAME} from 'app/gen-server/lib/HomeDBManager';
|
||||
import {EXAMPLE_WORKSPACE_NAME} from 'app/gen-server/lib/homedb/HomeDBManager';
|
||||
import {Permissions} from 'app/gen-server/lib/Permissions';
|
||||
import {getOrCreateConnection, runMigrations, undoLastMigration, updateDb} from 'app/server/lib/dbUtils';
|
||||
import {FlexServer} from 'app/server/lib/FlexServer';
|
||||
|
||||
@@ -2,7 +2,7 @@ import {GristLoadConfig} from 'app/common/gristUrls';
|
||||
import {BillingAccount} from 'app/gen-server/entity/BillingAccount';
|
||||
import {Organization} from 'app/gen-server/entity/Organization';
|
||||
import {Product} from 'app/gen-server/entity/Product';
|
||||
import {HomeDBManager} from 'app/gen-server/lib/HomeDBManager';
|
||||
import {HomeDBManager} from 'app/gen-server/lib/homedb/HomeDBManager';
|
||||
import {INotifier} from 'app/server/lib/INotifier';
|
||||
import {AxiosRequestConfig} from "axios";
|
||||
import {delay} from 'bluebird';
|
||||
|
||||
@@ -52,10 +52,11 @@ describe('WebhookPage', function () {
|
||||
'Name',
|
||||
'Memo',
|
||||
'Event Types',
|
||||
'URL',
|
||||
'Table',
|
||||
'Ready Column',
|
||||
'Filter for changes in these columns (semicolon-separated ids)',
|
||||
'Ready Column',
|
||||
'URL',
|
||||
'Header Authorization',
|
||||
'Webhook Id',
|
||||
'Enabled',
|
||||
'Status',
|
||||
@@ -81,7 +82,7 @@ describe('WebhookPage', function () {
|
||||
await gu.waitToPass(async () => {
|
||||
assert.equal(await getField(1, 'Webhook Id'), id);
|
||||
});
|
||||
// Now other fields like name, memo and watchColIds are persisted.
|
||||
// Now other fields like name, memo, watchColIds, and Header Auth are persisted.
|
||||
await setField(1, 'Name', 'Test Webhook');
|
||||
await setField(1, 'Memo', 'Test Memo');
|
||||
await setField(1, 'Filter for changes in these columns (semicolon-separated ids)', 'A; B');
|
||||
@@ -115,6 +116,27 @@ describe('WebhookPage', function () {
|
||||
assert.lengthOf((await docApi.getRows('Table2')).A, 0);
|
||||
});
|
||||
|
||||
it('can create webhook with persistant header authorization', async function () {
|
||||
// The webhook won't work because the header auth doesn't match the api key of the current test user.
|
||||
await openWebhookPage();
|
||||
await setField(1, 'Event Types', 'add\nupdate\n');
|
||||
await setField(1, 'URL', `http://${host}/api/docs/${doc.id}/tables/Table2/records?flat=1`);
|
||||
await setField(1, 'Table', 'Table1');
|
||||
await gu.waitForServer();
|
||||
await driver.navigate().refresh();
|
||||
await waitForWebhookPage();
|
||||
await setField(1, 'Header Authorization', 'Bearer 1234');
|
||||
await gu.waitForServer();
|
||||
await driver.navigate().refresh();
|
||||
await waitForWebhookPage();
|
||||
await gu.waitToPass(async () => {
|
||||
assert.equal(await getField(1, 'Header Authorization'), 'Bearer 1234');
|
||||
});
|
||||
await gu.getDetailCell({col:'Header Authorization', rowNum: 1}).click();
|
||||
await gu.enterCell(Key.DELETE, Key.ENTER);
|
||||
await gu.waitForServer();
|
||||
});
|
||||
|
||||
it('can create two webhooks', async function () {
|
||||
await openWebhookPage();
|
||||
await setField(1, 'Event Types', 'add\nupdate\n');
|
||||
|
||||
@@ -13,7 +13,7 @@ import {normalizeEmail} from 'app/common/emails';
|
||||
import {UserProfile} from 'app/common/LoginSessionAPI';
|
||||
import {BehavioralPrompt, UserPrefs, WelcomePopup} from 'app/common/Prefs';
|
||||
import {DocWorkerAPI, UserAPI, UserAPIImpl} from 'app/common/UserAPI';
|
||||
import {HomeDBManager} from 'app/gen-server/lib/HomeDBManager';
|
||||
import {HomeDBManager} from 'app/gen-server/lib/homedb/HomeDBManager';
|
||||
import {TestingHooksClient} from 'app/server/lib/TestingHooks';
|
||||
import EventEmitter = require('events');
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
* into a file whose path is printed when server starts.
|
||||
*/
|
||||
import {encodeUrl, IGristUrlState, parseSubdomain} from 'app/common/gristUrls';
|
||||
import {HomeDBManager} from 'app/gen-server/lib/HomeDBManager';
|
||||
import {HomeDBManager} from 'app/gen-server/lib/homedb/HomeDBManager';
|
||||
import log from 'app/server/lib/log';
|
||||
import {getAppRoot} from 'app/server/lib/places';
|
||||
import {makeGristConfig} from 'app/server/lib/sendAppPage';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import {parseUrlId} from 'app/common/gristUrls';
|
||||
import {HomeDBManager} from 'app/gen-server/lib/HomeDBManager';
|
||||
import {HomeDBManager} from 'app/gen-server/lib/homedb/HomeDBManager';
|
||||
import {DocManager} from 'app/server/lib/DocManager';
|
||||
import {FlexServer} from 'app/server/lib/FlexServer';
|
||||
import axios from 'axios';
|
||||
|
||||
@@ -4625,6 +4625,7 @@ function testDocApi() {
|
||||
id: first.webhookId,
|
||||
fields: {
|
||||
url: `${serving.url}/200`,
|
||||
authorization: '',
|
||||
unsubscribeKey: first.unsubscribeKey,
|
||||
eventTypes: ['add', 'update'],
|
||||
enabled: true,
|
||||
@@ -4643,6 +4644,7 @@ function testDocApi() {
|
||||
id: second.webhookId,
|
||||
fields: {
|
||||
url: `${serving.url}/404`,
|
||||
authorization: '',
|
||||
unsubscribeKey: second.unsubscribeKey,
|
||||
eventTypes: ['add', 'update'],
|
||||
enabled: true,
|
||||
@@ -5010,6 +5012,7 @@ function testDocApi() {
|
||||
|
||||
const expectedFields = {
|
||||
url: `${serving.url}/foo`,
|
||||
authorization: '',
|
||||
eventTypes: ['add'],
|
||||
isReadyColumn: 'B',
|
||||
tableId: 'Table1',
|
||||
@@ -5079,6 +5082,8 @@ function testDocApi() {
|
||||
|
||||
await check({isReadyColumn: null}, 200);
|
||||
await check({isReadyColumn: "bar"}, 404, `Column not found "bar"`);
|
||||
|
||||
await check({authorization: 'Bearer fake-token'}, 200);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
@@ -2,7 +2,7 @@ import {ErrorOrValue, freezeError, mapGetOrSet, MapWithTTL} from 'app/common/Asy
|
||||
import {ObjMetadata, ObjSnapshot, ObjSnapshotWithMetadata} from 'app/common/DocSnapshot';
|
||||
import {SCHEMA_VERSION} from 'app/common/schema';
|
||||
import {DocWorkerMap} from 'app/gen-server/lib/DocWorkerMap';
|
||||
import {HomeDBManager} from 'app/gen-server/lib/HomeDBManager';
|
||||
import {HomeDBManager} from 'app/gen-server/lib/homedb/HomeDBManager';
|
||||
import {ActiveDoc} from 'app/server/lib/ActiveDoc';
|
||||
import {create} from 'app/server/lib/create';
|
||||
import {DocManager} from 'app/server/lib/DocManager';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {HomeDBManager} from 'app/gen-server/lib/HomeDBManager';
|
||||
import {HomeDBManager} from 'app/gen-server/lib/homedb/HomeDBManager';
|
||||
|
||||
export async function getDatabase(typeormDb?: string): Promise<HomeDBManager> {
|
||||
const origTypeormDB = process.env.TYPEORM_DATABASE;
|
||||
|
||||
Reference in New Issue
Block a user