databag/app/sdk/__tests__/service.tests.ts
2025-03-07 16:38:35 -08:00

61 lines
1.6 KiB
TypeScript

import { DatabagSDK } from '../src/index';
import { Member } from '../src/types';
export type AccountEntity = {
accountId: number;
guid: string;
handle: string;
name: string;
description: string;
location: string;
imageSet: boolean;
revision: number;
seal?: string;
version: string;
node: string;
storageUsed: number;
disabled: boolean;
};
function getAccount(id: number) {
return {
accountId: id,
guid: `account.guid.${id}`,
handle: `account.handle.${id}`,
name: 'test.name',
description: 'test.description',
location: 'test.location',
imageSet: false,
revision: 1,
version: 'test.version',
node: 'test.node',
storageUsed: 1,
disabled: false,
}
}
jest.mock('../src/net/fetchUtil', () => {
const fn = jest.fn().mockImplementation((url: string, options: { method: string, body: string }) => {
if (url === 'http://test.node/admin/access?token=test.token') {
return Promise.resolve({ state: 200, json: () => ('admin.token') });
} else if (url === 'http://test.node/admin/accounts?token=admin.token') {
const accounts = [ getAccount(1), getAccount(2), getAccount(3) ];
return Promise.resolve({ state: 200, json: () => (accounts) });
}
});
return {
fetchWithTimeout: fn,
checkResponse: () => {},
}
});
test('allocates service correctly', async () => {
let status: string = '';
const sdk = new DatabagSDK({ channelTypes: []});
const service = await sdk.configure('test.node', false, 'test.token', null);
const members = await service.getMembers();
expect(members.length === 3).toBe(true);
});