Skip to content

Commit 925465e

Browse files
committed
Make fields and rows openops tables helpers use database token authentication helpers
1 parent a70a5dc commit 925465e

6 files changed

Lines changed: 32 additions & 26 deletions

File tree

packages/openops/src/lib/openops-tables/applications-service.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ import { Application } from './types';
33

44
export const OPENOPS_DEFAULT_DATABASE_NAME = 'OpenOps Dataset';
55

6+
/*
7+
@deprecated The tablesDatabaseId is now stored in the project.
8+
This function will be removed once flag ENABLE_TABLES_DATABASE_TOKEN is removed.
9+
*/
610
export async function getDefaultDatabaseId(
711
token: string,
812
databaseName = OPENOPS_DEFAULT_DATABASE_NAME, // TODO: remove this when all environments are migrated

packages/openops/src/lib/openops-tables/fields.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,21 @@ import {
33
createAxiosHeaders,
44
makeOpenOpsTablesGet,
55
} from '../openops-tables/requests-helpers';
6+
import { TokenOrResolver } from './context-helpers';
67

78
export async function getFields(
89
tableId: number,
9-
token: string,
10+
contextOrToken: TokenOrResolver,
1011
userFieldNames = true,
1112
axiosRetryConfig?: IAxiosRetryConfig,
1213
): Promise<OpenOpsField[]> {
13-
const authenticationHeader = createAxiosHeaders(token);
14+
const authenticationHeader = createAxiosHeaders(contextOrToken);
1415
const fields = await makeOpenOpsTablesGet<any[]>(
1516
`api/database/fields/table/${tableId}/?user_field_names=${userFieldNames}`,
1617
authenticationHeader,
1718
axiosRetryConfig,
1819
);
19-
20-
return fields.flatMap((item) => item);
20+
return fields.flat();
2121
}
2222

2323
export interface OpenOpsField {

packages/openops/src/lib/openops-tables/requests-helpers.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,7 @@ import { AxiosError, AxiosHeaders, AxiosResponse, Method } from 'axios';
44
import { IAxiosRetryConfig } from 'axios-retry';
55
import { StatusCodes } from 'http-status-codes';
66
import { makeHttpRequest } from '../axios-wrapper';
7-
8-
export function createAxiosHeaders(token: string): AxiosHeaders {
9-
return new AxiosHeaders({
10-
'Content-Type': 'application/json',
11-
Authorization: `JWT ${token}`,
12-
});
13-
}
7+
export { createAxiosHeaders } from './create-axios-headers';
148

159
const RETRY_DELAY_MS = 1000;
1610

packages/openops/src/lib/openops-tables/rows.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
makeOpenOpsTablesPost,
1414
makeOpenOpsTablesPut,
1515
} from '../openops-tables/requests-helpers';
16+
import { TokenOrResolver } from './context-helpers';
1617

1718
export interface OpenOpsRow {
1819
id: number;
@@ -21,7 +22,7 @@ export interface OpenOpsRow {
2122

2223
export interface RowParams {
2324
tableId: number;
24-
token: string;
25+
token: TokenOrResolver;
2526
}
2627

2728
export interface GetRowsParams extends RowParams {
@@ -207,22 +208,22 @@ export async function deleteRow(deleteRowParams: DeleteRowParams) {
207208
}
208209

209210
export async function getRowByPrimaryKeyValue(
210-
token: string,
211+
tokenOrResolver: TokenOrResolver,
211212
tableId: number,
212213
primaryKeyFieldValue: string,
213214
primaryKeyFieldName: any,
214215
primaryKeyFieldType: string,
215216
) {
216217
const rows = await getRows({
217218
tableId: tableId,
218-
token: token,
219219
filters: [
220220
{
221221
fieldName: primaryKeyFieldName,
222222
value: primaryKeyFieldValue,
223223
type: getEqualityFilterType(primaryKeyFieldType),
224224
},
225225
],
226+
token: tokenOrResolver,
226227
});
227228

228229
if (rows.length > 1) {

packages/openops/test/openops-tables/request-helpers.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ jest.mock('../../src/lib/axios-wrapper', () => ({
55

66
const systemMock = {
77
get: jest.fn(),
8+
getNumber: jest.fn(),
9+
getBoolean: jest.fn(),
10+
getOrThrow: jest.fn(),
811
};
912

1013
jest.mock('@openops/server-shared', () => ({
@@ -30,6 +33,9 @@ describe('axios request', () => {
3033
beforeEach(() => {
3134
jest.clearAllMocks();
3235
systemMock.get.mockReturnValue('https://mockapi.com');
36+
systemMock.getNumber.mockReturnValue(60);
37+
systemMock.getBoolean.mockReturnValue(false);
38+
systemMock.getOrThrow.mockReturnValue('mock-value');
3339
});
3440

3541
const header = new AxiosHeaders({ some: 'header' });

packages/openops/test/openops-tables/rows.test.ts

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,19 @@ const makeOpenOpsTablesPostMock = jest.fn();
44
const makeOpenOpsTablesDeleteMock = jest.fn();
55
const createAxiosHeadersMock = jest.fn();
66

7-
const actualRequestsHelpers = jest.requireActual(
8-
'../../src/lib/openops-tables/requests-helpers',
9-
);
10-
11-
jest.mock('../../src/lib/openops-tables/requests-helpers', () => ({
12-
...actualRequestsHelpers,
13-
makeOpenOpsTablesGet: makeOpenOpsTablesGetMock,
14-
makeOpenOpsTablesPatch: makeOpenOpsTablesPatchMock,
15-
makeOpenOpsTablesPost: makeOpenOpsTablesPostMock,
16-
makeOpenOpsTablesDelete: makeOpenOpsTablesDeleteMock,
17-
createAxiosHeaders: createAxiosHeadersMock,
18-
}));
7+
jest.mock('../../src/lib/openops-tables/requests-helpers', () => {
8+
const actualRequestsHelpers = jest.requireActual(
9+
'../../src/lib/openops-tables/requests-helpers',
10+
);
11+
return {
12+
...actualRequestsHelpers,
13+
makeOpenOpsTablesGet: makeOpenOpsTablesGetMock,
14+
makeOpenOpsTablesPatch: makeOpenOpsTablesPatchMock,
15+
makeOpenOpsTablesPost: makeOpenOpsTablesPostMock,
16+
makeOpenOpsTablesDelete: makeOpenOpsTablesDeleteMock,
17+
createAxiosHeaders: createAxiosHeadersMock,
18+
};
19+
});
1920

2021
jest.mock('@openops/server-shared', () => ({
2122
...jest.requireActual('@openops/server-shared'),

0 commit comments

Comments
 (0)