Skip to content

Commit 9ac8229

Browse files
authored
Adjust create database token API helper (#1621)
Fixes OPS-3027.
1 parent 0a6e0b8 commit 9ac8229

File tree

3 files changed

+29
-21
lines changed

3 files changed

+29
-21
lines changed
Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { createAxiosHeaders, makeOpenOpsTablesPost } from '@openops/common';
22

3+
const TOKEN_NAME_PREFIX = 'Project_';
4+
35
export type DatabaseToken = {
46
id: number;
57
name: string;
@@ -14,25 +16,24 @@ export type DatabaseToken = {
1416
};
1517

1618
export type CreateDatabaseTokenParams = {
17-
name: string;
19+
token: string;
20+
projectId: string;
1821
workspaceId: number;
19-
systemToken: string;
2022
};
2123

22-
export async function createDatabaseToken(
24+
export async function createProjectDatabaseToken(
2325
params: CreateDatabaseTokenParams,
2426
): Promise<DatabaseToken> {
2527
const payload = {
26-
name: params.name,
28+
name: `${TOKEN_NAME_PREFIX}${params.projectId}`,
2729
workspace: params.workspaceId,
2830
};
2931

30-
const headers = createAxiosHeaders(params.systemToken);
31-
const response = await makeOpenOpsTablesPost<DatabaseToken>(
32+
const headers = createAxiosHeaders(params.token);
33+
34+
return makeOpenOpsTablesPost<DatabaseToken>(
3235
'api/database/tokens/',
3336
payload,
3437
headers,
3538
);
36-
37-
return response;
3839
}

packages/server/api/src/app/openops-tables/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { addUserToWorkspace } from './add-user-workspace';
22
import { createDatabase } from './create-database';
3-
import { createDatabaseToken } from './create-database-token';
3+
import { createProjectDatabaseToken } from './create-database-token';
44
import { createMcpEndpoint } from './create-mcp-endpoint';
55
import { createTable } from './create-table';
66
import { createUser } from './create-user';
@@ -17,7 +17,7 @@ export const openopsTables = {
1717
addUserToWorkspace,
1818
listDatabases,
1919
createDatabase,
20-
createDatabaseToken,
20+
createProjectDatabaseToken,
2121
createTable,
2222
listWorkspaces,
2323
createWorkspace,
Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,31 @@
11
const openopsCommonMock = {
22
...jest.requireActual('@openops/common'),
33
makeOpenOpsTablesPost: jest.fn(),
4+
createAxiosHeaders: jest.fn(),
45
};
56
jest.mock('@openops/common', () => openopsCommonMock);
67

78
import { AxiosHeaders } from 'axios';
8-
import { createDatabaseToken } from '../../../src/app/openops-tables/create-database-token';
9+
import { createProjectDatabaseToken } from '../../../src/app/openops-tables/create-database-token';
910

10-
describe('createDatabaseToken', () => {
11+
describe('createProjectDatabaseToken', () => {
1112
beforeEach(() => {
1213
jest.clearAllMocks();
1314
});
1415

1516
it('should return the created token on successful creation', async () => {
1617
const params = {
17-
name: 'Test Token',
18+
token: 'test_system_token',
19+
projectId: 'test-project-123',
1820
workspaceId: 1,
19-
systemToken: 'test_system_token',
2021
};
22+
const mockHeaders = new AxiosHeaders({
23+
'Content-Type': 'application/json',
24+
Authorization: `JWT ${params.token}`,
25+
});
2126
const mockTokenResponse = {
2227
id: 1,
23-
name: 'Test Token',
28+
name: 'Project_test-project-123',
2429
workspace: 1,
2530
key: 'test_database_token_key',
2631
permissions: {
@@ -31,23 +36,25 @@ describe('createDatabaseToken', () => {
3136
},
3237
};
3338

39+
openopsCommonMock.createAxiosHeaders.mockReturnValue(mockHeaders);
3440
openopsCommonMock.makeOpenOpsTablesPost.mockResolvedValue(
3541
mockTokenResponse,
3642
);
3743

38-
const result = await createDatabaseToken(params);
44+
const result = await createProjectDatabaseToken(params);
3945

4046
expect(result).toEqual(mockTokenResponse);
47+
expect(openopsCommonMock.createAxiosHeaders).toHaveBeenCalledTimes(1);
48+
expect(openopsCommonMock.createAxiosHeaders).toHaveBeenCalledWith(
49+
params.token,
50+
);
4151
expect(openopsCommonMock.makeOpenOpsTablesPost).toHaveBeenCalledWith(
4252
'api/database/tokens/',
4353
{
44-
name: params.name,
54+
name: 'Project_test-project-123',
4555
workspace: params.workspaceId,
4656
},
47-
new AxiosHeaders({
48-
'Content-Type': 'application/json',
49-
Authorization: `JWT ${params.systemToken}`,
50-
}),
57+
mockHeaders,
5158
);
5259
});
5360
});

0 commit comments

Comments
 (0)